OneTrace.ru Справка

Подключение сайта

Трекер — небольшой скрипт на страницах вашего сайта. Он считает просмотры страниц, передаёт действия покупателей (просмотр товара, корзина, заказ, вход), показывает виджеты рекомендаций и подписывает посетителей на Web Push. Всё для подключения собрано в разделе Коммуникации → Сайт.

Раздел открыт всем участникам проекта. Менять домены сайта и виджеты могут «Владелец», «Администратор» и «Менеджер». Создать ключ для сайта могут «Владелец» и «Администратор».

Установка трекера

На вкладке Установка три шага.

1. Код на каждую страницу

  1. В поле Ключ записи выберите ключ. Если ключей нет, нажмите Создать ключ для сайта.
  2. Скопируйте код кнопкой копирования.
  3. Вставьте его в <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. Домены сайта

Чтобы чужой сайт не мог отправлять события от имени вашего проекта и забирать рекомендации, укажите домены своего сайта:

  1. Введите домен, например shop.example.com, и нажмите +. Домен из таблицы проверки добавляется кнопкой Добавить в домены.
  2. Нажмите Сохранить.

Домен разрешает и свои поддомены: 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 показывает, подключён ли канал и сколько подписок. Если канала нет, создайте его по ссылке Открыть интеграции — ключи появятся сами (см. Интеграции и каналы). Затем:

  1. Файл service worker. Создайте в корне сайта файл cdp-sw.js с одной строкой:
    importScripts('https://cdp.onetrace.ru/tracker/cdp-sw.js');
    
  2. Кнопка подписки. Добавьте на сайт кнопку, которая по клику вызывает cdp.push.subscribe(). Браузер спрашивает разрешение на уведомления только по действию посетителя.

Уведомления работают только на сайте с HTTPS. Подписка привязывается к профилю посетителя.

Вкладка «Web Push»: статус канала и код для сайта

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. По ней агент сам вставит код установки, события товаров, вход и выход, виджеты и подписку на уведомления.

  1. Если ключей записи несколько, выберите нужный.
  2. Скачайте файл и положите его в проект сайта: для Claude Code — .claude/skills/<имя скилла>/SKILL.md, для других агентов с поддержкой Agent Skills — в их папку скиллов, например .agents/skills/<имя скилла>/SKILL.md. Точный путь показан на вкладке. Можно и просто приложить файл к сообщению агенту.
  3. Напишите агенту задачу — пример текста есть на вкладке.

Вкладка «ИИ-агент»: скилл с данными проекта для ИИ-агента

Секретные ключи в скилл не попадают. Если вы поменяли события в настройках рекомендаций или добавили виджеты, скачайте скилл заново.

Что важно знать

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