Налаштування Google Tag Manager та dataLayer на 1С-Бітрікс

Налаштування Google Tag Manager на 1С-Бітрікс Уявіть: маркетолог просить додати піксель VK, через тиждень — Яндекс.Метрику, потім — ланцюжок подій для GA4. Щоразу доводиться лізти в код, правити шаблони, викочувати оновлення. Наш досвід показує: правильне встановлення Google Tag Manager на 1С-Біт
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування Google Tag Manager та dataLayer на 1С-Бітрікс
Простий
~1 день

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1466
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    811
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1167

Налаштування Google Tag Manager на 1С-Бітрікс

Уявіть: маркетолог просить додати піксель VK, через тиждень — Яндекс.Метрику, потім — ланцюжок подій для GA4. Щоразу доводиться лізти в код, правити шаблони, викочувати оновлення. Наш досвід показує: правильне встановлення Google Tag Manager на 1С-Бітрікс вирішує цю проблему раз і назавжди. Ми налаштовуємо GTM так, щоб маркетолог сам керував тегами через інтерфейс, а dataLayer автоматично передавав усі дані про покупки, кошики та перегляди.

Чому dataLayer обов'язковий для інтернет-магазину?

Без dataLayer GTM — просто порожня оболонка. Ви можете опублікувати тег GA4, але не отримаєте даних про ціну товару, категорію, ID транзакції. Для інтернет-магазину на 1С-Бітрікс dataLayer — це міст між подіями на сайті та системами аналітики. Він передає структуровані дані: item_id, item_name, price, currency, quantity. GA4, Яндекс.Метрика та інші сервіси очікують саме такий формат. Якщо dataLayer налаштовано неправильно, ви втрачаєте до 30% даних про конверсії — перевірено на десятках проєктів.

Типові помилки при інтеграції GTM в 1С-Бітрікс

Жорстке кодування ID контейнера

Часто розробники вписують GTM-XXXXXXX прямо в шаблон. При зміні контейнера (наприклад, для тестування або переходу на інший акаунт) доводиться знову редагувати файли. Ми зберігаємо ID в налаштуваннях модуля через \Bitrix\Main\Config\Option::set — це дозволяє змінювати ID через адмінку без деплою.

Відсутність тегованого кешування

1С-Бітрікс агресивно кешує сторінки. Якщо dataLayer генерується динамічно (наприклад, ціна залежить від знижки користувача), кеш може показати застарілі дані. Ми використовуємо тегований кеш і скидаємо його при зміні ціни або залишку. Без цього події view_item можуть містити невірну вартість — розбіжності з реальними замовленнями сягають до 15%.

Подія purchase тільки на сторінці замовлення

Багато хто обмежується відправкою purchase в момент оформлення. Але потрібно також передавати add_to_cart, remove_from_cart, begin_checkout. Без цих подій ви не зможете побудувати повну воронку в GA4. Ми додаємо всі ключові події, використовуючи штатні механізми Бітрікс: OnBasketChange, OnOrderSave, OnSalePayOrder.

Як ми налаштовуємо GTM: покроковий процес

  1. Аналіз поточного сайту: перевіряємо версію Бітрікс, кешування, встановлені модулі, тип торгового каталогу.
  2. Проектування dataLayer: складаємо карту подій (перегляд товару, додавання до кошика, оформлення, покупка) та погоджуємо з маркетологом.
  3. Розробка та інтеграція: додаємо код встановлення GTM в шаблон, пишемо result_modifier для компонентів каталогу та кошика, реалізуємо серверну генерацію dataLayer для подій після оплати.
  4. Тестування: перевіряємо кожну подію через Tag Assistant та консоль браузера, звіряємо дані з реальними замовленнями з 1С.
  5. Деплой та документація: заливаємо на бойовий сервер, віддаємо клієнту інструкцію по роботі з GTM.

Приклад реалізації: встановлення GTM та dataLayer

Встановлення GTM в шаблон Бітрікс

GTM вимагає два фрагменти коду: один у <head>, другий одразу після <body>. У шаблоні Бітрікс (/bitrix/templates/[name]/header.php):

<?php // ID контейнера GTM з акаунту Google Tag Manager $gtmId = \Bitrix\Main\Config\Option::get('custom', 'gtm_container_id', 'GTM-XXXXXXX'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!-- GTM в head (якомога раніше) --> <?php if ($gtmId): ?> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','<?= htmlspecialchars($gtmId) ?>');</script> <?php endif; ?> </head> <body> <!-- GTM noscript одразу після <body> --> <?php if ($gtmId): ?> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=<?= htmlspecialchars($gtmId) ?>" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <?php endif; ?> 

ID контейнера зберігати в b_option (таблиця налаштувань) через адміністративний інтерфейс — не в коді, щоб маркетолог міг змінювати без деплою.

dataLayer для сторінок товару

Для роботи розширеної електронної торгівлі (GA4 Ecommerce) потрібен dataLayer з даними товару. У шаблоні компонента bitrix:catalog.element або в result_modifier.php:

