Первые шаги
Пользовательские данные
- Обзор адаптивного email-редактора
- Создание оформления для письма
- Создание сквозных модулей
- Настройка адаптивности
- Настройка smart-контейнеров
- Оформление промовкладки для Gmail
- Добавление Ролловера
- Добавление анкорных ссылок
- Библиотека модулей
- Добавление таблицы в письмо
- Работа с блоком "Баннер"
- Добавление пользовательских шрифтов
- Создание кнопки CTA
- Работа с блоком "Картинка"
- Работа с блоком “Таймер"
- Использование ИИ в email-редакторе
Омниканальность
- SDK для мобильных приложений
- Управление ключами доступа к мобильному SDK
- Подключение мобильного приложения
- Создание и загрузка ключа Firebase
- Создание мобильных push-сообщений
- Настройка аналитики доставляемости и кликов
- Планирование мобильных push-уведомлений
- Типы диплинков
- Отправка тестовых сообщений из отладки запросов
- Настройка виджетов для сайта
- Вызов виджета
- Настройка геоданных для правил вызова виджетов
- Сохранение данных из виджетов в поля контактов
- Защита от раздражения
- Действия после заполнения формы
- Замена системного сценария Double Opt-In
- Создание pop-up-форм с помощью Google Tag Manager или WordPress
- Отправка событий из форм подписки в Google Analytics
- A/B-тестирование виджетов
- Сбор контактных данных с помощью форм запросов
Автоматизация
- Настройка и редактирование сценариев
- Настройка условий запуска и остановки сценария
- Блок “Старт”
- Группа блоков “Популярные”
- Группа блоков “Сообщения”
- Использование блока сообщений "Одно из многих"
- Группа блоков “Контакт”
- Группа блоков "Условия"
- Группа блоков “Другое”
- Группа блоков “Сообщение на группу”
- Группа блоков “Время”
- Расширенные параметры блоков сценариев
- Разрешенное время отправки
- Вебхуки в сценариях
- Отслеживание истории запусков сценария
- Если сценарий не работает
- Двойное подтверждение подписки
- Приветственная серия
- Приветственная серия с сегментацией по категориям
- Запуск сценария после импорта контактов
- Регулярный сценарий для группы
- Поздравление с днем рождения
- Привязка сценария к кнопке
- Использование переменных из заказа в сценарии
- Сбор отзывов о заказе
- Реактивация клиентов и подписчиков
- Отправка рассылки непрочитавшим
- Настройка дополнительных рассылок
- Отправка напоминаний в заданное пользователем время
- А/B-тестирование в сценариях
Персонализация
- Подстановка промокода из файла
- Подстановка промокода с использованием API
- Принципы генерации промокодов с помощью PHP/JAVA
- Подстановка промокода с помощью персонализации
- Загрузка промокодов для использования в сценарии
- Генерация промокодов в сценарии
- Отправка промокода с помощью препроцессора
- HTTP-запрос для передачи промокода из сообщения в карточку контакта
Аналитика
- Отчёт по email-рассылке
- Отчет по SMS-рассылке
- Отчет по рассылке Web Push
- Отчет по Viber-рассылке
- Отчет по рассылке Mob Push
- Отчет по рассылке App Inbox
- Отчет по Telegram-рассылке
- Отчет по взаимодействию с In-App
- Отчет по взаимодействию с виджетами
- Отчет по триггерной рассылке
- Отчет по AMP-рассылке
- Отчет по мультиязычной рассылке
- Настройка передачи UTM-меток
- Визуализация дохода
- Отслеживание эффективности кампаний в Google Analytics 4
- Статистика сообщений
Мультиязычность
Отслеживание событий и поведения
- События для запуска триггерных рассылок
- Именование пользовательских событий
- Валидация параметров события
- Отслеживание активности на сайте при помощи Generate event
- Подстановка данных из событий в сообщения
- Разветвление сценария в зависимости от параметров события
- Отслеживание активности клиентов в мобильных приложениях
- Вебхуки для отслеживания активности
- Аналитика событий
Товарные рекомендации
API
Смена системы
Документы
Интеграция
Передача данных о поведении пользователей на сайте через 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>
Параметры
Название |
Пример |
Описание |
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': { }
});
Данные посетителя сайта
Во всех событиях (опционально, не является обязательным)
Описание
Отправка события со всех типов страниц с локатором пользователя (email, phoneNumber, contactId).
Необходимо для матчинга контактов с Cookies.
Пример
{
"GeneralInfo": {
"externalCustomerId": "1234509876",
"user_email": "example@email.com",
"user_phone": "380501234567",
"user_es_contact_id": 100500
},
"ProductPage": {
"productKey": "24-WG02"
}
}
Параметры
Название |
Пример |
Описание |
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']
}});
Если в рекомендательном блоке товар сразу добавляется в корзину при нажатии кнопки "Купить", необходимо отправлять дополнительное событие 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'
});
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
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'
});
Параметры
Название |
Пример |
Описание |
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"]
}
});
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию, пример:
Пример конструкции
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"
});
Обратите внимание
Событие "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',
}
});
Параметры
Название |
Пример |
Описание |
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"
]
}
});
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
"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
}});
Параметры
Название |
Пример |
Описание |
productKey |
“24-MB02” Обязательный Тип: String |
|
price |
“153” Опциональный Тип: String |
|
isInStock |
“1” Опциональный Тип: Int |
|
Поисковые запросы
SearchRequest (опциональный)
Описание
Для сбора статистики по поисковым запросам необходимо отправить вводимое значение со строки поиска.
Данное событие используется для триггеров. Его нужно отправлять только в случае, когда поиск не дал результатов. В триггере такие контакты будут получать персональные рекомендации (в данный момент, выдача рекомендаций не зависит от значения, введенного в поиске, поддержка этой функции предполагается в будущем).
Пример
eS('sendEvent', 'SearchRequest', {
"SearchRequest": {
"search":"input_value",
"isFound": 1
}
});
Параметры
Название |
Пример |
Описание |
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');
Страница "404"
NotFound
Описание
Отправка события NotFound - отсутствующая страница сайта (страница 404).
Необходимо только для возможности отображения рекомендаций на сайте.
Пример
eS('sendEvent', 'NotFound');
Показы
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"
}]
});
Если необходимо передавать дополнительные параметры события, нужно использовать другую конструкцию
Пример конструкции
"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 |
Дополнительные поля. |
*Если блоков несколько на одной странице, все показы передаются в одном запросе.