Передача данных об электронной коммерции
О контейнере данных и их передаче в Метрику
В Ecommerce любой товар представляет собой объект, с которым производятся определенные действия. Например, просмотр полного описания товара или добавление в корзину. Эти данные передаются в виде JavaScript-объектов, содержащих идентификатор действия и список описаний товаров, с которыми это действие произведено. В контексте JavaScript API будем называть такие объекты Ecommerce-объектами.
Чтобы передать данные в виде Ecommerce-объектов Яндекс Метрике, необходимо добавить их в JavaScript-массив window.dataLayer
в глобальном пространстве имен (window) методом push. Такой массив будем называть контейнером данных.
Контейнер данных должен находиться в глобальном пространстве имен, а его имя соответствовать имени, заданному при настройке счетчика или при инициализации счетчика. Если контейнер данных имеет название dataLayer
или счетчик Метрики был инициирован со значением параметра ecommerce равным true
, то предполагается, что контейнером данных является массив window.dataLayer
.
<script type="text/javascript">
// Инициализация кода счетчика
ym(XXXXXX, 'init', {
...
// Если настройка ecommerce включена при инициализации, то контейнером данных всегда будет window.dataLayer
// Если настройка включена через интерфейс, то название можно изменить в настройках счетчика
ecommerce: true
...
});
// Контейнер данных (JavaScript-массив) в глобальном пространстве имен (window)
window.dataLayer = window.dataLayer || [];
</script>
...
<script type="text/javascript">
// Используем метод push для добавления Ecommerce-объекта
window.dataLayer.push(
// Ecommerce-объект
{
"ecommerce": {
...
"currencyCode": "RUB",
"<actionType>": {
"actionField": <actionField>,
"products" : [<productFieldObject>, <productFieldObject>, ...]
}
...
}
}
);
</script>
Имя контейнера данных и структура вкладываемых в него Ecommerce-объектов соответствует аналогичным сущностям в Google Analytics Enhanced Ecommerce. Это означает, что если вы уже настроили отправку данных в Google Analytics Enhanced Ecommerce, в том числе через Global Site Tag, и включили Ecommerce в Яндекс Метрике, последняя начнет собирать данные. Также Метрика поддерживает Электронную торговлю (GA4) и собирает данные без дополнительных настроек.
Если вы передаете в контейнере больше данных, рекомендуем разбить заказ на части с подномерами (например, order1-1
, order1-2
, order1-3
). Так в Метрике будут отображены и заказы, и подзаказы.
Чтобы оценить фактическое количество заказов, задайте JS-цель и отправляйте ее в Метрику с одним из подзаказов. При передаче нескольких контейнеров одного заказа, поделенного на подзаказы, будет достигнута одна цель, с помощью которой можно посчитать общее количество заказов.
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>. |
promotions * | Array | Список описаний рекламной кампании, с которой было произведено указанное действие. Описание рекламных кампаний представляет собой объекты вида <promoFieldObject>. |
Поле | Тип | Описание |
---|---|---|
ecommerce * | Object | Обязательное поле-контейнер. |
currencyCode | String | Трехбуквенный код валюты по ISO 4217. Если передается другая валюта, будут отправлены нулевые значения вместо валюты и суммы. |
<actionType> * | — | Название поля (подставляемое вместо <actionType>) представляет собой идентификатор действия, произведенного с набором товаров. Возможные значения:
Если в Метрику передана информация об удалении товара, в отчете может появиться отрицательное количество товаров (при вычислениях количество удаленных из корзины товаров вычитается из общего числа добавленных товаров). Если при этом передана стоимость товара, в отчете она так же отобразится отрицательной. |
actionField ** | Object | Объект вида <actionField>. Дополнительные данные, описывающие произведенное действие. Обрабатывается, только если действие — покупка ( |
products * | Array | Список описаний товаров, с которыми было произведено указанное действие. Описания продуктов представляют собой объекты вида <productFieldObject>. |
promotions * | Array | Список описаний рекламной кампании, с которой было произведено указанное действие. Описание рекламных кампаний представляет собой объекты вида <promoFieldObject>. |
* Обязательный параметр.
** Обязательный параметр для передачи информации о покупке.
Данные о товаре
Объект, описывающий отдельный товар.
Структура объекта, описывающего товар, обозначается как <productFieldObject>.
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор товара. Например, SKU. Необходимо обязательно указать или id, или name |
name * | String | Название товара. Например, "Футболка" Необходимо обязательно указать или name, или id |
brand | String | Бренд, торговая марка, ассоциированная с товаром. Например, "Яндекс / Яndex" |
category | String | Категория, к которой относится товар. Поддерживается иерархия категорий до 5 уровней вложенности. Разделителем уровней является символ /. Например, "Одежда/Мужская одежда/Футболки" |
coupon | String | Промокод ассоциированный с товаром. Например, "PARTNER_SITE_15" |
discount | Number | Размер скидки на товар (указывается как число). |
list | String | Список, к которому относится товар. Чтобы оценивать эффективность списка на разных этапах взаимодействия пользователя с товаром, рекомендуем указывать список товара во всех событиях, которые были после просмотра списка. |
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" |
discount | Number | Размер скидки на товар (указывается как число). |
list | String | Список, к которому относится товар. Чтобы оценивать эффективность списка на разных этапах взаимодействия пользователя с товаром, рекомендуем указывать список товара во всех событиях, которые были после просмотра списка. |
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 | Полученный доход. Если не указан, вычисляется автоматически как сумма цен всех товаров, ассоциированных с покупкой |
Данные о промокампаниях
Объект, описывающий промокампании.
Контейнер такой же, но вместо <productFieldObject> записывается <promoFieldObject>.
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор промокампании. Обязательно для заполнения |
name | String | Название промокампании. |
creative | String | Название рекламного баннера. |
creative_slot | String | Слот рекламного баннера. |
position | String | Позиция рекламного баннера. |
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор промокампании. Обязательно для заполнения |
name | String | Название промокампании. |
creative | String | Название рекламного баннера. |
creative_slot | String | Слот рекламного баннера. |
position | String | Позиция рекламного баннера. |
Примеры
Для передачи информации нужно на сайте создать скрипт, который будет отвечать за определенное событие (например, формирование заказа) в описанном выше формате. Ниже представлены примеры скриптов для поддерживаемых Метрикой действий.
В примерах предполагается, что счетчик инициализирован с подключением электронной коммерции, а передача данных производится через контейнер window.dataLayer.
Просмотр списка товаров
Данные должны отправляться в момент открытия списка товаров.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"impressions": [
{
"id": "P15432",
"name" : "Футболка",
"price": 477.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Красный цвет",
"list": "Search",
"position": 1
},
{
"id": "P15435",
"name" : "Футболка",
"price": 500.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Синий цвет",
"list": "Search",
"position": 2
}
]
}
});
Клик по товару из списка
Данные должны передаваться в момент, когда пользователь совершил клик по ссылке товара.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"click": {
"products": [
{
"id": "39084",
"name": "Термостакан Яндекс",
"price": 1089.69,
"brand": "Яндекс / Яndex",
"category": "Товары для дома/Посуда/Термосы и термокружки",
"variant": "Красный цвет",
"list": "Search",
"position": 1
}
]
}
}
});
Просмотр товара
Данные должны отправляться в момент открытия страницы с карточкой товара.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"detail": {
"products": [
{
"id": "P15432",
"name" : "Футболка",
"price": 477.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Красный цвет",
"list": "Результаты поиска",
"position": 1
}
]
}
}
});
Добавление товара в корзину
Данные должны отправляться в момент добавления заказа в корзину. Например, при нажатии кнопки «Добавить в корзину».
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"add": {
"products": [
{
"id": "43521",
"name": "Сумка Яндекс",
"price": 654.32,
"brand": "Яндекс / Яndex",
"category": "Аксессуары/Сумки",
"quantity": 1,
"list": "Выдача категории",
"position": 2
}
]
}
}
});
Удаление товара из корзины
Данные должны отправляться в момент удаления заказа из корзины.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"remove": {
"products": [
{
"id": "15243",
"name": "Набор протирашек для экрана телефона - Яндекс",
"category": "Аксессуары для мобильного телефона",
"quantity": 1,
"list": "Аксессуары",
"position": 3
}
]
}
}
});
Покупка
Данные должны отправляться в момент подтверждения заказа.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"purchase": {
"actionField": {
"id" : "TRX987"
},
"products": [
{
"id": "25341",
"name": "Толстовка Яндекс мужская",
"price": 1345.26,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Толстовки и свитшоты",
"variant": "Оранжевый цвет",
"quantity": 1,
"list": "Одежда",
"position": 1
},
{
"id": "25314",
"name": "Толстовка Яндекс женская",
"price": 1543.62,
"brand": "Яндекс / Яndex",
"category": "Одежда/Женская одежда/Толстовки и свитшоты",
"variant": "Белый цвет",
"quantity": 3,
"list": "Толстовки",
"position": 2
}
]
}
}
});
Просмотр внутренней рекламы
Данные должны отправляться, когда пользователь просмотрел рекламные материалы.
dataLayer.push({
"ecommerce": {
"promoView": {
"promotions": [
{
"id": "BF001",
"name": "Черная пятница",
"creative": "Баннер_1",
"position": "Слот1"
},
{
"id": "SUMMER002",
"name": "Летние распродажи",
"creative": "Баннер_3",
"position": "Слот2"
}
]
}
}
});
Клики внутренней рекламы
Данные должны отправляться, когда пользователь кликнул или совершил другое целевое действие с рекламным материалом.
dataLayer.push({
"ecommerce": {
"promoClick": {
"promotions": [
{
"id": "BF001",
"name": "Черная пятница",
"creative": "Баннер_1",
"position": "Слот1"
}
]
}
}
});