// bitrix/templates/.default/components/bitrix/catalog.element/.default/result_modifier.php if (!empty($arResult['CATALOG_PRICE']['BASE']['PRICE'])) { $product = [ 'item_id' => $arResult['ID'], 'item_name' => $arResult['NAME'], 'price' => (float)$arResult['CATALOG_PRICE']['BASE']['PRICE'], 'currency' => $arResult['CATALOG_PRICE']['BASE']['CURRENCY'], 'item_category' => $arResult['SECTION']['NAME'] ?? '', 'item_brand' => $arResult['PROPERTIES']['BRAND']['VALUE'] ?? '' ]; $this->arResult['GTM_PRODUCT'] = $product; } 

У шаблоні компонента вивести dataLayer перед закриваючим </body>:

<?php if (!empty($arResult['GTM_PRODUCT'])): ?> <script> window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'view_item', ecommerce: { currency: '<?= htmlspecialchars($arResult['GTM_PRODUCT']['currency']) ?>', value: <?= (float)$arResult['GTM_PRODUCT']['price'] ?>, items: [<?= json_encode($arResult['GTM_PRODUCT'], JSON_UNESCAPED_UNICODE) ?>] } }); </script> <?php endif; ?> 

Подія purchase після оплати

Найважливіша подія — факт покупки. У компоненті bitrix:sale.order.ajax або на сторінці «Дякуємо за замовлення»:

<?php // Отримати останнє замовлення поточного користувача $orderId = (int)($_SESSION['SALE_ORDER_ID_REDIRECTED'] ?? 0); if ($orderId > 0) { $order = \Bitrix\Sale\Order::load($orderId); if ($order) { $items = []; foreach ($order->getBasket() as $basketItem) { $items[] = [ 'item_id' => $basketItem->getProductId(), 'item_name' => $basketItem->getField('NAME'), 'price' => (float)$basketItem->getPrice(), 'quantity' => (int)$basketItem->getQuantity() ]; } ?> <script> window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'purchase', ecommerce: { transaction_id: '<?= $order->getId() ?>', value: <?= (float)$order->getPrice() ?>, currency: '<?= $order->getCurrency() ?>', items: <?= json_encode($items, JSON_UNESCAPED_UNICODE) ?> } }); </script> <?php } } ?> 

Додавання до кошика через JS

Подія add_to_cart генерується в JavaScript при кліку на кнопку «Додати до кошика». Перехопити стандартну подію Бітрікс:

// У шаблоні або в /local/templates/.default/js/analytics.js BX.addCustomEvent('OnBasketChange', function(event) { if (event.action === 'ADD') { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'add_to_cart', ecommerce: { currency: event.currency || 'UAH', value: event.price * event.quantity, items: [{ item_id: String(event.productId), item_name: event.productName || '', price: event.price, quantity: event.quantity }] } }); } }); 

Подія OnBasketChange генерується модулем sale через BX.Event при AJAX-додаванні до кошика.

Як перевірити працездатність dataLayer?

У браузері встановити розширення «Tag Assistant» від Google. Воно покаже які теги GTM спрацювали, з якими даними та чи були помилки в dataLayer. Або через консоль браузера виконайте console.table(window.dataLayer) для перегляду всіх подій.

Зберігання ID контейнера

Не жорстко кодувати GTM ID у шаблоні — використовувати b_option:

// Запис через API \Bitrix\Main\Config\Option::set('custom', 'gtm_container_id', 'GTM-XXXXXXX'); // Читання $gtmId = \Bitrix\Main\Config\Option::get('custom', 'gtm_container_id'); 

Це дозволяє змінювати ID без правки коду через адміністративний інтерфейс або через налаштування кастомного модуля.

Порівняння підходів: жорстке кодування проти налаштування через dataLayer

Критерій Жорстке кодування скриптів GTM + dataLayer
Час внесення змін 1-2 години (правка коду, деплой) 5 хвилин (через інтерфейс GTM)
Залежність від розробника Кожного разу Тільки при старті
Помилки в даних Часто (плутають валюту, ID) Рідко (dataLayer формується Бітріксом)
Підтримка GA4 Ecommerce Вимагає окремої реалізації Вбудована через dataLayer

Налаштування GTM через dataLayer у 3 рази скорочує час на додавання нових тегів і виключає помилки, пов'язані з ручним копіюванням коду.

Події dataLayer та їх тригери

Подія Тригер Дані
view_item Перегляд сторінки товару item_id, name, price, category
add_to_cart AJAX-додавання до кошика item_id, name, price, quantity
remove_from_cart AJAX-видалення з кошика item_id, name, price, quantity
begin_checkout Перехід до оформлення items, value
purchase Успішна оплата transaction_id, value, items

Що входить в результат

  • Встановлення GTM в шаблон зі зберіганням ID в налаштуваннях.
  • Інтеграція dataLayer для подій: view_item, add_to_cart, remove_from_cart, begin_checkout, purchase.
  • Налаштування тегованого кешування для динамічних даних.
  • Перевірка через Tag Assistant та консоль.
  • Документація по додаванню нових тегів в GTM.
  • Гарантія коректної передачі даних протягом 30 днів.

Чому варто довірити налаштування професіоналам?

Ми спеціалізуємося на 1С-Бітрікс та GTM понад 5 років, реалізували інтеграцію для 50+ інтернет-магазинів. Наші інженери сертифіковані по Бітрікс та Google Analytics. Ми враховуємо особливості кешування, торгових пропозицій, знижок та обміну з 1С через CommerceML. Отримайте консультацію по вашому проєкту — оцінимо обсяг робіт та терміни. Зв'яжіться з нами, щоб обговорити деталі.