Возможности и способы установки

Вы можете отслеживать поведение пользователя на вашем сайте, записывать его активность, действия с товарами, заказы и прочее. По полученным данным сегментировать базу по покупательской или пользовательской активности, что позволит проводить маркетинговые кампании намного эффективнее.

С подключенным трекингом вам доступны такие функции, как:

О практическом применении и монетизации трекинга в рассылках вы можете почитать кейсы наших клиентов и узнать:
• как интернет-магазин увеличил выручку email-канала в 13 раз за 4 месяца
• как интернет-витрина конвертировала каждый шестой брошенный просмотр в покупку

Всего существует два способа установки трекинга - скрипт или API. Вы можете выбрать тот из двух, который будет проще в установке для вашей команды и соответствовать вашим техническим возможностям.

Ниже описаны инструкции по установке для каждого из вариантов.

Для подсчета выручки с помощью трекинга обязательно укажите сайт, на котором будет настроено отслеживание, в «Настройках аккаунта» в enKod

Отслеживание действий (трекинг) по API

Все методы для отслеживания действий пользователя доступны в нашей API-документации в разделе "Tracking".

Обратите внимание, что методы будут работать только в том случае, если для вашего аккаунта подключен модуль Трекинг. Если вы хотите использовать этот функционал - обратитесь к своему персональному менеджеру или на [email protected].

Особенности использования API:

  • Для каждого нового посетителя нужно создать сессию
  • При каждом новом посещении нужно вызывать метод «Старт сессии» (только для тех посетителей, кому уже присвоили сессию)
  • Все остальные методы должны вызываться с сессией в заголовках
  • Не рекомендуется передавать покупку без канала коммуникации (емейл, телефон)

При настройке отслеживания по API мы не можем автоматически определить, есть ли контакт в базе (по аналогии со скриптом и параметром eksubsemail). Но вы можете настроить эту же логику самостоятельно:

  1. Используйте в емейл-сообщениях URL параметр eksubsemail, в значении которого передайте емейл получателя с помощью тега персонализации {{subscriber_email}}
  2. При открытии сайта всегда должен вызываться API-метод /v1/sessions/
  3. После перехода контакта на сайт вызовите метод /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('subscribe',{groups: [18, "group_name"], fields: {email: '[email protected]', firstName: 'Имя', lastName: 'Фамилия', phone: '7900000000'}, extraFields: {systemName: 'value', systemName2: 'value'}, cartMergeMethod: 'merge', favouriteMergeMethod: 'merge'})
</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: информация о подписчике

Имя Тип Описание Обязательность
email String Емейл пользователя Обязательно
firstName String Имя подписчика Необязательно
lastName String Фамилия подписчика Необязательно
phone String Номер телефона подписчика Необязательно

Чтобы трекинг определил емейл-адрес контакта, попавшего на сайт из емейл-сообщения, для всех ссылок в сообщении нужно прописать URL-параметр eksubsemail, в значении которого передавать емейл получателя с помощью тега персонализации {{subscriber_email}}.

Если в extraFileds вы используете поля типа список (list), обратите внимание:

  • допустимо передать только 1 значение поля для списка - в ином случае изменение этого поля не будет записано, но сам метод отработает и все валидные параметры будут записаны;
  • допустимо передать значение, которое не было создано в интерфейсе enKod - это значение будет автоматически создано и записано переданному контакту, а для любого другого контакта станет доступен выбор этого значения из списка значений этого поля данных.

Захват дополнительной информации о контакте без привязки к емейлу

Для использования этого метода подключение модуля трекинга не требуется

ekEvents.push('addExtraFields',{extraFields: {city: 'Рязань', systemName: 'value'}})

Используется для передачи данных о подписчике без привязки к его емейл-адресу. Например: запись города, номера телефона, возраста подписчика и т.д. до того, как он зарегистрируется или выполнит вход на сайте.

Зарезервированные названия полей

Имя Тип Описание Обязательность
extraFields ObjectСписок дополнительных полей Обязательно

Если в extraFileds вы используете поля типа список (list), обратите внимание:

  • допустимо передать только 1 значение поля для списка - в ином случае изменение этого поля не будет записано, но сам метод отработает и все валидные параметры будут записаны;
  • допустимо передать значение, которое не было создано в интерфейсе enKod - это значение будет автоматически создано и записано переданному контакту, а для любого другого контакта станет доступен выбор этого значения из списка значений этого поля данных.

Передача пользовательского события

Для использования этого метода подключение модуля трекинга не требуется

ekEvents.push('event', {email:'[email protected]', phone:'79000000000', params: {param1: 'value1'}});

Зарезервированные названия полей

Имя Тип Описание Обязательность
event String Cистемное имя события, созданного в enKod ➔ Пользовательские события Обязательно
email String Email контакта Необязательно
phone String Номер телефона контакта Необязательно
params Object Cистемные имена параметров событий с их значениями Необязательно

С методом может передаваться (не обязательно) емейл и/или телефон контакта. Если емейл и/или телефон не переданы или контакты с такими идентификаторами не найдены в аккаунте, то мы свяжем событие с сессией, если знаем ее. В случае привязки к сессии и при ее отсутствии (и отсутствии в вашем аккаунте переданных емейла или телефона) событие не отобразится в enKod.

Пользовательские события, переданные без емейла или телефона, не будут записаны в интерфейс, но мы все-равно будем хранить их в базе. В какой-то момент контакт может авторизоваться на сайте, а мы сможем связать сессию (которая уже хранится у нас) с идентификатором (который использовал контакт при авторизации). В этом случае мы подгрузим в историю событий все события этого контакта (и пополним его карточку событиями, которые он совершал до авторизации).

Подробнее о пользовательских событиях читайте в этом разделе Базы знаний.

Открытие любой страницы сайта

Для использования этого метода подключение модуля трекинга не требуется

<script type="text/javascript">
     ekEvents.push('pageOpen')
</script>

Метод используется для сегментации контактов по истории посещений на сайте. Должен быть установлен на каждой странице сайта. Вместе с методом ekEvents.push('subscribe') позволяет отслеживать заходы на страницу конкретных пользователей и сегментировать их по этим данным.

Открытие страницы с товаром

<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 Ссылка на страницу категории на сайте Необязательно

Добавление товара в корзину

Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:

  • добавление одного товара в корзину
<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 Артикул товара Обязательно
count Int Количество товара. По умолчанию значение 1. Можно присвоить любое значение Необязательно

Добавление товара в избранное

Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:

  • добавление одного товара в избранное
<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>

Зарезервированные названия полей

Имя Тип Описание Обязательность
productId String Артикул товара Обязательно

Очистка сравнения

<script type="text/javascript">
    ekEvents.push('productComparisonClean'); 
</script>

Заказ

<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 заказа. Если не передаётся, то генерируется автоматически Обязательно
items [{}] Маccив с товарами Обязательно
sum Float/Int Сумма заказа Обязательно для вывода выручки в интерфейсе
productId String Артикул товара Обязательно для модуля рекомендаций
price Float/Int Цена товара Обязательно для модуля рекомендаций
count Int Количество каждого из товаров в заказе Обязательно для модуля рекомендаций

Возврат заказа

<script type="text/javascript">
     ekEvents.push('orderReturn',{orderId: 'id'})
</script>

Зарезервированные названия полей

Имя Тип Описание Обязательность
orderId String ID заказа, возврат которого необходимо произвести Обязательно

При оформлении возврата будут пересчитаны параметры выручки. Число заказов и купленных товаров не изменится.

Настройка трекинга на сайте с 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 ОК».

Последнее изменение: 2025.04.14 09:14 — Anastasia Aniskova