Как проверить электронную коммерцию в Яндекс Метрике
Порядок теста событий просмотра товара, корзины, оформления и покупки без доверия к одному отчёту.
Отчёт с заказами ещё не доказывает, что электронная коммерция настроена правильно. Часть событий может теряться, один заказ — отправляться дважды, а идентификаторы товара — меняться между карточкой и покупкой. Надёжная проверка проходит весь путь от JavaScript-события в браузере до строки в отчёте Метрики.
Составьте карту событий
До проверки запишите, какое действие пользователя создаёт каждое событие и на какой странице оно отправляется. Так проще заметить пропуск или повтор.
- Просмотр списка и карточки товара.
- Добавление и удаление из корзины.
- Начало оформления и успешная покупка.
Сверьте параметры
Выберите один товар и один заказ, затем сравните значения в каждом событии. Проверка должна опираться на конкретные ID и суммы, а не только на наличие объекта ecommerce.
- ID, название, цена и количество должны совпадать на всех шагах.
- Валюта указывается одинаково.
- Повторная загрузка страницы успеха должна сохранять одну покупку.
Проведите контрольный заказ
Запишите время, внутренний номер заказа, состав корзины и итоговую сумму. Эти данные понадобятся, чтобы найти ту же покупку в отладчике, сетевых запросах и отчёте.
- Используйте отдельную тестовую метку.
- Сверьте браузерную отправку, отладчик и отчёт.
- Зафиксируйте, какие отмены и возвраты учитываются отдельно.
Проверьте счётчик и контейнер данных
В настройках счётчика должна быть включена электронная коммерция, а имя контейнера в настройках и на сайте должно совпадать. Для стандартного варианта код счётчика содержит параметр ecommerce:"dataLayer", а события добавляются в глобальный массив window.dataLayer.
- Счётчик установлен на карточках, в корзине и на страницах оформления.
- Событие покупки отправляется после подтверждённого создания заказа, а не при простом клике по кнопке.
- Идентификатор заказа остаётся уникальным и не отправляется повторно при обновлении страницы успеха.
Сверьте товар на каждом шаге
Возьмите один товар и проследите его от списка до покупки. Значения ID, названия, цены, количества, категории и валюты должны иметь понятные правила. Если в карточке используется ID товара, а в заказе — ID торгового предложения, отчёты могут разделить одну позицию на разные сущности.
- Проверьте варианты товара, комплекты, скидки, промокоды и бесплатные позиции.
- Сумма переданного заказа должна совпадать с выбранным правилом учёта доставки и скидок.
- Удаление из корзины и изменение количества проверяются отдельно от добавления.
Как увидеть событие до появления отчёта
Добавьте к адресу тестовой страницы параметр _ym_debug=2, выполните нужное действие и проверьте вкладку E-commerce в панели отладки. Дополнительно посмотрите содержимое dataLayer и сетевые запросы браузера. После этого дождитесь обработки данных и найдите тестовый заказ в отчёте.
Официальные материалы: Подключение электронной коммерции, Проверка настройки.
Проверьте структуру dataLayer на трёх действиях
Контейнер объявляют в глобальном пространстве window до первого события. В примерах ниже один и тот же товар сохраняет ID SKU-15432 от карточки до покупки, а покупка получает отдельный стабильный номер заказа ORDER-10452.
Просмотр карточки
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
ecommerce: {
currencyCode: "RUB",
detail: {
products: [{
id: "SKU-15432",
name: "Футболка",
price: 2490,
category: "Одежда / Футболки",
variant: "Синий / M"
}]
}
}
});Добавление в корзину
window.dataLayer.push({
ecommerce: {
currencyCode: "RUB",
add: {
products: [{
id: "SKU-15432",
name: "Футболка",
price: 2490,
quantity: 2,
variant: "Синий / M"
}]
}
}
});Подтверждённая покупка
window.dataLayer.push({
ecommerce: {
currencyCode: "RUB",
purchase: {
actionField: {
id: "ORDER-10452",
revenue: 4980
},
products: [{
id: "SKU-15432",
name: "Футболка",
price: 2490,
quantity: 2,
variant: "Синий / M"
}]
}
}
});Сопоставьте симптом с первой проверкой
Одинаковый внешний симптом может возникать на разных участках. Таблица помогает начать с ближайшего проверяемого звена.
| Симптом | Что проверить сначала | Частая причина |
|---|---|---|
| dataLayer is not defined | Объявление window.dataLayer до первого push | Контейнер создаётся позже события или имеет другое имя |
| Событие видно, заказа в отчёте нет | Номер счётчика, имя контейнера, период отчёта и время обработки | Событие ушло в другой счётчик либо данные ещё обрабатываются |
| Покупка есть без номера или сумма отличается | purchase.actionField.id, currencyCode, price и quantity | Нет обязательного ID покупки или цена и количество переданы неверно |
| Один заказ посчитан дважды | Повторный push после reload и повтор API-запроса | Покупка привязана к загрузке страницы, а не к единственному подтверждению заказа |
| Один товар разбит на несколько строк | ID в detail, add и purchase | На разных шагах используются ID товара, предложения и внутренней строки заказа |
| Сумма отличается от учётной системы | Скидки, доставка, количество, валюта и правило revenue | В событиях применяются разные правила расчёта итоговой суммы |
Защитите ID от дублей и отдельно учитывайте возвраты
Поле purchase.actionField.id — идентификатор покупки. Используйте внутренний номер заказа без телефона, email и других персональных данных. При повторном открытии страницы успеха тот же заказ не должен превращаться в новое событие purchase.
Действие remove описывает удаление товара из корзины, а не возврат уже оплаченного заказа. В стандартном наборе JavaScript-событий Метрики отдельного действия refund нет, поэтому отмены и возвраты сверяют с CRM или учётной системой. Для сквозной аналитики статусы заказов можно передавать отдельным импортом по согласованному справочнику статусов.
- Выберите единый уровень товарного ID: товар или торговое предложение. Для вариантов цвета и размера обычно нужен стабильный ID предложения.
- Храните признак уже отправленной покупки на стороне заказа или backend, а не только в памяти вкладки браузера.
- Для частичного возврата сохраняйте номер заказа, ID позиции, количество, сумму и дату возврата в учётной системе.
- Не имитируйте возврат отрицательной покупкой без документированного правила: такой payload искажает число заказов и выручку.
Официальные материалы: Формат импорта заказов и статусов.
Пройдите диагностику по слоям
Сценарий: во вкладке E-commerce отладчика виден purchase с нужным товаром, но в отчёте «Содержимое заказов» строки пока нет. Это подтверждает браузерную отправку, но ещё не подтверждает обработку тем счётчиком и попадание в выбранный отчётный период.
- Сохраните время события, номер счётчика, actionField.id и JSON отправленного объекта.
- Убедитесь, что в отладчике выбран тот же счётчик, который открыт в интерфейсе Метрики.
- Проверьте часовой пояс счётчика, диапазон дат, сегменты и фильтры отчёта.
- Для покупки проверьте actionField.id; без него данные о покупке передаются некорректно.
- Подождите обработки: после первой передачи статистика электронной коммерции может появляться в течение нескольких часов.
- Если строки нет после обработки, проверьте размер контейнера, блокировщики, ранний уход со страницы и ошибки полей, затем повторите один контрольный заказ с новым ID.
Официальные материалы: Решение проблем электронной коммерции, Отчёт «Содержимое заказов».
Электронная коммерция в Яндекс Метрике
видны просмотры товаров, корзина, покупки, сумма заказа, источники выручки и разрывы воронки.