← На главную

Серверная интеграция трекинга

Отправка трекинговых событий через POST-запросы напрямую на сервер AnyQuery. Используется в мобильных приложениях, серверных решениях и при невозможности использовать JS-библиотеку.

📡
Параметры подключения
Эндпоинты, заголовки, ограничения
Метод POST
Production URL https://tracking-app.diginetica.net/event
Test URL https://tracking-dev.diginetica.net/event
Content-Type application/json;charset=UTF-8
Формат тела JSON, одно событие на запрос
Пропускная способность до 500 событий в секунду*

*Внутренний операционный лимит со стороны Diginetica. В Swagger явно не задан — точное значение уточняйте у команды.

🚨
Тестовый стенд не сохраняет данные.
Используйте его исключительно для проверки корректности формата запроса. Ожидаемый ответ — 200 при корректном запросе или код ошибки при некорректном. Никакие события на тестовом стенде в аналитику не попадают.

Коды ответа:

200Успех
400Ошибочный запрос
403Сайт заблокирован
500Внутренняя ошибка
504Таймаут ответа
📋
Базовые параметры запроса
Присутствуют во всех событиях
ℹ️
Маркеры обязательности. В этом документе req отмечает поля, обязательные по продуктовой логике для конкретного типа события. Строго по Swagger у POST /event обязательны только пять полей: eventType, apiKey, sessionId, userGUID, channel. Все остальные req-метки в этом документе — продуктовые требования, обычно помечены req* (в Swagger они опциональны).
ПолеТипОписание
eventTypereq string Тип события
apiKeyreq string Ключ клиента (APIKEY)
sessionIdreq string ID сессии пользователя. Уникален для каждой сессии. Таймаут — 30 минут бездействия.
Пример генерации: при старте сессии создайте UUID v4 и сохраните в sessionStorage. При истечении 30 минут бездействия — сгенерируйте новый.
userGUIDreq string Постоянный идентификатор устройства/браузера пользователя. Хранится в cookie (Web) или локальном хранилище (App). Срок хранения — 1 год. Макс. 64 символа.
Формат: 0:<TIMESTAMP_base36>:<UUID>
Пример генерации: при первом визите проверьте наличие cookie userGUID. Если нет — сгенерируйте: префикс 0: + текущий timestamp в base36 + : + UUID v4. Запишите в cookie с max-age=31536000 (1 год). При каждом следующем визите читайте из cookie.
Пример значения: 0:kzmrfk1k:[UUID]
viewGUIDreq* string *По требованию продукта обязательно; в Swagger поле помечено как опциональное.

Идентификатор просмотра страницы. Генерируется при каждой загрузке страницы как UUID v4. Одинаков для всех событий в рамках одного просмотра — меняется при переходе на новую страницу или при обновлении текущей.
Пример: сгенерируйте UUID v4 при монтировании страницы и передавайте его во всех событиях до следующей навигации или перезагрузки.
regionIdreq* string *По требованию продукта обязательно; в Swagger поле помечено как опциональное. ID региона (регистр важен!). Совпадает с ID из настроек дашборда.
channelreq string WEB — десктоп · WEB_MOBILE — мобильный браузер · MOBILE_APP — приложение
location string URL текущей страницы (для Web — обязательно). Для App — deeplink или название экрана приложения (например, "screen:home", "screen:product_card").
referer string URL предыдущей страницы (для Web — обязательно; для App — опционально)
userId string ID залогиненного пользователя. Используется для персонализации. Может быть пустым.

Значения поля channel:

WEB
Десктопная версия сайта
WEB_MOBILE
Мобильная версия сайта
MOBILE_APP
Мобильное приложение
🏠
Главная страница
HOME_PAGE_VIEW
HOME_PAGE_VIEW Поведенческое

Отправляется при посещении главной страницы.

