Как передать eCommerce-данные в Статистику от SberAds: формат, JSON-LD, Microdata

eCommerce-данные веб-счётчик получает из контейнера dataLayer: в код счётчика добавляют параметр ecommerce, затем на сайте через push передают объекты с действием (8 типов: click, detail, add, remove, checkout, checkout_option, purchase, refund) и списком товаров. Скрипт счётчика должен стоять раньше push. Для отчётов по медиа отдельно размечают материалы в формате JSON-LD или Microdata: обязательны тип, идентификатор, заголовок и дата публикации.

Цифры

Поля eCommerce-объекта

ПолеТипОбязательностьЧто передают
ecommerceobjectобязательноеконтейнер всех полей
currencyCodestringв справке не нашликод валюты ISO 4217 из трёх букв; иная валюта даст нулевые значения вместо валюты и суммы
Тип действия (actionType)stringобязательное в объектеclick, detail, add, remove, checkout, checkout_option, purchase, refund
actionFieldobjectв справке не нашлиданные о действии; справка говорит, что обрабатывается только для purchase
productsarrayобязателен для действийсписок описаний товаров
Тип промо-действия (promoActionType)stringв справке не нашлиpromoView, promoClick
promotionsarrayв справке не нашлисписок описаний рекламных акций

Типы действий

ДействиеЧто означает
clickклик по товару (ссылке на товар)
detailпросмотр полного описания (карточки) товара
addдобавление товара в корзину
removeудаление товара из корзины
checkoutпереход к оформлению покупки
checkout_optionвыбор пользователя на определённом этапе оформления
purchaseпокупка товара
refundвозврат одного или нескольких товаров
promoView / promoClickпоказ рекламной акции / клик по ней

Поля товара (products)

ПолеТипЧто передают
idstringобязательное, идентификатор товара (пример в справке: SKU)
namestringназвание; необязательное, но справка советует передавать
liststringназвание блока, где показан товар («Результаты поиска»)
brandstringбренд, торговая марка
categorystringкатегория, до 5 уровней, разделитель «/»
couponstringпромокод товара
positionnumberположение товара в списке
pricenumberитоговая цена единицы с учётом всех скидок
quantityintegerколичество единиц
variantstringразновидность («Красный цвет»)

Поля рекламной акции (promotions)

ПолеТипЧто передают
idstringобязательное, идентификатор акции
namestringназвание; необязательное, но справка советует передавать
creativestringсвязанное объявление
positionstringпозиция объявления

Поля действия (actionField)

ПолеТипЧто передают
idstringобязательное, идентификатор покупки
couponstringпромокод всей покупки
revenuenumberдоход; если не указан, считается как сумма цен товаров покупки
affiliationstringмагазин или филиал
taxnumberсумма налогов
shippingnumberстоимость доставки
liststringназвание блока, откуда товары покупки
stepnumberномер этапа оформления; для checkout и checkout_option
optionstringвыбор пользователя на этапе (например, способ оплаты); для checkout и checkout_option

Какие события слать по типам страниц

Страница или ситуацияСобытия
Карусель блоковimpressions (показ каждого блока с товарами); click при нажатии на «Подробнее»; add при нажатии на «Купить»
Список товаров (каталог, новинки)те же три: impressions, click, add
Карточка товараimpressions; detail с описанием товара (блок не указывают); click; add
Корзинаadd и remove при изменении количества; checkout при нажатии «Оформить заказ»; purchase по факту покупки
Быстрый просмотр (клик по изображению, не по «Подробнее»)detail с описанием товара; add при добавлении в корзину

Разметка материалов: обязательные сущности

СущностьJSON-LDMicrodata
Тип материалаобязательнообязательно
Идентификаторобязательнообязательно
Заголовокобязательнообязательно
Url материала или контейнеробязательноне помечен обязательным
Дата публикацииобязательнообязательно
Дата модификации, рубрика, автор, аннотация, текстнеобязательнонеобязательно
Изображениеестьв справке не нашли
Тематика, видеов справке не нашлиесть

Подробности

Настройка передачи eCommerce-данных

1. Добавить в код счётчика контейнер eCommerce-данных (по умолчанию dataLayer) параметром ecommerce. 2. Установить код на страницы сайта. Если счётчик был установлен до добавления параметра ecommerce, код нужно обновить. 3. Настроить передачу данных: разместить контейнер на страницах, затем через push передавать в него объекты с идентификатором действия и списком описаний товаров, с которыми оно произведено. Формат и рекомендации — в таблицах выше. 4. Проверить установку. Способ №1: при верной настройке на дашборде счётчика в разделе «События» появятся Ecom события. Способ №2, точнее: включить debug-режим счётчика, открыть консоль разработчика, вкладку Console, выполнить действие на сайте (например, добавить товар в корзину), найти событие и сверить поля. 5. Завести целевое событие на основе ecom-события (справка отсылает к примеру на отдельной странице). Чтобы цель уходила в рекламную кампанию, при создании цели ставят галочку «Использовать в рекламной кампании».

