Data Layer для e‑commerce: схема для GTM и Enhanced Ecommerce
Интернет‑магазин не может расти без корректной аналитики: нужно видеть просмотры товаров, клики, добавления в корзину, шаги чекаута и оплату. Базой для этого служит data layer gtm ecommerce — единая схема передачи данных на сайт, откуда GTM отправляет события в GA4 и другие системы. Ниже — практическая схема и чек‑лист внедрения без лишней теории.
Зачем нужен единый dataLayer в e‑commerce
- Исключает разрозненные скрипты и дубли событий: единая точка правды для GTM, пикселей и серверной аналитики.
- Гарантирует сопоставимость метрик: наименование событий, валюта, налоговая модель, купоны и промо передаются одинаково.
- Ускоряет внедрение: фронтенд один раз формирует объекты, маркетолог в GTM только мапит и тестирует.
- Уменьшает потери выручки в отчётах: корректная передача дохода, налога, доставки и скидок в purchase.
Data layer GTM ecommerce: базовые принципы и структура
Структура должна быть предсказуемой, повторяемой и совместимой с GA4 и (по необходимости) Enhanced Ecommerce. Рекомендуем формировать события в формате push в window.dataLayer с полем event и объектом ecommerce.
- Контейнер: window.dataLayer = window.dataLayer || []
- Каждое действие — отдельный push с event
- Единицы измерения: currency всегда передаётся, цены — как Number с точкой
- Идентификаторы: item_id — стабильный SKU/артикул; item_name — человекочитаемое
- Контекст пользователя: при возможности добавляйте user_id, client_id, session_id в отдельные поля вне ecommerce
Ключевые сущности внутри ecommerce:
- items: массив товаров (item_id, item_name, affiliation, item_brand, item_category(1‑5), item_variant, price, quantity, coupon)
- value: итог дохода события (например, суммы корзины или заказа)
- currency: ISO‑код (RUB, USD, EUR и т. д.)
- coupon, shipping, tax, discount: для точной выручки
Соответствие событий: GA4 vs Enhanced Ecommerce
Для GA4 используйте нативные имена событий, для Enhanced Ecommerce — action с доп. полями. Ниже — минимально достаточный набор для интернет‑магазина:
- Просмотр списка товаров: event: view_item_list; items
- Показ товара (impression): для GA4 включён в view_item_list; для Enhanced — impressions
- Клик по товару: select_item; items
- Просмотр карточки: view_item; items[0] с полной категоризацией
- Добавление в корзину: add_to_cart; items, value, currency
- Удаление из корзины: remove_from_cart; items, value, currency
- Начало оформления: begin_checkout; items, value, currency, coupon
- Шаги чекаута: add_shipping_info, add_payment_info; items, shipping_tier, payment_type
- Покупка: purchase; transaction_id, affiliation, value, tax, shipping, currency, coupon, items
- Возврат: refund; transaction_id, value, currency, items (опционально)
Для старого Enhanced Ecommerce (Universal Analytics) те же действия мапятся на actionField: list, click, detail, add, remove, checkout (step), purchase, refund и массив products. Если вы остались на Enhanced для отчётности BI, храните оба формата параллельно.
Обязательные поля в событиях e‑commerce GA4
Чтобы отчёты «События eCommerce GA4» и конверсии наполнились правильно, следите за полями:
- view_item_list: item_list_id, item_list_name, items
- select_item: item_list_id или позиция в списке (index)
- view_item: items[0] с item_id, item_name, price, item_brand, item_category1…5, item_variant
- add_to_cart/remove_from_cart: items с quantity и price, value, currency
- begin_checkout: items, value, currency, coupon (если применён)
- add_shipping_info: shipping_tier, value, currency, items
- add_payment_info: payment_type, value, currency, items
- purchase: transaction_id, affiliation, value, tax, shipping, currency, coupon, items
Важно: value для purchase должен равняться сумме (итог к оплате) после скидок, но до возвратов; налоги и доставка передаются отдельными полями. Это критично для «передача дохода в аналитику».
Примеры структур для ключевых действий (без кода)
Ниже — компактные образцы полей, чтобы сверить вашу реализацию. Значения и массивы демонстрационные.
- view_item_list
- event: "view_item_list"
- ecommerce: { item_list_id, item_list_name, items: [ { item_id, item_name, item_brand, item_category1..5, price, index } ] }
- select_item
- event: "select_item"
- ecommerce: { item_list_id, item_list_name, items: [ { item_id, item_name, price, index } ] }
- view_item
- event: "view_item"
- ecommerce: { currency, value, items: [ { item_id, item_name, item_brand, item_category1..5, item_variant, price } ] }
- add_to_cart / remove_from_cart
- event: "add_to_cart" | "remove_from_cart"
- ecommerce: { currency, value, items: [ { item_id, item_name, price, quantity, coupon } ] }
- begin_checkout
- event: "begin_checkout"
- ecommerce: { currency, value, coupon, items: [ ... ] }
- add_shipping_info
- event: "add_shipping_info"
- ecommerce: { currency, value, shipping_tier, items: [ ... ] }
- add_payment_info
- event: "add_payment_info"
- ecommerce: { currency, value, payment_type, items: [ ... ] }
- purchase
- event: "purchase"
- ecommerce: { transaction_id, affiliation, currency, value, tax, shipping, coupon, discount, items: [ { item_id, item_name, price, quantity, coupon } ] }
- refund
- event: "refund"
- ecommerce: { transaction_id, currency, value, items: [ { item_id, quantity } ] }
Эти образцы покрывают product impression dataLayer (через view_item_list), отслеживание корзины gtm (add_to_cart/remove_from_cart), checkout шаги gtm (begin_checkout, add_shipping_info, add_payment_info), а также transaction dataLayer (purchase/refund).
Enhanced Ecommerce GTM: настройка параллельно с GA4
Если вам нужно вести параллельную отчётность или миграцию:
- Дублируйте внутри ecommerce блок для EE: например, ecommerce.ee = { detail: { products: [...] } } и ecommerce.ga4 = { items: [...] }. Либо генерируйте один блок и мапьте в GTM через Variables.
- Для steps чекаута храните номер шага и метод: step: 1/2/3, option: "delivery"/"card".
- Для impressions используйте массив impressions с полями id, name, brand, category, list, position, price.
- Для purchase добавляйте actionField: { id, affiliation, revenue, tax, shipping, coupon } и products.
Главное — консистентность: одинаковые SKU, списки, позиции, купоны и правила округления.
Частые ошибки и как их исправить
- Несоответствие value сумме items: пересчитайте value = Σ(price*quantity) − скидки; налог и доставка — отдельные поля.
- Смешение валют: валюта должна быть единой в сессии и совпадать с ценой товаров.
- Дубликаты purchase при повторной загрузке страницы «Спасибо»: защищайтесь idempotency: пушите purchase только один раз по успешному статусу заказа.
- item_id меняется между страницами: фиксируйте стабильный артикул/SKU.
- Отсутствуют списки (item_list_id, item_list_name): отчёты по воронке каталога пустые.
- Купон не передаётся на уровне заказа: промо видны только в товарах — итоги искажаются.
- Нет remove_from_cart: нельзя оценить эффективность корзины и реальную эластичность спроса.
Отладка и тестирование в GTM/GA4
- Включите Preview в GTM и проверьте каждый push: event, ecommerce.value, items, currency.
- В GA4 используйте «Отладчик» и «В реальном времени»: события и параметры должны совпадать 1:1 с dataLayer.
- Сверка дохода: отчёты GA4 vs бэкофис. Допустимое расхождение при онлайне — единицы процентов из‑за блокировщиков и таймаутов.
- Визуализируйте через BigQuery/BI: проверяйте, что value, tax, shipping и coupon приходят в потоках событий.
Интеграции и расширения: серверный GTM, CRM, сквозная аналитика
- Серверный GTM снижает потери из‑за блокировщиков и позволяет унифицировать отправку в GA4, рекламные пиксели и внутренние API.
- Добавьте user_id/loyalty_id в общий контекст — это упростит привязку к CRM и сквозную аналитику.
- Для end‑to‑end отчётности соединяйте purchase/refund с платежным шлюзом и CRM, чтобы подтверждать факт оплаты и возвратов.
- Подробнее о том, как выстраивается «сквозная» цепочка, читайте в материале «Сквозная аналитика: что это, как работает и кому нужна» (https://lightson.agency/blog/stati/skvoznaya-analitika-chto-eto-kak-rabotaet-i-komu-nuzhna).
Если нужен комплексный подход с архитектурой данных и внедрением, посмотрите наши услуги: Аналитика и стратегия, E-commerce и интернет-магазины и Разработка веб-приложений.
Чек‑лист внедрения dataLayer для интернет‑магазина
- Стандартизируйте item_id (SKU) и категории (item_category1..5)
- Введите единый ISO‑код валюты и правила округления
- Определите перечень событий: view_item_list, select_item, view_item, add_to_cart, remove_from_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund
- Спроектируйте объекты ecommerce: items[], value, currency, tax, shipping, coupon, discount
- Реализуйте антидубликаты для purchase (однократный пуш на успешный статус)
- Добавьте user_id/client_id/session_id вне ecommerce
- Покройте A/B‑сценарии (модалки, быстрый просмотр, SPA‑роутинг)
- Настройте триггеры и теги в GTM, проверьте префиксы и именование
- Сверьте отчёты GA4 с бэкофисом: доход, кол‑во заказов, средний чек
- Заведите мониторинг: алерты по падению количества событий и дохода
Куда это ведёт: метрики и управленческие решения
Корректный gtm ecommerce схема позволяет ответить на вопросы: какие листинги генерируют клики и выручку, где «течёт» корзина, как влияют купоны, какие шаги чекаута узкие. Это база для A/B‑тестов (см. «A/B‑тестирование: как проверять гипотезы на сайте» — https://lightson.agency/blog/stati/a-b-testirovanie-kak-proveryat-gipotezy-na-sajte) и оптимизации ROAS. Без чистого dataLayer тратить на рекламу — всё равно что вести машину с заклеенной приборкой.
Мини‑напоминание о бизнес‑процессе
- Техдок с событиями и полями → реализация на фронте → проверка в GTM → тест в GA4 → сводная сверка с бэком → запуск → мониторинг.
Вывод
Единый dataLayer — фундамент e‑commerce‑аналитики. Начните с чёткой спецификации событий GA4 и (при необходимости) Enhanced Ecommerce, обеспечьте корректную передачу дохода, корзины, купонов и шагов чекаута, протестируйте и настройте мониторинг. Если нужен аудит текущей реализации или проект «под ключ», оставьте заявку — команда LightsOn поможет спроектировать и внедрить рабочую схему.
- Узнать больше и обсудить проект:
,
,


