Передача данных о товарах и действиях

Совет. Для работы с JavaScript API необходимы навыки работы с HTML и JavaScript. Если вы не обладаете такими навыками, обратитесь к разработчику или вебмастеру вашего сайта.
  1. О контейнере данных и их передаче в Метрику
    1. Данные о товаре
    2. Данные о действии
  2. Примеры
    1. Просмотр товара
    2. Добавление товара в корзину
    3. Удаление товара из корзины
    4. Покупка

О контейнере данных и их передаче в Метрику

В Ecommerce любой товар представляет собой объект, с которым производятся определенные действия. Например, просмотр полного описания товара или добавление в корзину. Эти данные передаются в виде JavaScript-объектов, содержащих идентификатор действия и список описаний товаров, с которыми это действие произведено. В контексте JavaScript API будем называть такие объекты Ecommerce-объектами.

Чтобы передать данные в виде Ecommerce-объектов Яндекс.Метрике, необходимо поместить их в специальный JavaScript-массив методом push. Такой массив будем называть контейнером данных.

Внимание. Не передавайте данные в момент перехода посетителя на другую страницу сайта. Например, при использовании события onclick на кнопке «Оформить заказ». В этом случае следующая страница может загрузиться раньше, чем код счетчика передаст данные в Метрику. В результате информация о событии будет потеряна.

Контейнер данных должен находиться в глобальном пространстве имен, а его имя соответствовать имени, заданному при настройке счетчика или при инициализации счетчика. Если контейнер данных имеет название 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) и собирает данные без дополнительных настроек.

Ограничение. Контейнер данных не должен содержать больше 2048 символов.

Ecommerce-объект имеет следующий вид:

window.dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "<actionType>" : {
            "actionField" : <actionField>,
            "products" : [<productFieldObject>, <productFieldObject>, ...]
        }
    }
});
Поле Тип Описание
ecommerce *

Object

Обязательное поле-контейнер.

currencyCode

String

Трехбуквенный код валюты по ISO 4217.

Если передается другая валюта, будут отправлены нулевые значения вместо валюты и суммы.

<actionType> *

Название поля (подставляемое вместо <actionType>) представляет собой идентификатор действия, произведенного с набором товаров.

Возможные значения:

  • detail — просмотр полного описания (карточки) товара;
  • add — добавление товара в корзину;
  • remove — удаление товара из корзины;
  • purchase — покупка.

Если в Метрику передана информация об удалении товара, в отчете может появиться отрицательное количество товаров (при вычислениях количество удаленных из корзины товаров вычитается из общего числа добавленных товаров). Если при этом передана стоимость товара, в отчете она так же отобразится отрицательной.

actionField **

Object

Объект вида <actionField>. Дополнительные данные, описывающие произведенное действие.

Обрабатывается, только если действие — покупка (<actionType> — purchase).

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

Разновидность товара. Например, "Красный цвет"

Данные о действии

Объект, содержащий данные о действии, произведенном с товаром или набором товаров.

Обрабатывается только если действие — покупка (<actionType>  — purchase).

Структура объекта, описывающего действие, обозначается как <actionField>.

При передаче данных о действии Метрика создает цель. Она позволяет получать данные о доходе с рекламной кампании Директа. В Директе, в списке доступных целей, такая цель отображается как «eCommerce: Покупка (счетчик № <ID счетчика>)». При этом вы можете отслеживать достижение цели самостоятельно, передавая поле goal_id.

Поля объекта
Поле Тип Описание
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
                }
            ]
        }
    }
});

Обратите внимание: служба поддержки не обзванивает пользователей. Не следуйте указаниям людей, которые вам звонят и представляются службой поддержки Яндекс.Метрики.