json
{
  "eventType": "HOME_PAGE_VIEW",
  "sessionId": "[UUID]",
  "location": "http://example.com/home",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP"
}
🛍️
Карточка товара
PRODUCT_VIEW
ℹ️
Отправляется при любом типе перехода — из каталога, поиска, рекламы. Важен факт посещения страницы.
PRODUCT_VIEW Поведенческое
ПолеТипОписание
productIdreq*stringID товара из фида
productNamereq*stringНазвание товара
isFromRedirectreq*stringtrue — попал по редиректу из поиска Передавать как строку "true" или "false".
availabilityreq*booleanДоступность товара
json
{
  "eventType": "PRODUCT_VIEW",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "location": "http://example.com/item/100234",
  "referer": "https://example.com/",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP",
  "availability": true,
  "productId": "100234",
  "productName": "Ноутбук Dell",
  "isFromRedirect": "true"
}
🔍
Страница поиска
SEARCH_EVENT
🚨
Важные правила:
  • Не отправлять при пустом запросе (/search/?q=)
  • Отправлять только для запросов длиной 3+ символа
  • Отправлять только один раз — не при пагинации, скролле и применении фильтров. URL не должен содержать параметры фильтрации (например, /filter/material/size или ?color=red&size=xl)
  • Передавать корректные оригинальный и исправленный запросы
  • Для нулевого запроса (нет товаров): pageProducts: []
  • Для редиректа: pageProducts: ["redirect"]
SEARCH_EVENT Аналитическое
ПолеТипОписание
searchTermreq*stringЗапрос после исправления (значение correction из API)
originalSearchTermreq*stringОригинальный запрос пользователя
pageProductsreq*string[]offer_id товаров на странице
anyQueryWorkedreq*stringtrue если originalSearchTerm ≠ searchTerm Передавать как строку "true" или "false".
isZeroQueryreq*stringЗначение поля zeroQueries из ответа API Передавать как строку "true" или "false".
isFromRedirectreq*stringtrue — попал на страницу по редиректу Передавать как строку "true" или "false".
pageNumberintegerНомер страницы (почти всегда "1")
json
{
  "eventType": "SEARCH_EVENT",
  "sessionId": "[UUID]",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "apiKey": "APIKEY",
  "channel": "WEB",
  "location": "https://example.com/search?q=процесор интел",
  "referer": "https://example.com/",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "isFromRedirect": "false",
  "isZeroQuery": "false",
  "anyQueryWorked": "true",
  "searchTerm": "процессор интел",
  "originalSearchTerm": "процесор интел",
  "pageProducts": ["11186", "13690", "13633", "14193"],
  "pageNumber": 1
}
🛒
Корзина
CART_VIEW
ℹ️
Логика cartId на шагах корзины и заказа.
Корзина: cartId всегда генерируется при попадании на страницу корзины и сохраняется в cookie.
Оформление заказа: если пользователь перешел в обход корзины, cartId генерируется; если cookie уже есть, берется значение из cookie.
Успешный заказ: cartId всегда берется из ранее созданной cookie.
Если быстрый заказ оформляется на любой странице, отличной от корзины, cartId нужно сгенерировать самостоятельно; сохранять такой id в cookie не нужно.
CART_VIEW Поведенческое
ПолеТипОписание
cartIdreq*stringID корзины. Сквозной для этапов заказа.
totalreq*stringИтоговая сумма (с доставкой). Может быть дробью.
subtotalstringПредварительная сумма без доставки
cartItemsreq*object[]Массив товаров в корзине

Структура cartItems:

