Пятый фактор
Обсудить задачу
Практическая диагностика

Как проверить электронную коммерцию в Яндекс Метрике

Порядок теста событий просмотра товара, корзины, оформления и покупки без доверия к одному отчёту.

Подготовлено командой «Пятый фактор»Обновлено 30.08.2026

Отчёт с заказами ещё не доказывает, что электронная коммерция настроена правильно. Часть событий может теряться, один заказ — отправляться дважды, а идентификаторы товара — меняться между карточкой и покупкой. Надёжная проверка проходит весь путь от 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.

Официальные материалы: Решение проблем электронной коммерции, Отчёт «Содержимое заказов».

Нужна помощь

Электронная коммерция в Яндекс Метрике

видны просмотры товаров, корзина, покупки, сумма заказа, источники выручки и разрывы воронки.

19 900 ₽Посмотреть состав
Следующий шаг

Обсудим проверку и исправление

Пришлите адрес сайта и коротко опишите, что происходит. Посмотрим и подскажем, с чего начать. Если ваша ситуация немного отличается от описания, напишите — детали спокойно обсудим до договора.