Как проверить e-commerce-воронку в Яндекс Метрике: от списка товара до покупки
Если в e-commerce-воронке провалился один шаг, не спешите искать проблему в цене, интерфейсе или спросе. Сначала убедитесь, что Метрика вообще увидела событие: оно сработало вовремя, сохранило нужные данные и дошло до отчёта. В статье — маршрут одного тестового заказа, который помогает не спутать сбой аналитики с реальным поведением покупателей.
О чём эта статья
Провал в отчёте ещё не доказывает провал воронки
В отчёте стало меньше переходов из карточки в корзину. Первая мысль — покупателя остановили цена, ассортимент или интерфейс. Но точно такую же картину даёт технический сбой: add не отправился, товар сменил ID или Метрика ещё обрабатывает данные.
Поэтому берём один тестовый товар и проводим его по всей цепочке — от действия на сайте до строки в отчёте. Пока цепочка не сошлась, мы видим лишь разрыв в данных. Сколько продаж он действительно стоит, отчёт пока не говорит.

Что на самом деле проверяет такой тест
Метрика не видит покупателя за экраном. Она знает только то, что передал сайт: показ, клик, карточку, корзину, заказ. Надёжная проверка связывает четыре вещи: действие на странице, объект в dataLayer, запись в отладчике и данные в отчёте. Одно звено не заменяет другое.
Техническую часть проходит аналитик или разработчик. Руководителю нужна не простыня из консоли, а короткая карта: где цепочка оборвалась, что уже доказано и кому ставить задачу. И только после этого имеет смысл обсуждать, почему люди не покупают.
Из каких событий складывается путь товара
В базовой цепочке impressions отмечает показ товара в списке, click фиксирует клик, detail сообщает об открытии карточки, add — о добавлении в корзину, а purchase подтверждает заказ. Если проверяем удаление, добавляем remove. Каждое событие должно сработать в свой момент: клик по ссылке ещё не означает, что карточка загрузилась.
Внутри каждого события лежат данные о товаре. Для сверки нужны id или name и, по ситуации, list, position, price, quantity, variant. currencyCode стоит уровнем выше — внутри общего объекта ecommerce.
Лучший якорь для теста — устойчивый ID: он не должен меняться между списком, карточкой, корзиной и покупкой. Яндекс также рекомендует сохранять list после просмотра списка.
У покупки есть второй ориентир — actionField.id. Сайт отправляет его в Метрику, а команда по нему находит заказ в закрытом отчёте. С товарным ID это значение не связано.
До старта: три ID и один безопасный заказ
Чтобы потом не искать один номер вместо другого, заранее разведите три обозначения:
- код теста, например
TEST-01, связывает внутренний журнал и задачи, но может вообще не уходить в Метрику; - ID товара тянется через все товарные события и показывает, что речь по-прежнему об одном товаре;
- синтетический ID покупки уходит в
purchase.actionField.id, а затем помогает найти тестовый заказ в отчёте.
Если тест всё же использует рабочий номер заказа, оставьте его в закрытом доказательстве. В общей задаче номер можно замаскировать, но в Метрике искать придётся то значение, которое сайт действительно отправил.
Заранее договоритесь, какой товар брать, какую цену и валюту ожидать, из какого списка начинать путь и как безопасно отменить заказ. Данные клиента, платёжные сведения и токены из URL в журнал не переносят.
Затем сверьте счётчик и сайт. Электронная коммерция должна быть включена, а имя контейнера — совпадать в обоих местах. Обычно это dataLayer; параметр счётчика задают как ecommerce:true либо указывают другое имя.
Контейнер нужен на всём маршруте, а новые объекты сайт добавляет методом push. Отправку нельзя откладывать до ухода со страницы: следующая страница может открыться раньше, и событие потеряется по дороге.
Один маршрут — от списка до подтверждённого заказа
Здесь важна последовательность: один товар, один маршрут, никаких прыжков через шаг.
- Откройте выбранный список и убедитесь, что тестовый товар действительно показан.
- Перейдите в карточку именно из этого списка, а не по прямой ссылке.
- Добавьте товар в корзину; если в сценарии есть удаление, удалите его и положите снова.
- Доведите заказ до экрана, где покупка подтверждена.
Рядом с каждым шагом запишите время в одном часовом поясе. Иначе соседние тесты легко принять за одну цепочку.
Если на сайте стоит новый код счётчика, добавьте к адресу _ym_debug=2: после действия событие должно появиться в панели. Панель не открылась — переходите к _ym_debug=1, включайте сохранение журнала и смотрите стандартный контейнер через JSON.stringify(dataLayer).
Сообщение dataLayer is not defined означает, что массива на странице нет. Пустой [] говорит другое: контейнер есть, но выполненное действие ничего в него не добавило. Если объект найден, сравните его целиком с ожиданием — одной строки ecommerce мало.
В журнал перенесите три вещи: ожидаемый объект, фактический объект и отметку отладчика. Между соседними шагами сверяйте товарный ID и нужные поля, а ecommerce.currencyCode проверяйте на уровне всего объекта.
Расхождение — это ещё не диагноз. Новый ID может появиться из-за варианта товара, другого источника каталога или ошибки маппинга. Пока код и журналы не проверены, это три версии, а не три факта.
Когда и где искать тест в отчётах
Не ищите событие в отчёте сразу после клика. Обычно Метрике нужно 10–15 минут, иногда больше. Запланируйте две проверки: первую после обычного окна обработки, вторую — если данных всё ещё нет.
Отчёты собирают данные по-разному. «Списки товаров» опирается на список, позицию и название, а «Популярные товары» и «Товары в корзине» — на название. Поэтому общая строка отчёта не всегда принадлежит именно вашему тесту. Точный ID покупки ищут в «Содержимом заказов», остальные шаги связывают по времени, отладчику и доступным группировкам.
Матрицу заполняют по ходу теста: одна строка — один шаг. До запуска в ней появляется ожидание, после действия — фактический объект, отметка отладчика и результат проверки отчёта.
| Шаг | Ожидаемый объект | Момент отправки | Идентификаторы и поля | Проверка в отладчике | Проверка в отчёте | Допустимый вывод |
|---|---|---|---|---|---|---|
| Показ в списке | ecommerce.impressions[] | После показа товара в выбранном списке | Товарный ID или name, list, position, price; ecommerce.currencyCode | Объект есть, значения совпадают с ожиданием | Списки товаров: найти list, позицию и название товара; проверить учтённый показ в окне теста | Подтверждён учёт показа; при фоновом трафике строка отчёта не доказывает связь с одним тестом |
| Клик из списка | ecommerce.click.products[] | При клике по тестовому товару | Тот же товарный ID или name, list и position | Событие зарегистрировано до перехода | Списки товаров: в той же группировке проверить клик по товару | Можно сопоставить показ и клик, но не открытие карточки |
| Открытие карточки | ecommerce.detail.products[] | После открытия страницы товара | Тот же товарный ID или name, list, price, variant | Объект появился на карточке | Популярные товары: найти название товара и учтённый просмотр | Подтверждён учёт просмотра карточки в проверенном сценарии |
| Добавление в корзину | ecommerce.add.products[] | После фактического добавления | Тот же товарный ID или name, quantity, price, list | Объект соответствует состоянию корзины | Товары в корзине: найти название и проверить количество добавлений в окне теста | Подтверждён учёт добавления, но не покупки |
| Удаление из корзины | ecommerce.remove.products[] | После фактического удаления | Тот же товарный ID или name и удалённое quantity | Отправлено одно ожидаемое удаление | Товары в корзине: проверить изменение количества с учётом того, что удаление вычитается из добавлений | Подтверждён учёт удаления в выбранном сценарии |
| Подтверждение заказа | ecommerce.purchase.actionField и products[] | После подтверждения тестового заказа | Тот же товарный ID или name, quantity, price, ecommerce.currencyCode и точный синтетический actionField.id | ID покупки и товары совпадают с тестом | Содержимое заказов: найти точный ID покупки и состав; Заказанные товары: сверить название и количество | Подтверждён учёт тестовой покупки, но не полнота всех заказов |
Если отладчик событие увидел, а отчёт пока нет, сначала проверьте период и дождитесь конца окна обработки. Не гоняйте тот же заказ повторно с прежним ID: дубли только запутают картину.
Как превратить «не сходится» в нормальную задачу
Фраза «починить аналитику» бесполезна: из неё не ясно ни где сломалось, ни как принимать работу. В хорошей задаче есть место разрыва, сценарий воспроизведения и наблюдаемый результат.
Если события нет в dataLayer, укажите страницу, действие, ожидаемый объект и время теста. После исправления тот же шаг должен добавить объект в контейнер.
Объект в контейнере есть, а отладчик его не видит. Проверять нужно имя контейнера, параметр ecommerce, структуру объекта и момент перехода. Критерий приёмки простой: событие появляется при повторе.
Отладчик событие видит, отчёт — нет. Приложите код теста, время, выбранный период и название отчёта, а перед постановкой дефекта исключите неверный фильтр или группировку.
Если товар по дороге сменил ID, сохраните оба значения и страницы, где они появились. Команде нужен либо один ID на всём пути, либо понятное и проверяемое правило связи вариантов.
Если покупка задублировалась, сравните время отправки и actionField.id. Перезагрузка страницы, второй вызов скрипта и повторное использование ID остаются версиями, пока их не подтвердят журналы.
Если сумма стала нулевой, проверьте ecommerce.currencyCode, price, quantity и состав покупки. Само наличие purchase ещё ничего не говорит о корректности выручки.
Руководителю в итоге нужен короткий разбор: какие шаги подтверждены, где найден первый разрыв, как он меняет чтение воронки, кто отвечает за исправление и по какому признаку пройдёт повторный тест.
Где заканчивается проверка аналитики
После исправления пройдите тот же маршрут с новым кодом теста и новым ID покупки. Все объекты должны появиться по одному разу, сохранить связи и последовательно пройти отладчик и отчёты.
Даже если все события сошлись, результат относится только к выбранному маршруту и проверенной версии сайта. Он ничего не доказывает про весь каталог, другие способы оплаты, устройства и реальные заказы.
Когда измерение подтверждено, разрыв воронки наконец становится основанием для продуктовой гипотезы — но всё ещё не готовой причиной. Теперь его можно сопоставить с поведением, условиями покупки, ценой и ассортиментом, а затем проверить предполагаемый механизм.
Если команда не может безопасно провести заказ или связать события с отчётами, самостоятельная проверка упёрлась в предел. Тогда от аудита нужна карта расхождений и проверяемые задачи, а не обещание поднять конверсию.
Что должно остаться после проверки
- имя контейнера совпало в настройках счётчика и в коде сайта;
- товар, цена, валюта, список и три вида идентификаторов были записаны до запуска;
- у каждого шага есть ожидаемый объект, время и фактические значения;
impressions,click,detail,add, при необходимостиremoveиpurchaseпоявились в отладчике;- товар сохранил один ID между событиями, а покупка получила отдельный
actionField.id; - после обработки каждый шаг проверен в подходящем отчёте с учётом его группировок;
- наблюдаемый факт не смешан с предполагаемой причиной;
- персональные данные, токены и исходный номер рабочего заказа не ушли в общий документ;
- после исправления команда провела новый тест и сохранила результат.
Главный итог — заполненный обезличенный лог, который другой специалист сможет повторить. Без такого лога у нас есть полезная методика, но нет оснований судить о настройке конкретного магазина.
Основа материала
Источники
Передача данных об электронной коммерции. Формат контейнера, события, товарные поля и правильный момент отправки.
от 31 августа 2026 годаПроверка настройки электронной коммерции. Способы проверить счётчик, контейнер, панель _ym_debug и консоль.
от 31 августа 2026 годаОтчёты по электронной коммерции. Какие отчёты отвечают за товарные списки, корзину и покупку.
от 31 августа 2026 годаЭлектронная коммерция — шаблоны API отчётов. Группировки и показатели, из которых собраны стандартные e-commerce-отчёты.
от 31 августа 2026 годаКак работает Метрика. Как обрабатываются данные и почему в отчётах бывает задержка 10–15 минут.
от 31 августа 2026 года
Коротко
- Провал в отчёте сначала проверяют как возможный сбой измерения, а не как доказанный уход покупателя.
- Тест считается сквозным, когда действие видно на сайте, в dataLayer, отладчике и подходящем отчёте.
- Не путайте товарный ID, ID покупки и внутренний код теста: у каждого своя роль.
- Один успешный маршрут подтверждает только этот сценарий; причины потерь всё равно требуют отдельных гипотез.
- Пока нет обезличенного лога, нельзя уверенно судить о настройке конкретного магазина.
Следующий шаг
Превратите наблюдения в решения
Покажем, где клиентский путь расходится с обещаниями компании, и переведём подтверждённые отклонения в понятные задачи для команды.
Обсудить проверку