Назад в блог

Блог

Серверный тегинг для магазина на Shopify или WooCommerce: что срабатывает, что нет и что устанавливать

Опубликовано · Обновлено · 4 мин чтения

Серверный контейнер не заставит магазин сообщать о покупках. Он пересылает то, что отправляет браузер, с вашего собственного имени хоста вместо имени Google — и это стоит того: блокировщики рекламы и Safari вместе отбрасывают заметную долю конверсий магазина. Но покупку нужно сначала отправить, а на двух платформах, на которых работает большинство магазинов, из коробки её не отправляет ничто. Это статья, которую мы хотели бы вручать каждому клиенту в первый день.

Девять событий и единственное, что у них общего

GA4 определяет девять событий для воронки покупки: view_item_list, view_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info и purchase. Имена принадлежат GA4, а не какой-либо платформе — те же девять работают для Shopify, WooCommerce и магазина, который вы написали сами.

Общий у них механизм. Каждое — это отправка в dataLayer страницы, точно под этим именем, с объектом ecommerce в форме GA4. Триггер Диспетчера тегов слушает имя; тег события GA4 читает объект ecommerce и отправляет его. Ошибитесь в имени, вложите объект на уровень глубже или отправьте его не на той странице — и тег будет вечно молчать без единой ошибки. Вот как выглядит отправка покупки:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'ORD-10442',
    value: 89.90,
    currency: 'EUR',
    items: [
      { item_id: 'SKU-118', item_name: 'Trail jacket', price: 89.90, quantity: 1 }
    ]
  }
});

Предварительная отправка ecommerce: null — не украшение. Без неё товары предыдущего события могут просочиться в следующее, и view_item трёхстраничной давности окажется внутри purchase.

Shopify: тема не видит оформление заказа

Контейнер, установленный в тему Shopify, загружается на витрине — на страницах товаров, коллекциях, в корзине. Он не загружается на странице оформления заказа и на странице благодарности, которые Shopify отдаёт со своего домена и по своим шаблонам. Поэтому контейнер в теме может отправлять view_item и add_to_cart и никогда, ни при какой настройке, не отправит begin_checkout, add_shipping_info, add_payment_info или purchase.

Эти четыре приходят из Custom Pixel. Песочница пикселей Shopify предоставляет события оформления (checkout_started, checkout_shipping_info_submitted, payment_info_submitted, checkout_completed) и позволяет пикселю отправлять в собственный dataLayer — небольшой скрипт сопоставляет каждое с именем и формой события GA4 выше. События витрины по-прежнему идут из темы, так что полная настройка включает и то и другое: приложение для dataLayer или сниппет в теме для части просмотра, Custom Pixel — для части оформления.

Ещё одно решение. Канал Google и YouTube в Shopify может отправлять события GA4 напрямую, минуя любой контейнер. Если подключить там ресурс GA4 И пропускать тот же ресурс через свой контейнер, каждая покупка будет посчитана дважды. Выберите один путь. Если цель — сбор от первого лица, путь — контейнер, а подключение Analytics в канале остаётся выключенным.

WooCommerce: ядро ничего не отправляет

Сам WooCommerce не пишет никакой dataLayer. Это делает плагин — большинство берёт GTM4WP — и его опция электронной торговли GA4 создаёт эти события в правильной форме на правильных страницах: view_item на товаре, add_to_cart на кнопке, begin_checkout на странице оформления, purchase на странице полученного заказа.

Классическая ошибка WooCommerce — удвоенная покупка, и у неё конкретная причина: страница полученного заказа перезагружается. Посетитель обновляет её, возвращается на неё от платёжного провайдера, или тема дважды перенаправляет через неё — и purchase отправляется снова с тем же transaction_id. GA4 дедуплицирует покупки по transaction_id в пределах сессии, что ловит большинство случаев, но не перезагрузку на следующий день. Настройку плагина «срабатывать один раз на заказ» стоит включить: она хранит отметку на стороне сервера, где перезагрузка не может её сбросить.

Что SignalHost строит за вас

У каждого контейнера SignalHost в веб-контейнере есть триггер пользовательского события и тег события GA4 для каждого из девяти — а также для семи, которые нужны и сайту без магазина: регистрации, пробные периоды и заявки. Все они названы с префиксом SH, поэтому никогда не конфликтуют с тем, что у вас уже есть. Каждый тег отправляет объект ecommerce прямо из dataLayer, так что items, value, currency и transaction_id проходят без отдельной переменной на поле, и каждый явно указывает ваш идентификатор потока вместо наследования.

В ваш магазин ничего не устанавливается. Триггеры слушают; отправки принадлежат плагину или пикселю. Если ваш контейнер уже отправляет одно из этих событий в GA4 собственным тегом — скажем, плагин принёс свой тег purchase, — SignalHost оставляет это событие ему и не создаёт второго тега, так что ни один заказ не считается дважды. Каждый тег также передаёт дальше event_id, который вы отправляете вместе с событием, так что рекламная платформа, получившая то же событие от собственного пикселя, засчитает его один раз.

На стороне сервера нет ничего на событие. Тег GA4 серверного контейнера пересылает каждое полученное событие, как бы оно ни называлось, так что новое событие на вашем сайте не требует изменений на нашем. Рекламные платформы, которые вы подключите, — Google Ads, Meta, TikTok, Reddit, Pinterest, Snapchat, LinkedIn — получают те же события: purchase становится Purchase для Meta и TikTok, с товарами и ценностью, и каждой платформе из одной и той же отправки достаются те события, которые ей нужны.

Проверка одним тестовым заказом

Оформите настоящий заказ в тестовом режиме или дешёвый, который потом вернёте, и наблюдайте за списком событий на странице контейнера. По порядку должны появиться view_item, add_to_cart, begin_checkout, add_payment_info и purchase — каждое по одному разу, а между ними view_cart и add_shipping_info, если ваша настройка их отправляет. Отсутствие purchase в Shopify означает, что Custom Pixel не установлен или не отправляет; отсутствие begin_checkout в WooCommerce обычно означает, что событие оформления в плагине выключено.

Если вы пропускаете конверсии Google Ads через контейнер, событием конверсии служит purchase, если вы не выберете другое, а его ценность, валюта и идентификатор транзакции читаются из того же объекта ecommerce. Отправка покупки без value записывает конверсию, которая ничего не стоит, — это реальная цифра в отчёте, и неверная.

Если и после этого GA4 насчитывает меньше заказов, чем магазин, вот почему GA4 недосчитывает и что можно вернуть.

Перестаньте терять данные из-за блокировщиков

Начните бесплатно. Запустите первый контейнер за несколько минут.