Настройка Google Tag Manager и dataLayer на 1С-Битрикс

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

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

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1462
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    810
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1166

Настройка 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 || 'RUB', 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. Получите консультацию по вашему проекту — оценим объём работ и сроки. Свяжитесь с нами, чтобы обсудить детали.