Передача данных о товарах и действиях
О контейнере данных и их передаче в Метрику
В Ecommerce любой товар представляет собой объект, с которым производятся определенные действия. Например, просмотр полного описания товара или добавление в корзину. Эти данные передаются в виде JavaScript-объектов, содержащих идентификатор действия и список описаний товаров, с которыми это действие произведено. В контексте JavaScript API будем называть такие объекты Ecommerce-объектами.
Чтобы передать данные в виде Ecommerce-объектов Яндекс Метрике, необходимо поместить их в специальный JavaScript-массив методом push. Такой массив будем называть контейнером данных.
Контейнер данных должен находиться в глобальном пространстве имен, а его имя соответствовать имени, заданному при настройке счетчика или при инициализации счетчика. Если контейнер данных имеет название dataLayer
или счетчик Метрики был инициирован со значением параметра ecommerce равным true
, то предполагается, что контейнером данных является массив window.dataLayer
.
<script type="text/javascript">
window.dataLayer = window.dataLayer || [];
</script>
...
<script type="text/javascript">
window.dataLayer.push ({...});
</script>
Имя контейнера данных и структура вкладываемых в него Ecommerce-объектов соответствует аналогичным сущностям в Google Analytics Enhanced Ecommerce. Это означает, что если вы уже настроили отправку данных в Google Analytics Enhanced Ecommerce, в том числе через Global Site Tag, и включили Ecommerce в Яндекс Метрике, последняя начнет собирать данные. Также Метрика поддерживает Электронную торговлю (GA4) и собирает данные без дополнительных настроек.
Ecommerce-объект имеет следующий вид:
window.dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"<actionType>" : {
"actionField" : <actionField>,
"products" : [<productFieldObject>, <productFieldObject>, ...]
}
}
});
Поле | Тип | Описание |
---|---|---|
ecommerce * | Object | Обязательное поле-контейнер. |
currencyCode | String | Трехбуквенный код валюты по ISO 4217. Если передается другая валюта, будут отправлены нулевые значения вместо валюты и суммы. |
<actionType> * | — | Название поля (подставляемое вместо <actionType>) представляет собой идентификатор действия, произведенного с набором товаров. Возможные значения:
Если в Метрику передана информация об удалении товара, в отчете может появиться отрицательное количество товаров (при вычислениях количество удаленных из корзины товаров вычитается из общего числа добавленных товаров). Если при этом передана стоимость товара, в отчете она так же отобразится отрицательной. |
actionField ** | Object | Объект вида <actionField>. Дополнительные данные, описывающие произведенное действие. Обрабатывается, только если действие — покупка ( |
products * | Array | Список описаний товаров, с которыми было произведено указанное действие. Описания продуктов представляют собой объекты вида <productFieldObject>. |
Поле | Тип | Описание |
---|---|---|
ecommerce * | Object | Обязательное поле-контейнер. |
currencyCode | String | Трехбуквенный код валюты по ISO 4217. Если передается другая валюта, будут отправлены нулевые значения вместо валюты и суммы. |
<actionType> * | — | Название поля (подставляемое вместо <actionType>) представляет собой идентификатор действия, произведенного с набором товаров. Возможные значения:
Если в Метрику передана информация об удалении товара, в отчете может появиться отрицательное количество товаров (при вычислениях количество удаленных из корзины товаров вычитается из общего числа добавленных товаров). Если при этом передана стоимость товара, в отчете она так же отобразится отрицательной. |
actionField ** | Object | Объект вида <actionField>. Дополнительные данные, описывающие произведенное действие. Обрабатывается, только если действие — покупка ( |
products * | Array | Список описаний товаров, с которыми было произведено указанное действие. Описания продуктов представляют собой объекты вида <productFieldObject>. |
* Обязательный параметр.
** Обязательный параметр для передачи информации о покупке.
Данные о товаре
Объект, описывающий отдельный товар.
Структура объекта, описывающего товар, обозначается как <productFieldObject>.
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор товара. Например, SKU. Необходимо обязательно указать или id или name |
name * | String | Название товара. Например, "Футболка" Необходимо обязательно указать или name или id |
brand | String | Бренд, торговая марка, ассоциированная с товаром. Например, "Яндекс / Яndex" |
category | String | Категория, к которой относится товар. Поддерживается иерархия категорий до 5 уровней вложенности. Разделителем уровней является символ /. Например, "Одежда/Мужская одежда/Футболки" |
coupon | String | Промокод ассоциированный с товаром. Например, "PARTNER_SITE_15" |
position | Integer | Позиция товара в списке. Например, 2 |
price | Number | Цена единицы товара |
quantity | Integer | Количество единиц товара |
variant | String | Разновидность товара. Например, "Красный цвет" |
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор товара. Например, SKU. Необходимо обязательно указать или id или name |
name * | String | Название товара. Например, "Футболка" Необходимо обязательно указать или name или id |
brand | String | Бренд, торговая марка, ассоциированная с товаром. Например, "Яндекс / Яndex" |
category | String | Категория, к которой относится товар. Поддерживается иерархия категорий до 5 уровней вложенности. Разделителем уровней является символ /. Например, "Одежда/Мужская одежда/Футболки" |
coupon | String | Промокод ассоциированный с товаром. Например, "PARTNER_SITE_15" |
position | Integer | Позиция товара в списке. Например, 2 |
price | Number | Цена единицы товара |
quantity | Integer | Количество единиц товара |
variant | String | Разновидность товара. Например, "Красный цвет" |
Данные о действии
Объект, содержащий данные о действии, произведенном с товаром или набором товаров.
Обрабатывается только если действие — покупка (<actionType>
— purchase
).
Структура объекта, описывающего действие, обозначается как <actionField>.
При передаче данных о действии Метрика создает цель. Она позволяет получать данные о доходе с рекламной кампании Директа. В Директе, в списке доступных целей, такая цель отображается как «eCommerce: Покупка (счетчик № <ID счетчика>)». При этом вы можете отслеживать достижение цели самостоятельно, передавая поле goal_id.
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор покупки. Обязательно для заполнения. Пример: TRX#54321 |
coupon | String | Промокод, ассоциированный со всей покупкой целиком |
goal_id | Integer | Номер цели. Указывается в том случае, если данное действие и было целью. Цель должна задаваться условием типа JavaScript-событие. Номер цели доступен в веб-интерфейсе Яндекс Метрики, в разделе Настройка (вкладка Цели). ![]() |
revenue | Number | Полученный доход. Если не указан, вычисляется автоматически как сумма цен всех товаров, ассоциированных с покупкой |
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор покупки. Обязательно для заполнения. Пример: TRX#54321 |
coupon | String | Промокод, ассоциированный со всей покупкой целиком |
goal_id | Integer | Номер цели. Указывается в том случае, если данное действие и было целью. Цель должна задаваться условием типа JavaScript-событие. Номер цели доступен в веб-интерфейсе Яндекс Метрики, в разделе Настройка (вкладка Цели). ![]() |
revenue | Number | Полученный доход. Если не указан, вычисляется автоматически как сумма цен всех товаров, ассоциированных с покупкой |
Примеры
Для передачи информации нужно на сайте создать скрипт, который будет отвечать за определенное событие (например, формирование заказа) в описанном выше формате. Ниже представлены примеры скриптов для поддерживаемых Метрикой действий.
В примерах предполагается, что счетчик инициализирован с подключением электронной коммерции, а передача данных производится через контейнер window.dataLayer.
Просмотр товара
Данные должны отправляться в момент открытия страницы с карточкой товара.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"detail": {
"products": [
{
"id": "P15432",
"name" : "Футболка",
"price": 477.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Красный цвет"
}
]
}
}
});
Добавление товара в корзину
Данные должны отправляться в момент добавления заказа в корзину. Например, при нажатии кнопки «Добавить в корзину».
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"add": {
"products": [
{
"id": "43521",
"name": "Сумка Яндекс",
"price": 654.32,
"brand": "Яндекс / Яndex",
"category": "Аксессуары/Сумки",
"quantity": 1
}
]
}
}
});
Удаление товара из корзины
Данные должны отправляться в момент удаления заказа из корзины.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"remove": {
"products": [
{
"id": "15243",
"name": "Набор протирашек для экрана телефона - Яндекс",
"category": "Аксессуары для мобильного телефона",
"quantity": 1
}
]
}
}
});
Покупка
Данные должны отправляться в момент подтверждения заказа.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"purchase": {
"actionField": {
"id" : "TRX987"
},
"products": [
{
"id": "25341",
"name": "Толстовка Яндекс мужская",
"price": 1345.26,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Толстовки и свитшоты",
"variant": "Оранжевый цвет",
"quantity": 1
},
{
"id": "25314",
"name": "Толстовка Яндекс женская",
"price": 1543.62,
"brand": "Яндекс / Яndex",
"category": "Одежда/Женская одежда/Толстовки и свитшоты",
"variant": "Белый цвет",
"quantity": 3
}
]
}
}
});