Підключення 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