Электронная коммерция
Яндекс.Метрика предоставляет возможность сбора и анализа данных, относящихся к области электронной коммерции — Ecommerce.
Подключение Ecommerce
Для подключения Ecommerce необходимо:
В разделе Настройка (Код счетчика) включить опцию Отправка в Метрику данных электронной коммерции. При этом в код счетчика будет добавлен контейнер для сбора данных
dataLayer
(по умолчанию).- Установить (или обновить) код счетчика на страницах вашего сайта, которые содержат информацию о товарах и заказах (характеристики товара, кнопка «Добавить в корзину» и пр.).
- Разместить контейнер данных dataLayer на страницах сайта и настроить передачу событий, происходящих с товарами, в Яндекс.Метрику.
var yaCounterXXXXXX = new Ya.Metrika({
id: XXXXXX,
ecommerce: true
});
Представление и передача данных
В 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 и включили Ecommerce в Яндекс.Метрике, последняя также начнет собирать данные.
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 | Number | Положение товара в списке. Например, 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 | Number | Положение товара в списке. Например, 2 |
price | Number | Цена единицы товара |
quantity | Integer | Количество единиц товара |
variant | String | Разновидность товара. Например, "Красный цвет" |
Данные о действии
Объект, содержащий данные о действии, произведенном с товаром или набором товаров.
Обрабатывается только если действие — покупка ( <actionType>
— purchase
).
Структура объекта, описывающего действие, обозначается как <actionField>.
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор покупки. Обязательно для заполнения. Пример: TRX#54321 |
coupon | String | Промокод, ассоциированный со всей покупкой целиком |
goal_id | String | ID цели (число). Указывается в том случае, если данное действие и было целью. Цель должна задаваться условием типа JavaScript событие Как узнать ID цели? |
list | String | Список, к которому можно отнести товары. Например, переход к полному описанию товара произошел из списка "С этим товаром часто смотрят". Или добавление товара в корзину произведено из списка "Дополнительные аксессуары" |
revenue | Number | Полученный доход. Если не указан, вычисляется автоматически как сумма цен всех товаров, ассоциированных с покупкой |
shipping | Number | Стоимость доставки товаров, ассоциированных с покупкой |
tax | Number | Сумма начисляемого налога |
Поле | Тип | Описание |
---|---|---|
id * | String | Идентификатор покупки. Обязательно для заполнения. Пример: TRX#54321 |
coupon | String | Промокод, ассоциированный со всей покупкой целиком |
goal_id | String | ID цели (число). Указывается в том случае, если данное действие и было целью. Цель должна задаваться условием типа JavaScript событие Как узнать ID цели? |
list | String | Список, к которому можно отнести товары. Например, переход к полному описанию товара произошел из списка "С этим товаром часто смотрят". Или добавление товара в корзину произведено из списка "Дополнительные аксессуары" |
revenue | Number | Полученный доход. Если не указан, вычисляется автоматически как сумма цен всех товаров, ассоциированных с покупкой |
shipping | Number | Стоимость доставки товаров, ассоциированных с покупкой |
tax | Number | Сумма начисляемого налога |
Примеры
Во всех примерах предполагается, что счетчик инициализирован с подключением Ecommerce, а передача данных производится через контейнер window.dataLayer.
window.dataLayer = window.dataLayer || [];
var yaCounterXXXXXX = new Ya.Metrika({
id: XXXXXX,
ecommerce: true
});
Просмотр полного описания товара
dataLayer.push({
"ecommerce": {
"detail": {
"products": [
{
"id": "P15432",
"name" : "Футболка",
"price": 477.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Красный цвет"
},
{
"name": "Значок Я",
"price": 50,
}
]
}
}
});
Добавление товара в корзину
dataLayer.push({
"ecommerce": {
"add": {
"products": [
{
"id": "43521",
"name": "Сумка Яндекс",
"price": 654.32,
"brand": "Яндекс / Яndex",
"category": "Аксессуары/Сумки",
"quantity": 2
}
]
}
}
});
Удаление товара из корзины
dataLayer.push({
"ecommerce": {
"remove": {
"products": [
{
"id": "15243",
"name": "Набор протирашек для экрана телефона - Яндекс",
"category": "Аксессуары для мобильного телефона"
}
]
}
}
});
Покупка
dataLayer.push({
"ecommerce": {
"purchase": {
"actionField": {
"id" : "TRX987",
"goal_id" : "1234567"
},
"products": [
{
"id": "25341",
"name": "Толстовка Яндекс мужская",
"price": 1345.26,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Толстовки и свитшоты",
"variant": "Оранжевый цвет"
},
{
"id": "25314",
"name": "Толстовка Яндекс женская",
"price": 1543.62,
"brand": "Яндекс / Яndex",
"category": "Одежда/Женская одежда/Толстовки и свитшоты",
"variant": "Белый цвет",
"quantity": 3
}
]
}
}
});
Решение проблем
Если информация, передаваемая с помощью Ecommerce, не отображается в отчетах Метрики, обратите внимание на следующие причины:
- Ошибки в передаваемых полях. Проверить корректность данных можно с помощью команды JSON.stringify(dataLayer) в консоли браузера. Для проверки рекомендуем обратиться к вебмастеру или другому специалисту, ответственному за поддержку сайта.
- Поле actionField не передает данные. Для передачи информации о покупке необходимо заполнить поле actionField.
- Счетчик может быть заблокирован расширением Adblock Plus.
- Посетитель ушел со страницы сайта до того, как загрузился счетчик.
- На странице установлен циклический редирект.