Как передать eCommerce-данные в Статистику от SberAds: формат, JSON-LD, Microdata
eCommerce-данные веб-счётчик получает из контейнера dataLayer: в код счётчика добавляют параметр ecommerce, затем на сайте через push передают объекты с действием (8 типов: click, detail, add, remove, checkout, checkout_option, purchase, refund) и списком товаров. Скрипт счётчика должен стоять раньше push. Для отчётов по медиа отдельно размечают материалы в формате JSON-LD или Microdata: обязательны тип, идентификатор, заголовок и дата публикации.
Цифры
Поля eCommerce-объекта
| Поле | Тип | Обязательность | Что передают |
|---|---|---|---|
| ecommerce | object | обязательное | контейнер всех полей |
| currencyCode | string | в справке не нашли | код валюты ISO 4217 из трёх букв; иная валюта даст нулевые значения вместо валюты и суммы |
| Тип действия (actionType) | string | обязательное в объекте | click, detail, add, remove, checkout, checkout_option, purchase, refund |
| actionField | object | в справке не нашли | данные о действии; справка говорит, что обрабатывается только для purchase |
| products | array | обязателен для действий | список описаний товаров |
| Тип промо-действия (promoActionType) | string | в справке не нашли | promoView, promoClick |
| promotions | array | в справке не нашли | список описаний рекламных акций |
Типы действий
| Действие | Что означает |
|---|---|
| click | клик по товару (ссылке на товар) |
| detail | просмотр полного описания (карточки) товара |
| add | добавление товара в корзину |
| remove | удаление товара из корзины |
| checkout | переход к оформлению покупки |
| checkout_option | выбор пользователя на определённом этапе оформления |
| purchase | покупка товара |
| refund | возврат одного или нескольких товаров |
| promoView / promoClick | показ рекламной акции / клик по ней |
Поля товара (products)
| Поле | Тип | Что передают |
|---|---|---|
| id | string | обязательное, идентификатор товара (пример в справке: SKU) |
| name | string | название; необязательное, но справка советует передавать |
| list | string | название блока, где показан товар («Результаты поиска») |
| brand | string | бренд, торговая марка |
| category | string | категория, до 5 уровней, разделитель «/» |
| coupon | string | промокод товара |
| position | number | положение товара в списке |
| price | number | итоговая цена единицы с учётом всех скидок |
| quantity | integer | количество единиц |
| variant | string | разновидность («Красный цвет») |
Поля рекламной акции (promotions)
| Поле | Тип | Что передают |
|---|---|---|
| id | string | обязательное, идентификатор акции |
| name | string | название; необязательное, но справка советует передавать |
| creative | string | связанное объявление |
| position | string | позиция объявления |
Поля действия (actionField)
| Поле | Тип | Что передают |
|---|---|---|
| id | string | обязательное, идентификатор покупки |
| coupon | string | промокод всей покупки |
| revenue | number | доход; если не указан, считается как сумма цен товаров покупки |
| affiliation | string | магазин или филиал |
| tax | number | сумма налогов |
| shipping | number | стоимость доставки |
| list | string | название блока, откуда товары покупки |
| step | number | номер этапа оформления; для checkout и checkout_option |
| option | string | выбор пользователя на этапе (например, способ оплаты); для checkout и checkout_option |
Какие события слать по типам страниц
| Страница или ситуация | События |
|---|---|
| Карусель блоков | impressions (показ каждого блока с товарами); click при нажатии на «Подробнее»; add при нажатии на «Купить» |
| Список товаров (каталог, новинки) | те же три: impressions, click, add |
| Карточка товара | impressions; detail с описанием товара (блок не указывают); click; add |
| Корзина | add и remove при изменении количества; checkout при нажатии «Оформить заказ»; purchase по факту покупки |
| Быстрый просмотр (клик по изображению, не по «Подробнее») | detail с описанием товара; add при добавлении в корзину |
Разметка материалов: обязательные сущности
| Сущность | JSON-LD | Microdata |
|---|---|---|
| Тип материала | обязательно | обязательно |
| Идентификатор | обязательно | обязательно |
| Заголовок | обязательно | обязательно |
| 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 не сказано.