ПолеТипОписание
productIdstringID товара из фида
productNamestringНазвание товара
skustringАртикул
categoryIdstringID категории товара (как category_id в фиде). Опционально.
pricestringАктуальная цена товара: цена со скидкой если скидка есть, полная цена если скидки нет
salePricestringЦена со скидкой (если она отличается от price). Опционально — используется, когда нужно отдельно передать полную и скидочную цену.
quantityintegerКоличество — только целое!
subtotalstringprice × quantity
🚨
quantity — только целое число! Дробное значение — весь объект cartItems не сохранится.
json
{
  "eventType": "CART_VIEW",
  "sessionId": "[UUID]",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "apiKey": "APIKEY",
  "channel": "WEB",
  "location": "https://example.com/cart",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "cartId": "1431227937",
  "subtotal": "17000",
  "total": "17000",
  "cartItems": [
    {
      "productId": "77077",
      "productName": "Мышь игровая",
      "price": "1000.00",
      "quantity": 2,
      "subtotal": "2000"
    }
  ]
}
🧾
Оформление заказа
ORDER_VIEW
ORDER_VIEW Опциональное

Событие просмотра страницы оформления заказа. Структурно совпадает с CART_VIEW и вызывается на странице оформления заказа.

ПолеТипОписание
cartIdreq*stringID корзины. Сквозной для этапов заказа.
totalreq*stringИтоговая сумма (с доставкой). Может быть дробью.
subtotalstringПредварительная сумма без доставки
cartItemsreq*object[]Массив товаров в заказе. Структура аналогична CART_VIEW.
json
{
  "eventType": "ORDER_VIEW",
  "sessionId": "[UUID]",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "apiKey": "APIKEY",
  "channel": "WEB",
  "location": "https://example.com/order",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "cartId": "1431227937",
  "subtotal": "17000",
  "total": "17000",
  "cartItems": [
    {
      "productId": "77077",
      "productName": "Мышь игровая",
      "price": "1000.00",
      "quantity": 2,
      "subtotal": "2000"
    }
  ]
}
Спасибо за заказ
ORDER_SUCCESS
⚠️
Рекомендуется всегда передавать полные данные заказа — total, subtotal и cartItems. Данные из ORDER_SUCCESS точнее для метрик, чем данные из CART_VIEW.

Если передать полные данные в ORDER_SUCCESS невозможно — передайте хотя бы данные в CART_VIEW с тем же cartId: система возьмёт данные оттуда.

Для быстрых заказов (1 клик) рекомендуется orderId вида: "fastOrder_" + номер заказа
ORDER_SUCCESS Поведенческое
ПолеТипОписание
cartIdreq*stringТот же cartId, что и в CART_VIEW
orderIdreq*stringНомер заказа
totalreq*stringИтоговая сумма заказа
subtotalstringПредварительная сумма без доставки
cartItemsreq*object[]Массив товаров заказа. Структура аналогична CART_VIEW.
json
{
  "eventType": "ORDER_SUCCESS",
  "sessionId": "[UUID]",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "channel": "MOBILE_APP",
  "location": "https://example.com/order/complete/ORD001",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "cartId": "1431227937",
  "subtotal": "17000",
  "total": "17000",
  "orderId": "ORD001",
  "cartItems": [
    {
      "productId": "11511",
      "productName": "Процессор AMD Ryzen",
      "price": "15000.00",
      "quantity": 1,
      "subtotal": "15000"
    }
  ]
}
🏷️
Страница бренда
BRAND_PAGE_VIEW — опционально
ℹ️
Нужно для формирования брендовых подсказок. На основе данных API autocomplete вернёт массив brands с названием и URL-ссылкой бренда.
BRAND_PAGE_VIEW Опционально
ПолеТипОписание
brandNamereq*stringНазвание бренда
pageProductsreq*string[]offer_id товаров на странице
isFromRedirectreq*stringtrue — попал по редиректу из поиска Передавать как строку "true" или "false".
breadcrumbsreq*string[]Массив хлебных крошек
pageNumberintegerНомер страницы
json
{
  "eventType": "BRAND_PAGE_VIEW",
  "sessionId": "[UUID]",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "channel": "MOBILE_APP",
  "location": "https://example.com/brands/brand-name",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "brandName": "Название бренда",
  "breadcrumbs": ["Название бренда"],
  "pageProducts": ["16874400007", "22225555444"],
  "pageNumber": 1,
  "isFromRedirect": "false"
}
📁
Страница категории
CATEGORY_VIEW — опционально
ℹ️
Нужно если в фиде у категорий не указан url. При наличии url нужно только при интеграции AI-редиректов.
CATEGORY_VIEW Опционально
ПолеТипОписание
categoryIdreq*stringID категории из фида
breadcrumbsreq*string[]Хлебные крошки (без "Главная" и "Каталог")
pageProductsreq*string[]offer_id товаров на странице
isFromRedirectreq*stringtrue — попал по редиректу из поиска Передавать как строку "true" или "false".
categoryNamestringНазвание категории
pageNumberintegerНомер страницы
json
{
  "eventType": "CATEGORY_VIEW",
  "sessionId": "[UUID]",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "apiKey": "APIKEY",
  "channel": "WEB",
  "regionId": "msk",
  "viewGUID": "[UUID]",
  "breadcrumbs": ["Комплектующие", "Процессоры", "Процессоры Intel"],
  "pageProducts": ["13690", "14193", "13633"],
  "pageNumber": 1,
  "categoryName": "Процессоры Intel",
  "categoryId": "1012",
  "isFromRedirect": "false"
}
🛍️
Добавление в корзину
CART_ADD_EVENT — используется во всех продуктах
ℹ️
Событие универсальное — отправляется при нажатии кнопки «В корзину» в любом продукте AnyQuery. Продукт-источник передаётся через поле sku.
CART_ADD_EVENT Поведенческое
ПолеТипОписание
productIdreq* string offer_id товара из фида
productNamereq* string Название товара
pricereq* string Актуальная цена товара: цена со скидкой если скидка есть, полная цена если скидки нет
skureq* string Идентификатор источника добавления. Зависит от продукта:
Рекомендации
recsClick|strategyMessage|placementName|strategyName
Пример: recsClick|Специально для вас|home_page.personalised|68fdf776
Поиск по фото
imageSearch
Отзывы (anyReviews)
product_reviews
Автоподсказки (поисковые подсказки)
autocomplete
Поиск (поисковая выдача)
instant_search

