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

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

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

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

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

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

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

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

Представление и передача данных

В 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>.

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

Поля объекта
Поле Тип Описание
id *

String

Идентификатор покупки.

Обязательно для заполнения.

Пример: TRX#54321

coupon

String

Промокод, ассоциированный со всей покупкой целиком

goal_id

String

Номер цели. Указывается в том случае, если данное действие и было целью.

Цель должна задаваться условием типа JavaScript-событие.

Номер цели доступен в веб-интерфейсе Яндекс.Метрики, в разделе Настройка (вкладка Цели).

revenue

Number

Полученный доход.

Если не указан, вычисляется автоматически как сумма цен всех товаров, ассоциированных с покупкой

Примеры

Во всех примерах предполагается, что счетчик инициализирован с подключением Ecommerce, а передача данных производится через контейнер window.dataLayer.

Просмотр полного описания товара

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": "Аксессуары для мобильного телефона",
                    "quantity": 1
                }
            ]
        }
    }
});

Покупка

dataLayer.push({
    "ecommerce": {
        "purchase": {
            "actionField": {
                "id" : "TRX987"
            },
            "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.
  • Посетитель ушел со страницы сайта до того, как загрузился счетчик.
  • На странице установлен циклический редирект.