Настройка электронной коммерции в Яндекс.Метрике для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка электронной коммерции в Яндекс.Метрике для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка электронной коммерции в Яндекс.Метрике для 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 в настройках счётчика (Настройка → Электронная коммерция → галочка «Отправлять данные электронной коммерции»).