Подключение сайта
Трекер — небольшой скрипт на страницах вашего сайта. Он считает просмотры страниц, передаёт действия покупателей (просмотр товара, корзина, заказ, вход), показывает виджеты рекомендаций и подписывает посетителей на Web Push. Всё для подключения собрано в разделе Коммуникации → Сайт.
Раздел открыт всем участникам проекта. Менять домены сайта и виджеты могут «Владелец», «Администратор» и «Менеджер». Создать ключ для сайта могут «Владелец» и «Администратор».
Установка трекера
На вкладке Установка три шага.
1. Код на каждую страницу
- В поле Ключ записи выберите ключ. Если ключей нет, нажмите Создать ключ для сайта.
- Скопируйте код кнопкой копирования.
- Вставьте его в
<head>всех страниц сайта — обычно в общий шаблон шапки.
Код выглядит так (адрес и ключ в разделе уже подставлены):
<script>
!function(w,d,u){var c=w.cdp=w.cdp||[];if(c.version)return;['init','page','track','identify','alias','reset','setLanguage','widgets','renderRecommendations'].forEach(function(m){c[m]=c[m]||function(){c.push([m].concat([].slice.call(arguments)))}});var s=d.createElement('script');s.async=1;s.src=u;d.head.appendChild(s)}(window,document,'https://cdp.onetrace.ru/tracker/cdp.js');
cdp.init('cdp_wk_…', { host: 'https://cdp.onetrace.ru' });
cdp.page();
</script>
Скрипт загружается асинхронно и не замедляет сайт. Вызовы cdp.track() можно делать сразу после кода: они подождут загрузки трекера. Каждому браузеру трекер выдаёт постоянный идентификатор посетителя (cookie cdp_aid на год) и сохраняет UTM-метки визита.
Ключ записи виден в коде страниц — это нормально: он умеет только отправлять события. Если в списке ключи недоступны, они созданы до появления раздела, и показать их целиком нельзя. Создайте новый ключ для сайта или возьмите ключ из кода, который уже стоит на сайте.
![]()
2. Проверка
После установки откройте любую страницу сайта. Через несколько секунд в блоке Проверка появится таблица: Домен, События за 7 дней и время последнего события. Пока событий нет, раздел показывает «Ждём первые события с сайта». Проверка обновляется сама каждые 10 секунд, пока раздел открыт.
3. Домены сайта
Чтобы чужой сайт не мог отправлять события от имени вашего проекта и забирать рекомендации, укажите домены своего сайта:
- Введите домен, например
shop.example.com, и нажмите +. Домен из таблицы проверки добавляется кнопкой Добавить в домены. - Нажмите Сохранить.
Домен разрешает и свои поддомены: shop.ru пропускает www.shop.ru. Пока список пуст, ключ работает на любом сайте («Ограничения нет»). Запросы с вашего сервера ограничение не затрагивает. Можно указать до 20 доменов.
Одностраничные сайты (SPA и PWA)
В приложениях на React, Vue, Angular и других страница не перезагружается, поэтому просмотры нужно отправлять самим: вызывайте cdp.page() после каждой смены экрана, но не дважды для первой загрузки — её уже отправил код установки. Если хук роутера срабатывает и при первой загрузке (afterEach во Vue Router, useEffect в React), уберите cdp.page() из кода установки — пример есть на вкладке Установка.
// после каждой смены экрана, когда роутер уже поменял адрес
cdp.page();
// экран без своего адреса или адрес ещё не поменялся
cdp.page('Корзина', { path: '/cart', title: 'Корзина' });
Если у экрана нет своего адреса (модальное окно, шаг оформления заказа, PWA без адресов) или роутер меняет адрес позже, передайте страницу явно: path или url (можно относительный) и заголовок. Такая страница попадёт и в просмотр, и в контекст следующих событий — например, добавление в корзину будет привязано к экрану корзины, — пока не будет вызван следующий cdp.page(). Источником перехода для второго и следующих экранов трекер считает предыдущий экран, а UTM-метки визита запоминает до закрытия вкладки.
Вход и выход покупателя
После входа или регистрации вызовите cdp.identify() с id пользователя в вашей системе — история посещений свяжется с профилем покупателя:
cdp.identify('user-42', { email: 'anna@example.com' });
Передавайте User ID только вошедшим пользователям и не используйте общие значения вроде 0 или guest: профили с одинаковым User ID склеятся. При выходе из аккаунта вызовите cdp.reset(), чтобы следующий человек за этим компьютером получил новый идентификатор.
Какие идентификаторы нужны каждому каналу и как они попадают в профиль, показывает таблица Идентификация покупателя на вкладке События товаров: для email-рассылок — email, для SMS, WhatsApp и Viber по номеру — phone в международном формате, для ботов Telegram и Viber — привязка чата по ссылке, которую создаёт ваш сервер. Передавайте всё, что знаете о покупателе: чем больше идентификаторов, тем больше каналов доступно.
Язык покупателя
Трекер передаёт язык браузера, и он записывается в профиль покупателя (трейт language), пока язык не задан явно. По этому языку цепочки и рассылки выбирают языковую версию шаблона. Языки проекта видны в блоке Язык покупателя на вкладке Установка.
Если на сайте есть переключатель языка, сообщайте о выборе посетителя — он запомнится и запишется в профиль:
cdp.setLanguage('de');
Другой источник языка задаётся при инициализации: language: 'page' — атрибут lang у <html>, код языка — один язык для всего сайта, false — не передавать язык. Язык, известный в вашей системе, можно передать трейтом в cdp.identify('user-42', { language: 'de' }).
События товаров
Вкладка События товаров показывает готовые вызовы для пяти действий: Просмотр товара, Добавление в корзину, Заказ, Избранное и Вход и регистрация. Имена событий и свойство с id товара (по умолчанию product_id) берутся из настроек раздела Рекомендации. Если там события не выбраны, вы увидите предупреждение, а в примерах будут имена по умолчанию: product_viewed, add_to_cart, order_completed.
Пример заказа — все товары передаются в массиве products:
cdp.track('order_completed', {
order_id: 'A-1001',
amount: 9980,
products: [{ product_id: 'SKU-1', quantity: 2, price: 4990 }],
});
Избранное — необязательный шаг: события add_to_wishlist и remove_from_wishlist нужны цепочкам, которые сообщают о снижении цены и поступлении товаров из избранного. Вызовите cdp.addToWishlist('SKU-1') и cdp.removeFromWishlist('SKU-1') или обойдитесь без кода: добавьте кнопке атрибут data-cdp-wishlist="SKU-1" (добавить) или data-cdp-wishlist-remove="SKU-1" (убрать) — трекер сам отправит событие по нажатию.
У каждого шага есть отметка: сколько событий пришло за 7 дней и когда последнее, или «Нет событий за 7 дней». Так видно, какие вызовы ещё не работают. Id товара должен совпадать с id в товарном каталоге.
![]()
Заказы и регистрации надёжнее отправлять с вашего сервера — см. Интеграция с сервера.
Ссылки приглашений
Если в программе лояльности включены приглашения, у каждого участника есть ссылка на ваш сайт с параметром ?ref=КОД. Трекер сам замечает такой параметр: сохраняет код на 30 дней в cookie cdp_ref и один раз отправляет событие referral_visited. Друг засчитывается, когда зарегистрируется или войдёт на сайт. Плагины магазинов передают код из cookie при регистрации, свой сайт — через API.
Web Push
Вкладка Web Push показывает, подключён ли канал и сколько подписок. Если канала нет, создайте его по ссылке Открыть интеграции — ключи появятся сами (см. Интеграции и каналы). Затем:
- Файл service worker. Создайте в корне сайта файл
cdp-sw.jsс одной строкой:importScripts('https://cdp.onetrace.ru/tracker/cdp-sw.js'); - Кнопка подписки. Добавьте на сайт кнопку, которая по клику вызывает
cdp.push.subscribe(). Браузер спрашивает разрешение на уведомления только по действию посетителя.
Уведомления работают только на сайте с HTTPS. Подписка привязывается к профилю посетителя.
![]()
CMS и Google Tag Manager
На вкладке CMS и GTM — пошаговые инструкции для своего сайта, Google Tag Manager, 1С-Битрикс, Tilda, WordPress и WooCommerce, InSales: куда вставить код установки, события и виджеты.
Например, в Google Tag Manager создайте тег «Пользовательский HTML» с кодом установки и триггером «Все страницы». Для событий товаров нужны отдельные теги с вызовом cdp.track и триггерами по событиям dataLayer (view_item, add_to_cart, purchase). После публикации контейнера проверьте на вкладке Установка, что события пошли.
Подключение с помощью ИИ-агента
Если сайт делает разработчик с ИИ-агентом (Claude Code, Codex, Cursor и другими), дайте агенту готовый скилл. На вкладке ИИ-агент нажмите Скачать SKILL.md. В файле — инструкция для агента на английском языке с данными вашего проекта: адрес OneTrace.ru, выбранный ключ записи, имена событий товаров, виджеты и состояние Web Push. По ней агент сам вставит код установки, события товаров, вход и выход, виджеты и подписку на уведомления.
- Если ключей записи несколько, выберите нужный.
- Скачайте файл и положите его в проект сайта: для Claude Code —
.claude/skills/<имя скилла>/SKILL.md, для других агентов с поддержкой Agent Skills — в их папку скиллов, например.agents/skills/<имя скилла>/SKILL.md. Точный путь показан на вкладке. Можно и просто приложить файл к сообщению агенту. - Напишите агенту задачу — пример текста есть на вкладке.

Секретные ключи в скилл не попадают. Если вы поменяли события в настройках рекомендаций или добавили виджеты, скачайте скилл заново.
Что важно знать
- Поисковые роботы, превью ссылок в мессенджерах, сервисы проверки сайтов и автоматизированные браузеры не учитываются: трекер не отправляет их события и не ставит им cookie, а виджеты рекомендаций показывает. Чтобы учитывать всех посетителей, добавьте в код установки параметр:
cdp.init('…', { host: '…', ignoreBots: false }). - Трекер копит события и отправляет их пачками. Если сеть пропала, события сохраняются в браузере и уходят позже.
- Все события сайта видны в разделе События в реальном времени.
- Виджеты рекомендаций настраиваются на вкладке Виджеты — см. Виджеты рекомендаций на сайте.