Возможности и способы установки
Вы можете отслеживать поведение пользователя на вашем сайте, записывать его активность, действия с товарами, заказы и прочее. По полученным данным сегментировать базу по покупательской или пользовательской активности, что позволит проводить маркетинговые кампании намного эффективнее.
С подключенным трекингом вам доступны такие функции, как:
- Сегментация по действиям пользователя на сайте
- Сегментация по покупательской активности
- Отслеживание выручки с рассылок
- Отслеживание выручки, количества заказов и среднего чека для каждого пользователя
Всего существует два способа установки трекинга - скрипт или API. Вы можете выбрать тот из двух, который будет проще в установке для вашей команды и соответствовать вашим техническим возможностям.
Ниже описаны инструкции по установке для каждого из вариантов.
Для подсчета выручки с помощью трекинга обязательно укажите сайт, на котором будет настроено отслеживание, в «Настройках аккаунта» в enKod
Отслеживание действий (трекинг) по API
Все методы для отслеживания действий пользователя доступны в нашей API-документации в разделе "Tracking".
Обратите внимание, что методы будут работать только в том случае, если для вашего аккаунта подключен модуль Трекинг. Если вы хотите использовать этот функционал - обратитесь к своему персональному менеджеру или на [email protected].
Особенности использования API:
- Для каждого нового посетителя нужно создать сессию
- При каждом новом посещении нужно вызывать метод «Старт сессии» (только для тех посетителей, кому уже присвоили сессию)
- Все остальные методы должны вызываться с сессией в заголовках
- Не рекомендуется передавать покупку без канала коммуникации (емейл, телефон)
При настройке отслеживания по API мы не можем автоматически определить, есть ли контакт в базе (по аналогии со скриптом и параметром eksubsemail). Но вы можете настроить эту же логику самостоятельно:
- Используйте в емейл-сообщениях URL параметр eksubsemail, в значении которого передайте емейл получателя с помощью тега персонализации {{subscriber_email}}
- При открытии сайта всегда должен вызываться API-метод /v1/sessions/
- После перехода контакта на сайт вызовите метод /v1/subscribe/, в котором передайте:
- X-Session-Id контакта из п. 2
- source = 'url_param'
- email (fields) из {{subscriber_email}}
Обратите внимание, что при настройке отслеживания по API условия сегментов для всплывающих окон по корзине и посещениям страниц не будут работать. Чтобы пользоваться этими условиями необходимо передавать события изменения корзины с помощью метода JS-скрипта.
Отслеживание действий (трекинг) с помощью JS скрипта
Скрипт будет загружаться только один раз при первой загрузке сайта, он не оказывает влияния на скорость переключение между страницами. Все методы вызываются в кеше браузера в фоновом режиме и незаметны для пользователя.
Поставьте скрипт на сайт перед закрывающим тегом </body>.
<script type="text/javascript"> var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '//cdn.enkod.ru/script/enpop.min.js'; script.async = true; var first = document.getElementsByTagName('script')[0]; first.parentNode.insertBefore(script, first); var enKodBox = window.enKodBox = window.enKodBox || {}; var ekEvents = window.ekEvents || []; enKodBox['token'] = 'СИСТЕМНОЕ_ИМЯ'; </script>
Системное имя аккаунта задается при создании аккаунта в платформе и не равно отправляющему домену или адресу сайта. Вы можете узнать системное имя у вашего персонального менеджера.
Обращение к скрипту будет выглядеть так:
<script type="text/javascript"> ekEvents.push('название действия', { param1: 'и', param2: 'объект', param3: 'с параметрами' }) </script>
Первый аргумент – это название действия, а второй аргумент – это хэшмап с параметрами.
Ниже описан список событий, которые можно отслеживать.
Открытие страницы с товаром
<script type="text/javascript"> ekEvents.push('productOpen', { productId: 'артикул товара', param: 'value' }); </script>
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
После обязательного параметра можно указать через запятую любые параметры товара, которые вы хотите передать в сервис. Например, категория товара и тд.
Открытие страницы с категорией товаров
<script type="text/javascript"> ekEvents.push('categoryOpen', { categoryId: 'идентификатор категории', categoryUrl: 'URL страницы категории' }); </script>
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
categoryId | Int | Идентификатор категории товаров | Обязательно |
categoryUrl | String | Ссылка на страницу категории на сайте | Необязательно |
Добавление товара в корзину
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
count | Int | Количество товара. По умолчанию значение 1. Можно присвоить любое значение | Необязательно |
Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:
- добавление одного товара в корзину
<script type="text/javascript"> ekEvents.push('productAdd', {productId: 'артикул товара'}); </script>
- добавление товара в корзину с дополнительными полями
<script type="text/javascript"> ekEvents.push('productAdd', {productId: 'артикул товара', category: '1', group: 'some-group', param: 'value'}); </script>
- добавление нескольких одинаковых товаров одним вызовом метода
<script type="text/javascript"> ekEvents.push('productAdd', {productId: 'артикул товара', count: 2}); </script>
- добавление нескольких разных товаров одним вызовом метода (передается массив с товарами)
<script type="text/javascript"> ekEvents.push('productAdd', [{productId: 'артикул товара'}, {productId: 'другой артикул'}]); </script>
Удаление товара из корзины
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
count | Int | Количество товара. По умолчанию значение 1. Можно присвоить любое значение | Необязательно |
Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:
- удаление одного товара из корзины
<script type="text/javascript"> ekEvents.push('productRemove', {productId: 'артикул товара'}); </script>
- удаление нескольких одинаковых товаров одним вызовом метода
<script type="text/javascript"> ekEvents.push('productRemove', {productId: 'артикул товара', count: 2}); </script>
- удаление нескольких разных товаров одним вызовом метода (передается массив с товарами)
<script type="text/javascript"> ekEvents.push('productRemove', [{productId: 'артикул товара'}, {productId: 'другой артикул'}]); </script>
Добавление товара в избранное
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:
- добавление одного товара в избранное
<script type="text/javascript"> ekEvents.push('productLike', {productId: 'артикул товара'}); </script>
- добавление товара в избранное с дополнительными полями
<script type="text/javascript"> ekEvents.push('productLike', {productId: 'артикул товара', category: '1', group: 'some-group', param: 'value'}); </script>
- добавление нескольких разных товаров одним вызовом метода (передается массив с товарами)
<script type="text/javascript"> ekEvents.push('productLike', [{productId: 'артикул товара'}, {productId: 'другой артикул'}]); </script>
Удаление товара из избранного
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:
- удаление одного товара из списка избранного
<script type="text/javascript"> ekEvents.push('productDislike', {productId: 'артикул товара'}); </script>
- удаление нескольких разных товаров одним вызовом метода (передается массив с товарами)
<script type="text/javascript"> ekEvents.push('productDislike', [{productId: 'артикул товара'}, {productId: 'другой артикул'}]); </script>
Добавление товара в сравнение
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
<script type="text/javascript"> ekEvents.push('productComparison', {product: {productId: 'артикул товара'}}); </script>
Удаление товара из сравнения
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
<script type="text/javascript"> ekEvents.push('productComparisonRemove', {product: {productId: 'артикул товара'}}); </script>
Очистка сравнения
<script type="text/javascript"> ekEvents.push('productComparisonClean'); </script>
Заказ
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
orderId | String | ID заказа. Если не передаётся, то генерируется автоматически | Обязательно |
items | [{}] | Маccив с товарами | Обязательно |
sum | Float/Int | Сумма заказа | Обязательно для вывода выручки в интерфейсе |
productId | String | Артикул товара | Обязательно для модуля рекомендаций |
price | Float/Int | Цена товара | Обязательно для модуля рекомендаций |
count | Int | Количество каждого из товаров в заказе | Обязательно для модуля рекомендаций |
<script type="text/javascript"> ekEvents.push('productBuy',{orderId: 'id', sum: 1000, items: [{productId: 'Артикул товара 1', count: 5, price: 10}, {productId: 'Артикул товара 2', count: 1, price: 50}]}) </script>
- передача дополнительных параметров заказа
<script type="text/javascript"> ekEvents.push('productBuy',{orderId: 'id', items: [{productId: 'Артикул товара', count: 5}], finalPrice: '100', param: 'value'}) </script>
Если вы хотите при оформлении заказа собирать информацию о контакте и записать сам заказ в enKod, то используйте последовательный вызов методов подписки и оформления заказа:
<script type="text/javascript"> async function subAndOrder() { await ekEvents.push('subscribe', { groups: [1, "sysname"], fields: { email: '[email protected]', lastName: '', phone: '70000000000' } }) await ekEvents.push('productBuy', { orderId: '84781', items: [{ productId: '5y347p92', size: '92', count: 1, price: 230 }], sum: 230 }) } subAndOrder() </script>
Возврат заказа
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
orderId | String | ID заказа, возврат которого необходимо произвести | Обязательно |
<script type="text/javascript"> ekEvents.push('orderReturn',{orderId: 'id'}) </script>
При оформлении возврата будут пересчитаны параметры выручки. Число заказов и купленных товаров не изменится.
Захват контакта на любой из форм (логин, регистрация, быстрая покупка)
Для использования этого метода подключение модуля трекинга не требуется
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
groups | Int/String [] | Массив с id групп рассылок и/или системными именами групп рассылок, которые должны быть присвоены подписчику при добавлении в платформу | Необязательно |
fields | Object | Список основных полей | Необязательно |
extraFields | Object | Список дополнительных полей | Необязательно |
mainChannel | String | Основной канал - либо 'email' либо 'phone'. Передается только в том случае, если в методе subscribe передаются 2 канала сразу | Необязательно |
cartMergeMethod | String | Параметр обработки корзины при объединении контактов по общему идентификатору. По умолчанию принимает значение replace: • replace - Содержимое корзины существующего контакта будет перезаписано на содержимое корзины переданного в запросе контакта; • merge - Содержимое корзины существующего контакта будет объединено с содержимым корзины переданного в запросе контакта; • ignore - Содержимое корзины переданного в запросе контакта будет проигнорировано, сохранится содержимое корзины существующего контакта | Необязательно |
favouriteMergeMethod | String | Параметр обработки избранного при объединении контактов по общему идентификатору. По умолчанию принимает значение replace: • replace - Содержимое избранного существующего контакта будет перезаписано на содержимое избранного переданного в запросе контакта; • merge - Содержимое избранного существующего контакта будет объединено с содержимым избранного переданного в запросе контакта; • ignore - Содержимое избранного переданного в запросе контакта будет проигнорировано, сохранится содержимое избранного существующего контакта | Необязательно |
Контакты добавляются и обновляются согласно методу addAndUpdate:
- новые контакты будут добавлены, существующие - обновлены.
Параметры поля fields: информация о подписчике
Имя | Тип | Описание | Обязательность |
---|---|---|---|
String | Емейл пользователя | Обязательно | |
firstName | String | Имя подписчика | Необязательно |
lastName | String | Фамилия подписчика | Необязательно |
phone | String | Номер телефона подписчика | Необязательно |
<script type="text/javascript"> ekEvents.push('subscribe',{groups: [18, "group_name"], fields: {email: '[email protected]', firstName: 'Имя', lastName: 'Фамилия', phone: '7900000000'}, extraFields: {systemName: 'value', systemName2: 'value'}, cartMergeMethod: 'merge', favouriteMergeMethod: 'merge'}) </script>
Чтобы трекинг определил емейл-адрес контакта, попавшего на сайт из емейл-сообщения, для всех ссылок в сообщении нужно прописать URL-параметр eksubsemail, в значении которого передавать емейл получателя с помощью тега персонализации {{subscriber_email}}.
Захват дополнительной информации о контакте без привязки к емейлу
Используется для передачи данных о подписчике без привязки к его емейл-адресу. Например: запись города, номера телефона, возраста подписчика и т.д. до того, как он зарегистрируется или выполнит вход на сайте.
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
extraFields | Object | Список дополнительных полей | Обязательно |
ekEvents.push('addExtraFields',{extraFields: {city: 'Рязань', systemName: 'value'}})
Открытие любой страницы сайта
Метод используется для сегментации контактов по истории посещений на сайте. Должен быть установлен на каждой странице сайта. Вместе с методом ekEvents.push('subscribe') позволяет отслеживать заходы на страницу конкретных пользователей и сегментировать их по этим данным.
ekEvents.push('pageOpen')
Настройка трекинга на сайте с Google Tag Manager
Для использования нашего скрипта и методов в случае, если вы используете Google Tag Manager, необходимо следовать следующим шагам:
1. Для установки скрипта необходимо создать отдельный тег в GTM.
Теги ➔ Создать ➔ Конфигурация тега ➔ Выберите тип тега
Подробнее о тегах в GTM вы можете прочитать в мануале Google
Чтобы разместить скрипт внутри тега в GTM, вам необходимо создать тег с типом «Custom HTML» / «Пользовательский HTML» и опцией срабатывания тега «Once per event» / «Один раз за событие» (по умолчанию). В тело тега поместить код скрипта, прописав соответствующее вашему аккаунту системное имя (не равно домену сайта или названию аккаунта, можете узнать у вашего персонального менеджера).
Соответствующий триггер для запуска тега должен основываться на первой загрузке любой из страниц сайта или просмотре страницы (триггер выбирается по необходимым вам условиям).
Подробнее о триггерах в мануале Google
2. Для использования методов трекинга вам необходимо создать тег с типом «Custom HTML» / «Пользовательский HTML» для каждого из методов. В теле тега для значений параметров необходимо прописать используемые вами на сайте переменные.
Для примера рассмотрим шаблон метода для добавления товара в корзину и рабочий метод в GTM с заполненными клиентскими переменными.
<script type="text/javascript"> ekEvents.push('productAdd', { productId: 'артикул товара', variant: 'тип товара', category: 'категория товара', count: 'кол-во товаров'}); </script>
Для каждого тега необходимо установить триггер, при котором этот метод должен срабатывать, и исключения (если необходимо).
3. После создания тегов их нужно сохранить, по необходимости проверить в “Предварительном просмотре” и опубликовать.
Проверка корректности работы методов трекинга в DevTools
Откройте сайт, перейдите в инструменты разработчика (F12 или Fn+F12).
Откройте необходимый раздел DevTools в соответствии со скриншотом.
Откройте любой товар, совершите любое целевое действие, на которое были установлены методы отслеживания (открытие карточки, добавление в корзину, заказ, добавление в избранное и т.д.).
Проверьте, что все методы enKod срабатывают корректно и без ошибок - возвращают статус «200 ОК».