Настройка Enhanced Ecommerce в Google Analytics для 1С-Битрикс
Enhanced Ecommerce (расширенная электронная торговля) — это набор специфических событий и объектов, которые GA4 принимает для построения воронки продаж: от просмотра товара до завершённой покупки. Без этой разметки в GA4 нет отчётов по списку товаров, промокодам, поведению в воронке. На Битрикс-магазинах интеграция требует вмешательства в шаблоны компонентов каталога и корзины — коробочного решения не существует.
Структура объекта ecommerce в GA4
Каждое событие передаёт объект ecommerce с массивом items. Минимальный состав элемента:
{
item_id: 'SKU_123',
item_name: 'Название товара',
price: 1990.00,
quantity: 1,
item_category: 'Электроника',
item_brand: 'Samsung'
}
Перед каждым событием ecommerce нужно сбрасывать предыдущие данные: dataLayer.push({ ecommerce: null }).
Разметка по компонентам Битрикс
view_item_list — просмотр списка товаров (catalog.section):
В result_modifier.php компонента формируем массив items из $arResult['ITEMS']:
$items = [];
foreach ($arResult['ITEMS'] as $item) {
$items[] = [
'item_id' => $item['PROPERTIES']['ARTICLE']['VALUE'] ?: $item['ID'],
'item_name' => $item['NAME'],
'price' => (float)$item['MIN_PRICE']['PRICE'],
'item_category' => $arResult['SECTION']['NAME'],
'index' => $item['INDEX'],
];
}
$APPLICATION->AddHeadString('<script>window.__catalogItems = ' . json_encode($items) . ';</script>');
В JS-файле шаблона:
dataLayer.push({ ecommerce: null });
dataLayer.push({ event: 'view_item_list', ecommerce: { items: window.__catalogItems } });
view_item — просмотр карточки товара (catalog.element):
Аналогично, но один элемент. Данные берутся из $arResult['ITEM_PRICES'][0] и свойств товара.
add_to_cart / remove_from_cart — навешиваются на событие OnSuccessAdd2Basket / OnSuccessRemove2Basket компонента корзины.
view_cart — при загрузке страницы /basket/, данные из компонента sale.basket.basket через $arResult['BASKET_ITEMS'].
begin_checkout — при переходе к оформлению из корзины.
purchase — самое важное событие, содержит финальные данные заказа:
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: orderId,
value: orderTotal,
tax: orderTax,
shipping: orderShipping,
currency: 'RUB',
coupon: couponCode,
items: orderItems
}
});
Данные для purchase берутся из шаблона страницы спасибо (sale.order.ajax в режиме STEP=FINAL) или из $arResult компонента sale.order.result.
Воронка Enhanced Ecommerce
| Шаг | Событие GA4 | Источник данных |
|---|---|---|
| Список | view_item_list |
catalog.section, $arResult['ITEMS'] |
| Карточка | view_item |
catalog.element, $arResult['ITEM_PRICES'] |
| В корзину | add_to_cart |
событие OnSuccessAdd2Basket |
| Корзина | view_cart |
sale.basket.basket, $arResult['BASKET_ITEMS'] |
| Оформление | begin_checkout |
переход к /order/ |
| Покупка | purchase |
sale.order.ajax, ORDER_ID |
Отладка и проверка
GA4 DebugView (в реальном времени) показывает каждое событие с раскрытым объектом ecommerce. Ошибки типа «missing required field» видны там же. Отчёт Монетизация → Покупки в электронной торговле начинает заполняться через 24–48 часов после корректной настройки.
Что настраиваем
- Разметку
dataLayer.pushв шаблонахcatalog.section,catalog.element,sale.basket.basket,sale.order.ajax - GTM-теги для всех шести событий воронки с переменными Data Layer
- Передачу артикулов товаров (свойство
ARTICLE), брендов и категорий - Сброс объекта ecommerce перед каждым событием







