Подключение Enhanced Ecommerce Яндекс.Метрики для 1С-Битрикс

Владельцы интернет-магазинов на 1С-Битрикс часто видят в Метрике лишь счётчик визитов, упуская данные о покупках и поведении клиентов. Мы настраиваем Enhanced Ecommerce, передавая полную воронку продаж — от просмотра карточки до оплаты, с детализацией по каждому товару. Наша команда реализует интеграцию под ключ, обеспечивая корректную серверную отправку транзакций и последующую поддержку.

Подключение Enhanced Ecommerce Яндекс.Метрики для 1С-Битрикс

Аналитика и отчётыПростой~1 день
Часто задаваемые вопросы

Интеграция Enhanced Ecommerce Яндекс.Метрики с 1С-Битрикс

Мы часто сталкиваемся с ситуацией, когда владелец интернет-магазина на 1С-Битрикс считает, что достаточно установить счётчик Метрики — и данные по продажам уже в отчётах. На деле без передачи событий Enhanced Ecommerce аналитика сводится к подсчёту визитов и кликов. Наша задача — настроить полную воронку: от просмотра карточки до оплаты, с разбивкой по товарам, брендам и категориям. Enhanced Ecommerce в 3 раза точнее стандартной схемы с целями, так как передаёт детальные данные о каждом товаре. Рассмотрим реализацию 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 офлайн-конверсий. Такой подход исключает потерю данных и дублирование транзакций. Средний чек магазина при правильной настройке увеличивается на 15–20% за счёт точной атрибуции.

Технические требования для серверной отправки - PHP 8.1+ с поддержкой cURL - Битрикс версия 21+ (используется D7) - Доступ к настройкам счётчика Яндекс.Метрики (номер счётчика и OAuth-токен) - Обработчик события OnSaleOrderPaid в кастомном модуле или в файле init.php

Настройка целей

В интерфейсе Яндекс.Метрики создаются цели типа «JavaScript-событие» для отслеживания конкретных действий:

Цель Идентификатор Триггер
Просмотр карточки product_detail Загрузка страницы товара
Добавление в корзину add_to_cart Клик «В корзину»
Начало оформления begin_checkout Переход на страницу оформления
Завершение заказа purchase_complete Страница подтверждения

Цели отправляются через ym(COUNTER_ID, 'reachGoal', 'add_to_cart') параллельно с dataLayer-событиями. Они дополняют ecommerce-данные и позволяют строить составные цели для воронок.

Событие Клиентский dataLayer Серверная отправка
Надёжность Средняя (зависит от браузера) Высокая (гарантирована)
Задержка Мгновенно 1–5 минут (офлайн-конверсии)
Дублирование Возможно при обновлении страницы Исключено через проверку флага
Данные о товарах Полные Только ID и количество

Что входит в настройку электронной коммерции

Мы работаем с Битрикс 10+ лет, реализовали 150+ проектов. В стандартный пакет входит:

  • Аудит текущей структуры dataLayer и счётчика
  • Разработка событий detail, add, remove, purchase
  • Интеграция серверной отправки через OnSaleOrderPaid
  • Создание целей и воронок в Яндекс.Метрике
  • Тестирование на тестовом и боевом контурах
  • Обучение вашего менеджера работе с отчётами
  • Документация по внедрённым событиям

Отладка

Отладка Enhanced Ecommerce — самый трудоёмкий этап. Инструменты:

Консоль браузера — после каждого действия проверяйте содержимое window.dataLayer. Команда JSON.stringify(dataLayer, null, 2) покажет все накопленные события.

Яндекс.Метрика → Параметры визитов — в отчёте «Содержание → Параметры визитов» можно увидеть, какие ecommerce-события зафиксировала Метрика. Данные появляются с задержкой 5-10 минут.

Tag Assistant от Яндекса — расширение для браузера, показывающее в реальном времени, какие данные отправляются в счётчик. Позволяет выявить: отсутствие обязательных полей, некорректный формат цены (строка вместо числа), дублирование событий.

Типичные ошибки:

  • Цена передаётся как строка с пробелами ("2 500" вместо 2500) — Метрика игнорирует такие значения.
  • Событие purchase срабатывает при каждом обновлении страницы подтверждения — дублируются транзакции. Решение: проверять флаг window.ecommerceSent или хранить ID отправленного заказа в sessionStorage.
  • category содержит полный хлебных крошек вместо иерархии через / — отчёт по категориям ломается.
  • Не подключен контейнер ecommerce в настройках счётчика (Настройка → Электронная коммерция → галочка «Отправлять данные электронной коммерции»).

Хотите настроить полную аналитику продаж? Свяжитесь с нами — оценим ваш проект за 1 день. Получите консультацию по интеграции Enhanced Ecommerce.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223