Інтеграція 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.