Порядок скриптов критичен: сначала на странице загружается код счётчика с ecommerce, и только потом выполняется скрипт, содержащий dataLayer.push.

Что показывают примеры справки

Во всех примерах счётчик инициализирован с ecommerce, а данные идут через window.dataLayer. Показаны вызовы для показа товара (impressions), клика по рекламе (promoClick), клика по карточке, просмотра описания (detail), добавления в корзину (add), удаления (remove), перехода к оформлению (checkout), выбора на этапе (checkout_option, с step и option в actionField), покупки (purchase, с id покупки в actionField и двумя товарами) и возврата (refund). В примерах валюта RUB.

Разметка Schema.org для отчётов по медиа

Отчёты по медиа дают сводку по страницам с материалами в реальном времени, показывают источники трафика и формат чтения, вовлечённость (рециркуляция, доскролл, дочтение), статистику по каждому материалу и по авторам. Для них материалы размечают словарём Schema.org в одном из двух форматов: JSON-LD или Microdata. Проверить корректность разметки можно сервисом validator.schema.org.

Тип материала задают одним из значений: Article (общий текстовый материал), NewsArticle (новости и дополнительные материалы), BlogPosting (статья блога), WebPage (подходит к любому).

Разметка материала в формате JSON-LD

Данные передаются парами ключ-значение, контекст — Schema.org.

  • Идентификатор: поле identifier; propertyID должен быть mediaId или «Article id»; значение — более 3 символов.
  • Заголовок: headline или alternativeHeadline.
  • Url и контейнер: url или mainEntityOfPage. Если в url после знака # передать id контейнера с текстом материала, размер материала вычисляется точнее; это влияет на параметры доскролла и дочтения.
  • Дата публикации: datePublished, формат ISO 8601. Дата изменения dateModified необязательна.
  • Рубрика: breadcrumbList или articleSection. Рубрикой считается значение элемента с наибольшим position.
  • Автор: author или person; несколько авторов указывают по отдельности.
  • Аннотация: abstract. Текст: articleBody, более 500 знаков и один экземпляр на странице.
  • Изображение: ImageObject; важно не описание, а количество элементов в массиве image.

Разметка материала в формате Microdata

Данные передаются стандартными элементами HTML (атрибуты itemscope, itemtype, itemprop).

  • Сущности, которые описывают материал, не должны быть вложены друг в друга: корректный сбор и отправка возможны только без вложенных сущностей.
  • Идентификатор: identifier, более 3 символов (требования к propertyID здесь нет).
  • Заголовок, дата публикации, дата изменения, аннотация и текст — те же поля и требования, что в JSON-LD. Url материала — url.
  • Рубрика: breadcrumbList или genre. Тематика: about; число тематик не ограничено, отличие от рубрик в этом.
  • Автор: author или person.
  • Видео: VideoObject; минимум полей — url, name, description, duration, thumbnail, uploadDate (дата загрузки в ISO 8601).

Важно знать

  • Название показа товаров: в таблице действий на странице формата перечня impressions нет, в примере структуры оно написано как Impressions (с заглавной) и вместе с ним опечатка ccurrencyCode, а в рекомендациях и в примерах — impressions строчными, массивом прямо в ecommerce. Какой регистр и какое место верны, проверить в debug-режиме.
  • Про actionField справка говорит и разное: «обрабатывается только для purchase», но тут же описывает step и option для checkout и checkout_option, а в примерах click передаёт list, а checkout_option — step и option. Работают ли эти поля вне покупки, не уточняется: проверять в debug-режиме.
  • Products названы обязательными для событий действий, но пример checkout_option содержит только actionField, а в примере checkout у второго товара нет id (хотя id обязателен). Пример remove и пример checkout_option показаны без currencyCode.
  • В примере promoClick поле creative передано числом, а position — строкой с названием бренда; по описанию полей это строки (объявление и позиция, например «slot_2»).
  • Допустимые коды валют полным списком не приводятся: сказано лишь, что принимается ISO 4217, а при иной валюте суммы обнуляются.
  • Картинка на дашборде (где именно появятся Ecom события) в тексте не описана; лимитов на число товаров в одном push справка не называет.
  • Разметка JSON-LD и Microdata в справке относится к отчётам по медиа, а не к покупкам: с eCommerce-данными она не связана.
  • В JSON-LD в описании поля аннотации назван abstract, а в примере — ключ description; для заголовка в примерах встречается name рядом с headline. Какие ключи читает счётчик, справка не уточняет. У поля url описан id контейнера после #, у Microdata такого описания нет.
  • Идентификатор в JSON-LD требует propertyID mediaId или «Article id», в Microdata про propertyID не сказано.