Блог
Серверный тегинг для магазина на Shopify или WooCommerce: что срабатывает, что нет и что устанавливать
Опубликовано · 4 мин чтения
Серверный контейнер не заставит магазин сообщать о покупках. Он пересылает то, что отправляет браузер, с вашего собственного имени хоста вместо имени Google — и это стоит того: блокировщики рекламы и Safari вместе отбрасывают заметную долю конверсий магазина. Но покупку нужно сначала отправить, а на двух платформах, на которых работает большинство магазинов, из коробки её не отправляет ничто. Это статья, которую мы хотели бы вручать каждому клиенту в первый день.
Семь событий и единственное, что у них общего
GA4 определяет семь событий для воронки покупки: view_item_list, view_item, add_to_cart, remove_from_cart, begin_checkout, 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_payment_info или purchase.
Эти три приходят из Custom Pixel. Песочница пикселей Shopify предоставляет события оформления (checkout_started, 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 строит за вас
Сообщите мастеру, что сайт — магазин, и он добавит в ваш веб-контейнер триггер пользовательского события и тег события GA4 для каждого из семи событий — четырнадцать сущностей, все с префиксом SH, чтобы никогда не конфликтовать с тем, что у вас уже есть. Каждый тег отправляет объект ecommerce прямо из dataLayer, так что items, value, currency и transaction_id проходят без отдельной переменной на поле, и каждый явно указывает ваш идентификатор потока вместо наследования.
В ваш магазин ничего не устанавливается. Триггеры слушают; отправки принадлежат плагину или пикселю. Выбор «нет интернет-магазина» опускает четырнадцать сущностей и не меняет больше ничего — просмотры страниц, scroll и остальные стандартные события в любом случае идут через контейнер.
На стороне сервера нет ничего на событие. Тег GA4 серверного контейнера пересылает каждое полученное событие, как бы оно ни называлось, так что новое событие на вашем сайте не требует изменений на нашем. Назначения Meta Conversions API и TikTok Events API, если вы их подключите, сами сопоставляют те же семь имён; purchase становится Purchase для Meta и CompletePayment для TikTok — из одной и той же отправки.
Проверка одним тестовым заказом
Оформите настоящий заказ в тестовом режиме или дешёвый, который потом вернёте, и наблюдайте за списком событий на странице контейнера. По порядку должны появиться view_item, add_to_cart, begin_checkout, add_payment_info и purchase — каждое по одному разу. Отсутствие purchase в Shopify означает, что Custom Pixel не установлен или не отправляет; отсутствие begin_checkout в WooCommerce обычно означает, что событие оформления в плагине выключено.
Если вы пропускаете конверсии Google Ads через контейнер, purchase — событие конверсии, а его ценность, валюта и идентификатор транзакции читаются из того же объекта ecommerce. Отправка покупки без value записывает конверсию, которая ничего не стоит, — это реальная цифра в отчёте, и неверная.
