Настройка электронной коммерции в Яндекс.Метрике для 1С-Битрикс
Без данных электронной коммерции в Яндекс.Метрике аналитика интернет-магазина сводится к подсчёту визитов и кликов. Enhanced Ecommerce раскрывает полную воронку: от просмотра карточки товара до оплаты заказа, с разбивкой по товарам, брендам и категориям. Разберём реализацию dataLayer-событий в Битрикс и методы отладки.
Принцип работы Enhanced Ecommerce
Яндекс.Метрика получает данные о транзакциях через объект dataLayer — JavaScript-массив, в который страница пушит события. Счётчик Метрики считывает события определённой структуры и отправляет их на серверы Яндекса.
Основные события:
- detail — просмотр карточки товара.
- add — добавление в корзину.
- remove — удаление из корзины.
- purchase — совершение покупки.
Каждое событие содержит объект ecommerce с массивом products. Продукт описывается полями: id, name, price, brand, category, quantity, variant.
Реализация dataLayer в 1С-Битрикс
Штатной интеграции Enhanced Ecommerce в Битрикс нет — модуль sale отправляет только базовый код счётчика. Реализация ложится на разработчика.
Событие detail — добавляется в шаблон компонента catalog.element. В result_modifier.php или template.php формируется массив товара и пушится в dataLayer:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
"ecommerce": {
"detail": {
"products": [{
"id": "SKU-1234",
"name": "Название товара",
"price": 2500,
"brand": "Бренд",
"category": "Раздел/Подраздел"
}]
}
}
});
Событие add — срабатывает при клике на кнопку «В корзину». В Битрикс добавление в корзину обычно идёт через AJAX-запрос к sale.basket.basket. Нужно перехватить успешный ответ и пушить событие. Самый надёжный способ — подписаться на кастомное JS-событие BX.onCustomEvent('OnBasketChange') или обернуть стандартный обработчик.
Событие remove — аналогично add, срабатывает при удалении из корзины. Перехватывается через тот же OnBasketChange с анализом разницы состояний корзины.
Событие purchase — самое критичное. Формируется на странице «Спасибо за заказ» (sale.order.ajax → шаблон подтверждения). Данные заказа берутся из \Bitrix\Sale\Order::load($orderId):
window.dataLayer.push({
"ecommerce": {
"purchase": {
"actionField": {
"id": "ORDER-5678",
"revenue": 7500,
"shipping": 300
},
"products": [
{"id": "SKU-1234", "name": "Товар 1", "price": 2500, "quantity": 3}
]
}
}
});
Серверная отправка через OnSaleOrderPaid. Полагаться только на клиентский dataLayer рискованно — пользователь может закрыть страницу до срабатывания скрипта. Для гарантированного учёта транзакций используется обработчик события OnSaleOrderPaid. При смене статуса оплаты на «Оплачен» серверный скрипт отправляет данные в Метрику через Measurement Protocol или записывает их в отдельную очередь для последующей загрузки через API офлайн-конверсий.
Настройка целей
В интерфейсе Яндекс.Метрики создаются цели типа «JavaScript-событие» для отслеживания конкретных действий:
| Цель | Идентификатор | Триггер |
|---|---|---|
| Просмотр карточки | product_detail |
Загрузка страницы товара |
| Добавление в корзину | add_to_cart |
Клик «В корзину» |
| Начало оформления | begin_checkout |
Переход на страницу оформления |
| Завершение заказа | purchase_complete |
Страница подтверждения |
Цели отправляются через ym(COUNTER_ID, 'reachGoal', 'add_to_cart') параллельно с dataLayer-событиями. Они дополняют ecommerce-данные и позволяют строить составные цели для воронок.
Отчёты по товарам, брендам, категориям
После настройки в Метрике появляется раздел Электронная коммерция с отчётами:
- Товары — выручка, количество покупок, средняя цена покупки для каждого товара.
-
Бренды — агрегация по полю
brandиз dataLayer. -
Категории — древовидная структура, построенная по полю
category(разделитель/). -
Промокоды и купоны — если передавать поле
couponвactionField.
Корректность отчётов полностью зависит от качества данных в dataLayer. Несогласованные id между событиями detail и purchase приведут к разрыву воронки.
Отладка
Отладка Enhanced Ecommerce — самый трудоёмкий этап. Инструменты:
Консоль браузера — после каждого действия проверяйте содержимое window.dataLayer. Команда JSON.stringify(dataLayer, null, 2) покажет все накопленные события.
Яндекс.Метрика → Параметры визитов — в отчёте «Содержание → Параметры визитов» можно увидеть, какие ecommerce-события зафиксировала Метрика. Данные появляются с задержкой 5-10 минут.
Tag Assistant от Яндекса — расширение для браузера, показывающее в реальном времени, какие данные отправляются в счётчик. Позволяет выявить: отсутствие обязательных полей, некорректный формат цены (строка вместо числа), дублирование событий.
Типичные ошибки:
- Цена передаётся как строка с пробелами (
"2 500"вместо2500) — Метрика игнорирует такие значения. - Событие
purchaseсрабатывает при каждом обновлении страницы подтверждения — дублируются транзакции. Решение: проверять флагwindow.ecommerceSentили хранить ID отправленного заказа вsessionStorage. -
categoryсодержит полный хлебных крошек вместо иерархии через/— отчёт по категориям ломается. - Не подключен контейнер ecommerce в настройках счётчика (Настройка → Электронная коммерция → галочка «Отправлять данные электронной коммерции»).







