Электронная коммерция

Совет. Для работы с JavaScript API необходимы навыки работы с HTML и JavaScript. Если вы не обладаете такими навыками, обратитесь к разработчику или вебмастеру вашего сайта.

Яндекс.Метрика предоставляет возможность сбора и анализа данных, относящихся к области электронной коммерции — Ecommerce.

Внимание. Ранее для передачи параметров о заказах использовался предопределенный набор параметров визитов. Этот способ устарел. Он поддерживается в режиме обратной совместимости, но не рекомендуется к применению. Ecommerce-составляющая Метрики позволяет отслеживать большее количество данных и предоставляет значительно более совершенные инструменты для их анализа.

Подключение Ecommerce

Для подключения Ecommerce необходимо:

  1. В разделе Настройка (Код счетчика) включить опцию Отправка в Метрику данных электронной коммерции. При этом в код счетчика будет добавлен контейнер для сбора данных dataLayer (по умолчанию).

  2. Установить (или обновить) код счетчика на страницах вашего сайта, которые содержат информацию о товарах и заказах (характеристики товара, кнопка «Добавить в корзину» и пр.).
  3. Разместить контейнер данных 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 в Яндекс.Метрике, последняя также начнет собирать данные.

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

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

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

Object

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

currencyCode

String

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

Список поддерживаемых валют
  • RUB — российский рубль;
  • UAH — украинская гривна;
  • BYN — белорусский рубль;
  • EUR — евро;
  • USD — доллар США;
  • GBP — фунт стерлингов;
  • TRY — турецкая лира;
  • AUD — австралийский доллар;
  • CAD — канадский доллар;
  • CNY — китайский юань;
  • KZT — казахстанский тенге;
  • TMT — туркменский манат;
  • LVL — латвийский лат;
  • MDL — молдавский лей;
  • CHF — швейцарский франк;
  • THB — тайский бат;
  • YND — условные единицы.

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

<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

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

Сумма начисляемого налога

Примеры

Во всех примерах предполагается, что счетчик инициализирован с подключением 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.
  • Посетитель ушел со страницы сайта до того, как загрузился счетчик.
  • На странице установлен циклический редирект.