Перейти к содержанию
Innovialabs

Электронная торговля в GA4 через dataLayer: полная настройка

Продвинутое3 мин

Коротко

Сайт отправляет в dataLayer рекомендуемые события GA4 (view_item, add_to_cart, begin_checkout, purchase и другие) с массивом items, а GTM передаёт их в GA4 одним тегом. Главное — единая структура товаров во всех событиях, уникальный transaction_id и регулярная сверка выручки с бэкендом.

Как это устроено

GA4 строит отчёты по электронной торговле только из рекомендуемых событий с фиксированными названиями и параметрами. Схема работы:

  1. Код сайта при действии пользователя делает dataLayer.push с событием и объектом ecommerce.
  2. В Google Tag Manager триггер ловит событие.
  3. Тег события GA4 отправляет его вместе с данными электронной торговли.

Разработчик отвечает за правильный dataLayer, маркетолог — за GTM и отчёты. Договоритесь о структуре заранее и зафиксируйте её в документе.

Какие события нужны

ЭтапСобытиеКогда отправлять
Каталогview_item_listпоказан список товаров
select_itemклик по товару в списке
Карточкаview_itemоткрыта карточка товара
Корзинаadd_to_cart, remove_from_cartтовар добавлен или удалён
view_cartоткрыта корзина
Оформлениеbegin_checkoutначало оформления
add_shipping_infoвыбран способ доставки
add_payment_infoвыбран способ оплаты
Покупкаpurchaseзаказ успешно создан
Возвратrefundзаказ возвращён полностью или частично

Есть также view_promotion и select_promotion для баннеров и add_to_wishlist. Минимальный набор для работающей воронки: view_item, add_to_cart, begin_checkout, purchase.

Параметры товаров и событий

Каждое событие содержит массив items. У товара обязателен item_id или item_name, остальное — по возможности:

  • item_id, item_name — артикул и название, одинаковые во всех событиях;
  • price — цена за единицу числом, не строкой;
  • quantity — количество;
  • item_brand, item_category … item_category5, item_variant;
  • item_list_id, item_list_name, index — в каком списке и на какой позиции был товар;
  • discount, coupon.

На уровне события: currency в формате ISO 4217 (например, UZS или USD) и value. Без currency выручка не будет учтена. Для purchase обязателен transaction_id, по желанию — tax, shipping, coupon.

Пример dataLayer

Перед каждым e-commerce событием очищайте объект ecommerce, иначе данные предыдущего события могут «прилипнуть» к следующему.

window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null });
dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'ORD-10452',
    currency: 'UZS',
    value: 450000,
    shipping: 30000,
    items: [{
      item_id: 'SKU-201',
      item_name: 'Термокружка',
      item_category: 'Посуда',
      price: 150000,
      quantity: 3
    }]
  }
});

Заранее решите, входят ли в value доставка и налоги, и применяйте правило одинаково везде.

Настройка в GTM

  1. Создайте триггер «Пользовательское событие» с регулярным выражением, например view_item|add_to_cart|begin_checkout|purchase|refund.
  2. Создайте тег «Google Analytics: событие GA4» с названием события {{Event}}.
  3. В дополнительных настройках тега включите «Отправлять данные электронной торговли» с источником Data Layer.
  4. Привяжите тег к триггеру и опубликуйте контейнер после проверки.

Одного тега хватает на все события, если структура dataLayer соответствует рекомендациям Google.

Возвраты

  • Полный возврат: событие refund с transaction_id исходного заказа, currency и value.
  • Частичный: то же плюс массив items с возвращёнными товарами и количеством.

Возвраты обычно происходят в админке или CRM, а не на сайте у покупателя. Поэтому их удобнее отправлять с сервера через Measurement Protocol или загружать через импорт данных, а не через dataLayer.

Как проверить данные

  • Предварительный просмотр GTM: событие сработало, во вкладке Data Layer правильная структура.
  • DebugView в GA4: событие пришло с параметрами и товарами.
  • Сверка с бэкендом: раз в неделю сравнивайте число заказов и выручку в GA4 с базой. Небольшие расхождения нормальны (блокировщики, отказ от cookie), большие указывают на ошибку.

Частые ошибки:

  • Дубли purchase при перезагрузке страницы «Спасибо». Отправляйте событие один раз — например, по флагу на сервере.
  • Цена строкой или с пробелами и символом валюты.
  • Разные item_id в карточке и в покупке — отчёты по товарам распадаются.
  • Нет currency — выручка равна нулю.
  • Оплата на стороннем шлюзе обрывает сессию: добавьте домен шлюза в исключения рефералов.

Частые вопросы

Да, через gtag('event', 'purchase', {...}) прямо в коде сайта с теми же параметрами. GTM удобнее, когда тегов много и маркетологу нужно менять их без релиза.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.