Пример — из блока рекомендаций:

json
{
  "eventType": "CART_ADD_EVENT",
  "sku": "recsClick|Специально для вас|home_page.personalised|68fdf776",
  "price": "500",
  "productId": "52",
  "productName": "Молоко Коровка, 1 литр",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}

Пример — из поиска по фото:

json
{
  "eventType": "CART_ADD_EVENT",
  "sku": "imageSearch",
  "price": "500",
  "productId": "52",
  "productName": "Молоко Коровка, 1 литр",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}

Пример — из отзывов (anyReviews):

json
{
  "eventType": "CART_ADD_EVENT",
  "sku": "product_reviews",
  "price": "500",
  "productId": "52",
  "productName": "Молоко Коровка, 1 литр",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}

Пример — из автоподсказок:

json
{
  "eventType": "CART_ADD_EVENT",
  "sku": "autocomplete",
  "price": "500",
  "productId": "52",
  "productName": "Молоко Коровка, 1 литр",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}

Пример — из поисковой выдачи:

json
{
  "eventType": "CART_ADD_EVENT",
  "sku": "instant_search",
  "price": "500",
  "productId": "52",
  "productName": "Молоко Коровка, 1 литр",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
💡
Автоподсказки (AC)
AUTOCOMPLETE_CLICK — клики по различным типам подсказок
ℹ️
Событие AUTOCOMPLETE_CLICK используется для всех типов подсказок. Тип подсказки задаётся полем autocompleteItemType.

Поля события AUTOCOMPLETE_CLICK:

ПолеТипОписание
eventTypereqstringAUTOCOMPLETE_CLICK
apiKeyreqstringКлюч клиента
sessionIdreqstringID сессии
userGUIDreqstringИдентификатор устройства/браузера
viewGUIDreq*stringID просмотра страницы
regionIdreq*stringID региона
channelreqstringКанал: WEB / WEB_MOBILE / MOBILE_APP
autocompleteItemreq*stringТекст выбранной подсказки
autocompleteItemTypereq*stringТип подсказки: brands / categories / queries / products / history / taps
originalSearchTermreq*stringОригинальный запрос пользователя (то, что набрано в строке)
searchTermreq*stringЗапрос после исправления опечаток
anyQueryWorkedreq*stringСтрока "true" или "false". "true", если originalSearchTerm ≠ searchTerm.
productIdstringoffer_id товара — только для autocompleteItemType: products
AUTOCOMPLETE_CLICK autocompleteItemType: brands Только AC-клик, не SEARCH_EVENT
json
{
  "eventType": "AUTOCOMPLETE_CLICK",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "MOBILE_APP",
  "anyQueryWorked": "true",
  "autocompleteItem": "Lacoste",
  "autocompleteItemType": "brands",
  "originalSearchTerm": "за",
  "searchTerm": "запах"
}
AUTOCOMPLETE_CLICK autocompleteItemType: categories Только AC-клик, не SEARCH_EVENT
json
{
  "eventType": "AUTOCOMPLETE_CLICK",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "MOBILE_APP",
  "anyQueryWorked": "true",
  "autocompleteItem": "пуховик",
  "autocompleteItemType": "categories",
  "originalSearchTerm": "пухови",
  "searchTerm": "пуховик"
}
AUTOCOMPLETE_CLICK autocompleteItemType: queries + SEARCH_EVENT после поиска
1
Отправить AUTOCOMPLETE_CLICK
2
Запрос заменяется на значение из подсказки, инициируется поиск
3
После отрисовки результатов — отправить SEARCH_EVENT
json
{
  "eventType": "AUTOCOMPLETE_CLICK",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP",
  "regionId": "msk",
  "anyQueryWorked": "true",
  "autocompleteItem": "пуховик",
  "autocompleteItemType": "queries",
  "originalSearchTerm": "пухови",
  "searchTerm": "пуховик"
}
AUTOCOMPLETE_CLICK autocompleteItemType: products Только AC-клик, не SEARCH_EVENT
ℹ️
Для типа products дополнительно передаётся поле productId — offer_id товара из фида.
json
{
  "eventType": "AUTOCOMPLETE_CLICK",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP",
  "regionId": "msk",
  "anyQueryWorked": "true",
  "autocompleteItem": "Виниловая Пластинка",
  "autocompleteItemType": "products",
  "productId": "424402",
  "originalSearchTerm": "винилвые пластинки",
  "searchTerm": "виниловые пластинки"
}
AUTOCOMPLETE_CLICK autocompleteItemType: history + SEARCH_EVENT после поиска
json
{
  "eventType": "AUTOCOMPLETE_CLICK",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP",
  "regionId": "msk",
  "anyQueryWorked": "false",
  "autocompleteItem": "виниловые пластинки",
  "autocompleteItemType": "history",
  "originalSearchTerm": "виниловые пластинки",
  "searchTerm": "виниловые пластинки"
}
AUTOCOMPLETE_CLICK autocompleteItemType: taps Только AC-клик, не SEARCH_EVENT
ℹ️
В autocompleteItem — скорректированный запрос целиком. Пример: ввели "мас" → correction "масло" → нажали "сливочное" → item = "масло сливочное"
json
{
  "eventType": "AUTOCOMPLETE_CLICK",
  "apiKey": "APIKEY",
  "sessionId": "[UUID]",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP",
  "regionId": "msk",
  "anyQueryWorked": "true",
  "autocompleteItem": "масло сливочное",
  "autocompleteItemType": "taps",
  "originalSearchTerm": "мас",
  "searchTerm": "масло"
}
AQ_SYNONYM_CLICK Уточнение в результатах поиска + SEARCH_EVENT после поиска
ПолеТипОписание
searchTermreq*stringПоисковый запрос
anyQuerySynonymClickedreq*stringВыбранное уточнение
anyQuerySynonymsreq*string[]Массив уточнений: taps.map(t => t.tap)
json
{
  "eventType": "AQ_SYNONYM_CLICK",
  "sessionId": "[UUID]",
  "apiKey": "APIKEY",
  "userGUID": "0:l88m8m6d:[UUID]",
  "viewGUID": "[UUID]",
  "channel": "MOBILE_APP",
  "regionId": "msk",
  "searchTerm": "мол",
  "anyQuerySynonymClicked": "молоко",
  "anyQuerySynonyms": ["молоко", "молотый", "молочный"]
}
Блоки рекомендаций
WIDGET_VIEW · WIDGET_CLICK — только при интеграции продукта рекомендаций
ℹ️
Поле strategy — строка с разделителем |:
strategyMessage|placementName|strategyName
Пример: Специально для вас|home_page.personalised|68fdf776-f6e2-3578
⚠️
Если API вернул пустой массив товаров (pageProducts: []), блок рекомендаций не отображается — отправлять события RECS_RENDER, RECS_VIEW и RECS_CLICK не нужно.
WIDGET_VIEW widgetType: RECS_RENDER При монтировании в DOM
ПолеТипОписание
eventTypereqstringWIDGET_VIEW
widgetTypereq*stringRECS_RENDER
strategyreq*stringstrategyMessage|placementName|strategyName
apiKeyreqstringКлюч клиента
sessionIdreqstringID сессии
userGUIDreqstringИдентификатор устройства/браузера
viewGUIDreq*stringID просмотра страницы
regionIdreq*stringID региона
channelreqstringКанал: WEB / WEB_MOBILE / MOBILE_APP
pageProductsstring[]offer_id товаров блока
seedstringID товаров-источников через "|" (для страниц товара и корзины)
json
{
  "eventType": "WIDGET_VIEW",
  "widgetType": "RECS_RENDER",
  "strategy": "Специально для вас|home_page.personalised|68fdf776",
  "pageProducts": ["23", "52", "55"],
  "seed": "2|3|4|5",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
WIDGET_VIEW widgetType: RECS_VIEW При появлении в зоне видимости
ПолеТипОписание
eventTypereqstringWIDGET_VIEW
widgetTypereq*stringRECS_VIEW
strategyreq*stringstrategyMessage|placementName|strategyName
apiKeyreqstringКлюч клиента
sessionIdreqstringID сессии
userGUIDreqstringИдентификатор устройства/браузера
viewGUIDreq*stringID просмотра страницы
regionIdreq*stringID региона
channelreqstringКанал: WEB / WEB_MOBILE / MOBILE_APP
pageProductsstring[]offer_id товаров блока
seedstringID товаров-источников через "|"
ℹ️
Для мобильных устройств (блок не помещается на экране) — отправлять при 20% видимости блока. Используйте IntersectionObserver.
json
{
  "eventType": "WIDGET_VIEW",
  "widgetType": "RECS_VIEW",
  "strategy": "Специально для вас|home_page.personalised|68fdf776",
  "pageProducts": ["23", "52", "55"],
  "seed": "2|3|4|5",
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
WIDGET_CLICK widgetType: RECS_CLICK
ПолеТипОписание
eventTypereqstringWIDGET_CLICK
widgetTypereq*stringRECS_CLICK / RECS_FAVORITE_CLICK / RECS_COMPARE_CLICK
strategyreq*stringstrategyMessage|placementName|strategyName
productIdreq*stringoffer_id товара
positionreq*integerПозиция в блоке (целое, с 1)
apiKeyreqstringКлюч клиента
sessionIdreqstringID сессии
userGUIDreqstringИдентификатор устройства/браузера
viewGUIDreq*stringID просмотра страницы
regionIdreq*stringID региона
channelreqstringКанал: WEB / WEB_MOBILE / MOBILE_APP
pageProductsstring[]Все товары блока
ℹ️
widgetType зависит от действия:
• Клик по карточке → RECS_CLICK
• Добавить в избранное → RECS_FAVORITE_CLICK
• Добавить в сравнение → RECS_COMPARE_CLICK
json
{
  "eventType": "WIDGET_CLICK",
  "widgetType": "RECS_CLICK",
  "strategy": "Специально для вас|home_page.personalised|68fdf776",
  "productId": "52",
  "position": 2,
  "pageProducts": ["23", "52", "55"],
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
🛍️
Добавление в корзину из блока рекомендаций — см. раздел CART_ADD_EVENT
📷
Поиск по картинкам (anyImages)
IMAGE_SEARCH — только при интеграции продукта поиска по фото
ℹ️
Все события используют widgetType: IMAGE_SEARCH. Тип действия задаётся в поле strategy.
⚠️
Если результаты поиска по фото пустые (pageProducts: []), событие open_results не отправляется, а все последующие события (click_product, CART_ADD_EVENT) не имеют смысла и отправляться не должны.
eventTypestrategyОписание
WIDGET_VIEWimage_search|view_windowКнопка появилась в зоне видимости
WIDGET_CLICKimage_search|open_windowКлик по кнопке открытия окна
WIDGET_CLICKimage_search|click_galleryКлик на фото из галереи примеров
WIDGET_CLICKimage_search|click_button_uploadКлик "Выбрать фото" / "Загрузить файл"
WIDGET_CLICKimage_search|click_button_photoКлик "Сделать фото" (камера)
WIDGET_CLICKimage_search|send_imageОтправка фото на поиск
WIDGET_CLICKimage_search|send_crop_imageИспользование кропа области
WIDGET_VIEWimage_search|open_resultsПоказ результатов (если есть товары)
WIDGET_CLICKimage_search|click_productКлик по товару в результатах
CART_ADD_EVENTsku: imageSearchДобавление в корзину — см. CART_ADD_EVENT
WIDGET_CLICKimage_search|click_button_similarКлик "Похожие" в карточке товара

Поля событий IMAGE_SEARCH:

ПолеТипОписание
eventTypereqstringWIDGET_VIEW или WIDGET_CLICK
widgetTypereq*stringIMAGE_SEARCH
strategyreq*stringТип действия, например image_search|view_window
apiKeyreqstringКлюч клиента
sessionIdreqstringID сессии
userGUIDreqstringИдентификатор устройства/браузера
viewGUIDreq*stringID просмотра страницы
regionIdreq*stringID региона
channelreqstringКанал: WEB / WEB_MOBILE / MOBILE_APP
productIdstringoffer_id товара — только для click_product
positionintegerПозиция в результатах (целое, с 1) — только для click_product
pageProductsstring[]Все товары результатов — обязательно для open_results и click_product
WIDGET_VIEW — view_window Кнопка поиска по фото видна
json
{
  "eventType": "WIDGET_VIEW",
  "widgetType": "IMAGE_SEARCH",
  "strategy": "image_search|view_window",
  "pageProducts": [],
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
WIDGET_VIEW — open_results pageProducts обязателен
⚠️
Событие отправляется только если найдены товары. При пустой выдаче — не отправлять.
json
{
  "eventType": "WIDGET_VIEW",
  "widgetType": "IMAGE_SEARCH",
  "strategy": "image_search|open_results",
  "pageProducts": ["23", "52", "55"],
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
WIDGET_CLICK — click_product Клик по товару в результатах
json
{
  "eventType": "WIDGET_CLICK",
  "widgetType": "IMAGE_SEARCH",
  "strategy": "image_search|click_product",
  "productId": "45678",
  "position": 3,
  "pageProducts": ["23", "52", "55"],
  "apiKey": "APIKEY",
  "userGUID": "0:kzmrfk1k:[UUID]",
  "sessionId": "[UUID]",
  "viewGUID": "[UUID]",
  "regionId": "msk",
  "channel": "WEB_MOBILE"
}
🛍️
Добавление в корзину из результатов поиска по фото — см. раздел CART_ADD_EVENT