Отслеживание действий пользователя (трекинг)
Возможности и способы установки
Вы можете отслеживать поведение пользователя на вашем сайте, записывать его активность, действия с товарами, заказы и прочее. По полученным данным сегментировать базу по покупательской или пользовательской активности, что позволит проводить маркетинговые кампании намного эффективнее.
С подключенным трекингом вам доступны такие функции, как:
- Сегментация по действиям пользователя на сайте
- Сегментация по покупательской активности
- Отслеживание выручки с рассылок
- Отслеживание выручки, количества заказов и среднего чека для каждого пользователя
Всего существует два способа установки трекинга - скрипт или API. Вы можете выбрать тот из двух, который будет проще в установке для вашей команды и соответствовать вашим техническим возможностям.
Ниже описаны инструкции по установке для каждого из вариантов.
Отслеживание действий (трекинг) по API
Все методы для отслеживания действий пользователя доступны в нашей API-документации в разделе "Tracking".
Обратите внимание, что методы будут работать только в том случае, если для вашего аккаунта подключен модуль Трекинг. Если вы хотите использовать этот функционал - обратитесь к своему персональному менеджеру или на [email protected].
Особенности использования API:
- Для каждого нового посетителя нужно создать сессию
- При каждом новом посещении нужно вызывать метод «Старт сессии» (только для тех посетителей, кому уже присвоили сессию)
- Все остальные методы должны вызываться с сессией в заголовках
- Не рекомендуется передавать покупку без канала коммуникации (емейл, телефон)
Отслеживание действий (трекинг) с помощью скрипта
Поставьте скрипт на сайт перед закрывающим тегом </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: 'артикул товара', groupId: 'идентификатор группы товаров', param: 'value' }); </script>
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | 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>
- добавление нескольких одинаковых товаров одним вызовом метода. Для этого достаточно передать параметр count.
<script type="text/javascript"> ekEvents.push('productAdd', { productId: 'артикул товара', count: 2}); </script>
- добавление нескольких разных товаров одним вызовом метода. В параметр прописывается массив с товарами, если не указано количество count, то по умолчанию берётся значение 1.
<script type="text/javascript"> ekEvents.push('productAdd', [{ productId: 'артикул товара', count: 2}, { productId: 'другой артикул', count: 5}]); </script>
Удаление товара из корзины
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
productId | String | Артикул товара | Обязательно |
count | Int | Количество товара. По умолчанию значение 1. Можно присвоить любое значение | Необязательно |
Этот метод можно использовать несколькими способами. Рассмотрим их с примерами:
- удаление одного товара из корзины
<script type="text/javascript"> ekEvents.push('productRemove', { productId: 'артикул товара'}); </script>
- удаление нескольких одинаковых товаров одним вызовом метода. Для этого достаточно передать параметр count.
<script type="text/javascript"> ekEvents.push('productRemove', { productId: 'артикул товара', count: 2}); </script>
- удаление нескольких разных товаров одним вызовом метода. В параметр прописывается массив с товарами, если не указано количество count, то по умолчанию берётся значение 1.
<script type="text/javascript"> ekEvents.push('productRemove', [{ productId: 'артикул товара', count: 2}, { productId: 'другой артикул', count: 5}]); </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>
Покупка
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
orderId | String | ID покупки. Если не передаётся, то генерируется автоматически | Обязательно |
items | [{}] | Маccив с товарами | Обязательно |
sum | Int | Сумма покупки | Обязательно для вывода выручки в интерфейсе |
productId | String | Артикул товара | Обязательно для enRecom |
price | Float/Int | Цена товара | Обязательно для enRecom |
count | Int | Количество каждого из товаров в заказе | Обязательно для enRecom |
<script type="text/javascript"> ekEvents.push('productBuy',{orderId: 'id', sum: 1000, items: [{productId: 'Артикул товара 1', count: 5}, {productId: 'Артикул товара 2', count: 1}]}) </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', { source: 'form', integrations: [1], groups: [1, "sysname"], fields: { email: '[email protected]', lastName: '', phone: '70000000000' } }) await ekEvents.push('productBuy', { orderId: '84781', items: [{ productId: '5y347p92', size: '92', count: 1 }], sum: '230.00' }) } subAndOrder() </script>
Захват контакта на любой из форм (логин, регистрация, быстрая покупка)
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
groups | Int/String [] | Массив с id групп рассылок и/или системными именами групп рассылок, которые должны быть присвоены подписчику при добавлении в платформу | Необязательно |
fields | Object | Список основных полей | Необязательно |
extraFields | Object | Список дополнительных полей | Необязательно |
mainChannel | String | Основной канал - либо 'email' либо 'phone'. Передается только в том случае, если в методе subscribe передаются 2 канала сразу | Необязательно |
Параметры поля fields: информация о подписчике
Имя | Тип | Описание | Обязательность |
---|---|---|---|
String | Емейл пользователя | Обязательно | |
firstName | String | Имя подписчика | Необязательно |
lastName | String | Фамилия подписчика | Необязательно |
phone | String | Номер телефона подписчика | Необязательно |
<script type="text/javascript"> ekEvents.push('subscribe',{source: 'form', integrations: [1], groups: [18, "group_name"], fields: {email: '[email protected]', firstName: 'Имя', lastName: 'Фамилия', phone: '7900000000'}, extraFields: {systemName: 'value', systemName2: 'value'}}) </script>
Чтобы трекинг определил емейл-адрес контакта, попавшего на сайт из емейл-сообщения, для всех ссылок в сообщении нужно прописать URL-параметр eksubsemail, в значении которого передавать емейл получателя с помощью тега персонализации {{subscriber_email}}.
Захват дополнительной информации о контакте без привязки к емейлу
Используется для передачи данных о подписчике без привязки к его емейл-адресу. Например: запись города, номера телефона, возраста подписчика и т.д. до того, как он зарегистрируется или выполнит вход на сайте.
Зарезервированные названия полей
Имя | Тип | Описание | Обязательность |
---|---|---|---|
extraFields | Object | Список дополнительных полей | Обязательно |
ekEvents.push('addExtraFields',{extraFields: {city: 'Рязань', systemName: 'value'}})
Открытие любой страницы сайта
Метод используется для сегментации контактов по истории посещений на сайте. Должен быть установлен на каждой странице сайта. Вместе с методом ekEvents.push('subscribe') позволяет отслеживать заходы на страницу конкретных пользователей и сегментировать их по этим данным.
ekEvents.push('pageOpen')
Вызов пользовательского события
ekEvents.push('event', {email:'[email protected]', phone:'79000000000', params: {param1: 'value1'}});
где:
- event - системное имя события, созданного в enKod ➔ Пользовательские события
- param- системное имя параметра
- value- значение параметра
С методом может передаваться (не обязательно) емейл и/или телефон контакта. Если емейл и/или телефон не переданы или контакты с такими идентификаторами не найдены в аккаунте, то мы свяжем событие с сессией, если знаем ее. В случае привязки к сессии и при ее отсутствии (и отсутствии в вашем аккаунте переданных емейла или телефона) событие не отобразится в enKod.
Настройка трекинга на сайте с Google Tag Manager
Для использования нашего скрипта и методов в случае, если вы используете Google Tag Manager, необходимо следовать следующим шагам:
1. Для установки скрипта необходимо создать отдельный тег в GTM.
Подробнее о тегах в GTM вы можете прочитать в мануале Google
Чтобы разместить скрипт внутри тега в GTM, вам необходимо создать тег с типом «Custom HTML» и опцией срабатывания тега «Once per event» (по умолчанию). В тело тега поместить код скрипта, прописав соответствующее вашему аккаунту системное имя (не равно домену сайта или названию аккаунта, можете узнать у вашего персонального менеджера).
Соответствующий триггер для запуска тега должен основываться на первой загрузке любой из страниц сайта или просмотре страницы (триггер выбирается по необходимым вам условиям).
Подробнее о триггерах в мануале Google
2. Для использования методов трекинга вам необходимо создать тег с типом «Custom HTML» для каждого из методов. В теле тега для значений параметров необходимо прописать используемые вами на сайте переменные.
Для примера рассмотрим шаблон метода для добавления товара в корзину и рабочий метод в GTM с заполненными клиентскими переменными.
<script type="text/javascript"> ekEvents.push('productAdd', { productId: 'артикул товара', variant: 'тип товара', category: 'категория товара', count: 'кол-во товаров'}); </script>
Для каждого тега необходимо установить триггер, при котором этот метод должен срабатывать, и исключения (если необходимо).
3. После создания тегов их нужно сохранить и опубликовать.
Проверка корректности работы методов трекинга в DevTools
Откройте сайт, перейдите в инструменты разработчика (F12 или Fn+F12).
Откройте необходимый раздел DevTools в соответствии со скриншотом.
Откройте любой товар, совершите любое целевое действие, на которое были установлены методы отслеживания (открытие карточки, добавление в корзину, заказ, добавление в избранное и т.д.).
Проверьте, что все методы enKod срабатывают корректно и без ошибок - возвращают статус «200 ОК».