Налаштування електронної комерції в Яндекс.Метриці для 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 не підключений у налаштуваннях лічильника (Налаштування → Електронна комерція → прапорець «Відправляти дані електронної комерції»).







