Передача данных о поведении пользователей на сайте через JavaScript
Если вы уже установили скрипт на сайт, можете настроить передачу событий в eSputnik для отслеживания поведения посетителей сайта.
Мы безопасно храним в зашифрованном виде в нашей системе контактные данные, полученные во время событий, такие как адреса электронной почты, телефонные номера и другие.
События можно отправлять в систему двумя способами:
- через браузер, вызывая функцию eS.JS;
- из бэкенда, используя REST API. В этой инструкции рассмотрим первый вариант.
Важно
1. Особое внимание уделите передаче данных о контактах.
2. Нет необходимости настраивать все события, приведенные ниже, — выберите только входящие в ваш тарифный план.
Список событий
1. Базовые (тариф Advanced):
- ProductPage
- StatusCart
- PurchasedItems
- CustomerData
2. Продвинутые (тариф Professional):
- ProductPage
- StatusCart
- PurchasedItems
- CustomerData
- CategoryPage
- SearchRequest
- AddToWishlist
3. Рекомендации на сайте:
- ProductPage
- StatusCart
- PurchasedItems
- CustomerData
- CategoryPage
- MainPage
- NotFound
- ProductImpression
Проверьте отправку событий и их параметры в консоли браузера на вкладке Network. Трекинговые события называются webevent.
Скрипт
Script eS
Назначение скрипта
Скрипт фиксирует страницу нахождения каждого посетителя и позволяет вызывать и посылать события с любой страницы, где он установлен.
Установка
Скрипт должен быть установлен на всех страницах вашего сайта перед закрывающим тегом body.
Может быть установлен с помощью GTM, но это грозит потерей трафика, так как почти все контент-фильтры блокируют GTM.
- GTM (Google Tag Manager) - решение от Google, которое позволяет размещать пользовательские скрипты на страницах сайта без непосредственного вмешательства в его код.
- Контент-фильтры, или программа ограниче́ния веб-контента (англ. Content-control software или web filtering software) — устройство или программное обеспечение для фильтрации сайтов по их содержимому, не позволяющее получить доступ к определённым сайтам или услугам сети Интернет. Система позволяет блокировать веб-сайты с содержимым, не предназначенным для просмотра.
Пример
<script> !function(t, e, c, n) { var s = e.createElement(c); s.async = 1, s.src = 'https://cdn.esputnik.com/scripts/' + n + '.js'; var r = e.scripts[0]; r.parentNode.insertBefore(s, r); var f = function() { f.c(arguments); }; f.q = []; f.c = function() { f.q.push(arguments); }; t['eS'] = t['eS'] || f; }(window, document, 'script', '000000000000000000'); eS('init', { TRACKING: false, RECOMS: true }); </script>
HTML
Параметры
Название | Пример | Описание |
script | "00000000000000000" Обязательный Тип: String | Статический параметр, содержащий ID вашего магазина. |
TRACKING | true Опциональный (true по умолчанию) Тип: Boolean | Флаг включения трекинга по конфигу. В случае передачи событий методом es.JS, API значение должно быть задано как false, при этом остается автоматическая отправка события PageView при перезагрузке страницы. |
RECOMS | true Опциональный (true по умолчанию) Тип: Boolean | Флаг отображения рекомендаций по конфигу (может работать без TRACKING, однако crawler config обязательно должен быть описан. |
Просмотр страницы
PageView
Описание
Отправка события PageView происходит автоматически при перезагрузке страницы, в случае если у вас одностраничный сайт и при переходе в другие разделы сайта не происходит перезагрузки страницы, можете настроить передачу события самостоятельно
Пример
eS('sendEvent', 'PageView', { 'PageView': { } });
JSON
Данные посетителя сайта
Во всех событиях (опционально, не является обязательным)
Описание
Отправка события со всех типов страниц с локатором пользователя (email, phoneNumber, contactId).
Необходимо для матчинга контактов с Cookies.
Пример
{ "GeneralInfo": { "externalCustomerId": "1234509876", "user_email": "example@email.com", "user_phone": "380501234567", "user_es_contact_id": 100500 }, "ProductPage": { "productKey": "24-WG02" } }
JSON
Параметры
Название | Пример | Описание |
externalCustomerId | "1234509876" Тип: String |
|
user_email | "example@email.com" Тип: String |
|
user_phone | "380501234567" Тип: String |
|
user_es_contact_id | 100500 Опциональный Тип: String |
|
События базовой сегментации (тариф Advanced)
Карточка товара
ProductPage
Описание
Отправка события ProductPage - карточки товара, содержащее наличие, цену и код изделия.
Необходима для расчета и вывода рекомендаций и отправки брошенных просмотров.
Пример
eS('sendEvent', 'ProductPage', { 'ProductPage': { 'productKey': '24-MB02', 'price': '153', 'isInStock': 1, 'tag_some_field': ['123'], 'tag_another_field': ['321', '213'] }});
JavaScript
Если в рекомендательном блоке товар сразу добавляется в корзину при нажатии кнопки "Купить", необходимо отправлять дополнительное событие ProductPage, а в GeneralInfo в "s_location" передавать параметр "sc_content", который можно получить из ссылки целевого товара, полученного в рекомендациях.
Обратите внимание
productKey должен совпадать с параметром <g:id> в фиде. Если в фиде ID товара передается в другом параметре, согласуйте это с support@esputnik.com.
Также обратите внимание на тип данных в параметрах price и isInStock.
Параметры
Название | Пример | Описание |
productKey | “24-MB02” Обязательный Тип: String |
|
price | “153” Опциональный Тип: String |
|
isInStock | “1” Опциональный Тип: Int |
|
Tags | Опциональный Тип: Object |
|
Корзина
StatusCart
Описание
Корзина передается как массив данных. Событие нужно передавать каждый раз:
- при добавлении товара в корзину со страниц категории, товара и главной
- при удалении товара из корзины во всплывающем окне или на странице корзины/чекаута
- при очистке корзины (если есть возможность)
Обратите внимание
Событие StatusCart передает не факт добавления конкретного товара в корзину, а актуальное состояние корзины. Если в корзину добавляется первый товар, то в событии StatusCart передается массив с одним товаром. Если добавляется 2-й, 3-й и т.д. товары, то в событиях StatusCart передается массив из 2-х, 3-х и т.д. товаров. Та же логика работает и при удалении товаров из корзины.
Параметр GUID. В каждом событии StatusCart необходимо передавать параметр GUID. Это уникальный идентификатор текущего состояния корзины. Каждый раз, когда вы отправляете событие StatusCart, необходимо передавать новое значение GUID, которое будет отличаться от предыдущих.
Пример корзины с товарами
eS('sendEvent', 'StatusCart', { 'StatusCart': [ { 'productKey': '24-MB02', 'price': '153', 'quantity': '1', 'currency': 'USD', "tag_something": [ "aaa", "bbb" ] }, { 'productKey': '123-321', 'price': '450.00', 'quantity': '3', 'currency': 'USD' } ], 'GUID': '2b914e9c-43ee-bf41-6f80-b97db1e8ab7e' });
JavaScript
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
eS('sendEventWithTags', 'StatusCart', {
"StatusCart": {
"GUID": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"Products": [
{
"productKey": "430738",
"price": 201.95,
"discount": 180,
"quantity": 1,
"price_currency_code": "UAH",
"tag_something": [
"aaa",
"bbb"
]
},
{
"productKey": "902339",
"price": 596,
"discount": 590,
"quantity": 1,
"price_currency_code": "UAH",
"tag_something": [
"aaa",
"bbb"
]
}
],
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
});
Пример пустой корзины
eS('sendEvent', 'StatusCart', { 'StatusCart': [], 'GUID': '2c914e9c-43ee-bf41-6f80-b97db1e8ab7e' });
JavaScript
Параметры
Название | Пример | Описание |
GUID | “2c914e9c-43ee-bf41-6f80-b97db1e8ab7e” Тип: String |
|
productKey | “24-MB02” Обязательный Тип: String |
|
price | "153" Обязательный Тип: String |
|
quantity | "5" Обязательный Тип: String |
|
currency | "UAH" Опциональный Тип: String |
|
Tags | Опциональный Тип: Object |
|
Продажа
PurchasedItems
Описание
Для вывода рекомендаций на странице подтверждения заказа или для отправки триггеров по брошенным корзинам, необходимо отправить запрос, в котором будет указано, какой товар купил клиент.
В случае, когда не используются брошенные корзины, товары можно передавать в событии PurchasedItems, в этом случае StatusCart не передается.
Пример с товарами (только для “Покупка в один клик”)
eS('sendEvent', 'PurchasedItems', { "OrderNumber": "123/2017", "PurchasedItems": [{ "productKey": "24-MB02", "price": "153", "quantity": "1", "currency": "UAH" }], "Tags": { "blockId": ["19787_r119v224"] } });
JavaScript
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию, пример:
Пример конструкции
eS('sendEventWithTags', 'PurchasedItems', {
"PurchasedItems": {
"Products": [
{
"product_id": "430738",
"unit_price": "201.95",
"quantity": 1
},
{
"product_id": "211452",
"unit_price": "341.80",
"quantity": 2
}
],
"OrderNumber": "123/2017",
"Tags": {
"block_id": [
"21246_r335v507"
],
"some_tags1": [
"4",
"gg"
]
}
}
});
Пример с товарами (Покупка с сайта)
eS('sendEvent', 'PurchasedItems', { "OrderNumber": "123/2017", "PurchasedItems": [{ "productKey": "24-MB02", "price": "153", "quantity": "1", "currency": "UAH" }], "GUID": "6F9619FF-8B86-D011-B42D-00CF4FC964FF" });
JavaScript
Обратите внимание
Событие "PurchasedItems" также содержит параметр GUID. Значение этого параметра генерировать не требуется. Используйте значение GUID из последнего события StatusCart.
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
"PurchasedItems": {
"GUID": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"OrderNumber": "123/2017",
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
});
Название | Пример | Описание |
OrderNumber | "1234/2017" Тип: String |
|
"6F9619FF-8B86-D011-B42D-00CF4FC964FF" Тип: String |
| |
productKey | Обязательный Тип: String |
|
price | "21.70" Обязательный Тип: String |
|
quantity | "1" Обязательный Тип: String |
|
currency | "UAH" Опциональный Тип: String |
|
Tags | Опциональный Тип: Object |
|
blockId | Опциональный Тип: String |
|
Пользователь
CustomerData
CustomerData должна отправляться:
- при регистрации на сайте;
- при авторизации на сайте;
- при вводе личных данных на странице чекаута. Если к моменту оформления заказа пользователь уже авторизован, можно не отправлять это событие;
- из личного кабинета, если пользователь обновляет информацию (добавляет/изменяет номер телефона или email).
Обратите внимание
При регистрации пользователя кроме события CustomerData нужно обязательно дополнительно передать в систему контакт методом https://docs.esputnik.com/reference/addcontact-1, поскольку само событие CustomerData не создает контакт в eSputnik.
Если кроме трекинга на сайте будет настраиваться трекинг в мобильном приложении, необходимо в запросе создания контакта дополнительно передавать параметр externalCustomerId (ваш внутренний идентификатор контакта).
Пример
eS('sendEvent', 'CustomerData', { 'CustomerData': { 'externalCustomerId': '1234509876', 'user_email': 'example@email.com', 'user_name': 'Johny', 'user_card_id': '321', 'user_phone': '3801111111111', 'user_city': 'Gdańsk', 'user_tags_gender': 'male', } });
JavaScript
Параметры
Название | Пример | Описание |
externalCustomerId | "1234509876" Опциональный Тип: String | Внешний идентификатор контакта |
user_email | Обязательный Тип: String |
|
user_name | "Johny" Опциональный Тип: String |
|
user_client_id | "123" Опциональный Тип: String |
|
user_card_id | "321" Опциональный Тип: String |
|
user_phone | "3801111111111" Опциональный Тип: String |
|
Дополнительные события для расширенной сегментации (тариф Pro)
Категория
CategoryPage
Описание
Для вывода рекомендаций на странице категории, необходимо отправить запрос, в котором будет указано на какой категории находиться пользователь.
Обратите внимание
categoryKey должен совпадать с названиями категорий в фиде. Если в фиде категории передаются так:
Пример
eS('sendEvent', 'CategoryPage', { "CategoryPage": { "categoryKey": "509876" }, "Tags": { "some_tags": [ "gh", "a2" ], "some_tags1": [ "4", "gg" ] } });
JavaScript
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
"CategoryPage": {
"Category": {
"categoryKey": "509876"
},
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
});
Параметры
Название | Пример | Описание |
categoryKey | "509876" Обязательный Тип: String |
|
Tags | Опциональный Тип: Object |
|
Список желаний
AddToWishlist
Описание
Отправка события AddToWishlist происходит в момент добавления товара в список желаемого (избранное).
Необходима для расчета и вывода рекомендаций и отправки триггеров связанных с списком желаний.
Пример
eS('sendEvent', 'AddToWishlist', { 'AddToWishlist': { 'productKey': '24-MB02', 'price': '153', 'isInStock': 1 }});
JavaScript
Параметры
Название | Пример | Описание |
productKey | “24-MB02” Обязательный Тип: String |
|
price | “153” Опциональный Тип: String |
|
isInStock | “1” Опциональный Тип: Int |
|
Поисковые запросы
SearchRequest (опциональный)
Описание
Для сбора статистики по поисковым запросам необходимо отправить вводимое значение со строки поиска.
Данное событие используется для триггеров. Его нужно отправлять только в случае, когда поиск не дал результатов. В триггере такие контакты будут получать персональные рекомендации (в данный момент, выдача рекомендаций не зависит от значения, введенного в поиске, поддержка этой функции предполагается в будущем).
Пример
eS('sendEvent', 'SearchRequest', { "SearchRequest": { "search":"input_value", "isFound": 1 } });
JavaScript
Параметры
Название | Пример | Описание |
search | "Coffe" Обязательный Тип: String | Вводимое значение со строки поиска. То, что мы ищем на сайте |
isFound | 0/1 Необязательный Тип: Int | Если список пуст, возвращается 0, если содержит даные - 1. |
Дополнительные события, необходимые для рекомендаций на сайте
Карточка товара (дополнительные настройки)
ProductPage
Если в рекомендательном блоке товар сразу добавляется в корзину при нажатии кнопки "Купить", необходимо отправлять дополнительное событие ProductPage, а GeneralInfo в "s_location" передавать параметр "sc_content", который можно получить из ссылки целевого товара, полученного в рекомендациях.
Если на странице корзины/оформления заказа не отправляется StatusCart (не было изменений в корзине), а нужно отображать рекомендательный блок для корзины, отправляйте событие eS('sendEvent', 'StatusCartPage')
Главная страница
MainPage
Описание
Отправка события MainPage - главная страница сайта.
Необходимо только для возможности отображения рекомендаций на сайте.
Пример
eS('sendEvent', 'MainPage');
JSON
Страница "404"
NotFound
Описание
Отправка события NotFound - отсутствующая страница сайта (страница 404).
Необходимо только для возможности отображения рекомендаций на сайте.
Пример
eS('sendEvent', 'NotFound');
JSON
Показы
ProductImpression отправляется автоматически если рекомендации отобразились пользователю сайта.
Если Вы настраиваете вызов рекомендаций через JS API, необходимо вызывать метод ProductImpressions, когда рекомендация появляется в области просмотра браузера у пользователя (когда пользователь видит рекомендацию), чтобы отслеживание работало правильно. Вы можете использовать Intersection Observer API для определения видимости элемента для пользователя или любым другим методом по вашему выбору. В запросе должны быть указаны параметры, которые были возвращены в ответе getRecommendations: идентификаторы продуктов и container_type, содержащий ID блока и variant_id.
Описание
При выводе рекомендательных блоков для отображения показов в админпанели на вкладке “Reports” необходимо отправить запрос, в котором будет указана информация о показанных товарах .
Пример
eS('sendEvent', 'ProductImpressions', { "ProductImpression": [{ "product_id": "430968", "container_type": "1253_r963v1317" }] });
JavaScript
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
"ProductImpression": {
"Products": [
{
"product_id": "430968",
"container_type": "1253_r963v1317"
},
{
"product_id": "430738",
"container_type": "1253_r963v1317"
},
{
"product_id": "429983",
"container_type": "1253_r963v1317"
}
],
"Tags": {
"some_tags": [
"1",
"a2"
],
"some_tags1": [
"4",
"gg"
]
}
}
});
Параметры
Название | Пример | Описание |
product_id | "PK1" Обязательный Тип: String |
|
container_type | "1253" Обязательный Тип: String |
|
Tags | Опциональный Тип: Object | Дополнительные поля. |
*Если блоков несколько на одной странице, все показы передаются в одном запросе.