Я успешно установил Диспетчер тегов Google на свой веб-сайт. Я начал запускать некоторые события из Диспетчера тегов Google и вижу, как они появляются при использовании отладчика помощника по тегам. Я настроил теги, которые отправляют события в Google Analytics, и вижу, что конвейер данных работает хорошо.
Что я хотел бы сделать, так это иметь простой способ настроить все мои теги типа GA4 Event
, чтобы они не срабатывали, когда триггер происходит в непроизводственной среде. Я бы хотел, чтобы мои триггеры работали в непроизводственной среде (чтобы я мог отлаживать свои триггеры), я просто не хочу, чтобы события передавались в Google Analytics в непроизводственной среде. Есть ли простой способ настроить это в Диспетчере тегов Google?
Я заметил, что при запуске отладчика помощника по тегам есть поле с именем debug_mode
, для которого установлено значение true. Я попытался установить это в своей локальной среде следующим образом:
export function maybeSetDebugMode() {
if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') {
window?.dataLayer?.push({"debug_mode": "true"})
}
}
но похоже, что даже с этим кодом мои пользовательские события продолжают передаваться в GA:
Вообще говоря, есть ли способ настроить Диспетчер тегов, чтобы он не передавал события в GA при выполнении определенного условия (например, совпадение URL-адреса или какое-либо другое поле события, имеющее определенное значение)? Кроме того, можно ли настроить Google Analytics для игнорирования событий во время загрузки, которые соответствуют некоторым критериям?
Да, есть довольно элегантные решения для того, чтобы не отправлять события в ваш prod GA из нижних уровней или из предварительного просмотра/отладки. И да, есть способ запретить GA принимать эти события.
Я начну с первого, так как он гораздо правильнее.
Как правило, чтобы начать отправку событий в GA4 из GTM, у вас должен быть хотя бы один тег конфигурации GA4, который запрашивает идентификатор измерения. Ну, никто не заставляет вас просто дать ему идентификатор измерения. Вместо этого дайте ему CJS:
А затем просто укажите его в своем теге конфигурации следующим образом:
Как правило, это должно делать то, что вы хотите. Всякий раз, когда вы находитесь в своей нижней среде, или когда имя хоста является локальным, ну или 127.0.0.1, или когда вы просматриваете контейнер в продукте, или что-то еще, что вы считаете нужным, вы увидите, что ваши теги и триггеры срабатывают, но связанные с вами события будут перенесены в другой ресурс GA4.
Об этом другом свойстве GA4. Хорошей практикой является по-прежнему собирать события нижнего окружения, а не отправлять их в несуществующее свойство. Будет время, когда вы захотите увидеть некоторые данные тестирования. Просто не храните его в одном свойстве с вашими производственными данными, но вы это знаете.
Хорошо, теперь давайте перейдем ко второму варианту. GA4, конечно же, имеет фильтры данных. Фильтры преждевременны по сравнению со старой системой фильтрации в GA UA, как и большинство функций GA4, однако они в некоторой степени соответствуют вашим потребностям. В частности, фильтр трафика разработчиков. Вам нужно будет добавить настраиваемый параметр к каждому событию разработчика, которое вы хотели бы видеть в представлении отладки, но не отображать в отчетах.
Учитывая, насколько сырой и глючный GA4 и насколько количество фильтров в нем сейчас сильно ограничено, я бы посоветовал решить его в GTM и оставить фильтры для вещей, которые не могут быть решены через GTM. Такие вещи, как аналитический спам, если вы когда-либо его получали.
GTM имеет встроенные переменные, на которые вы можете ссылаться. Но большинство из них отключены по умолчанию. Здесь:
а затем, когда вы наберете {{ и начнете вводить имя переменной в своем CJS, вы увидите это:
просто выберите нужный вариант, и он будет автоматически заполнен для вас.
и вы должны рассматривать это как то, что возвращает эта ссылочная переменная. В основном это струны. но вы определенно можете вернуть функцию и запустить ее как {{cjs that returns a function}}(param1, param2)
. Так или иначе, мы делаем строки, так что вот:
должно быть довольно удобно в использовании. Единственная неудобная вещь со ссылкой на встроенные переменные — это то, что их сложно отлаживать в консоли, поэтому я часто просто беру свое имя хоста из глобальных переменных, например window.location.hostname
.
ссылки на переменные GTM из кода CJS всегда будут содержаться в двойных кривых: {{как так}}. У меня был этот код только в качестве примера, чтобы не усложнять. Однако в GTM есть несколько переменных для указания режима отладки и окружения GTM. Я добавлю скриншот к ответу.
Удивительно спасибо за прекрасный ответ. Это полностью решило мою проблему.
Похоже, это именно то решение, которое я ищу! Спасибо! Еще один вопрос, вы используете переменную
prod
на своем скриншоте cjs - это другая переменная GTM, которую вы установили? Какие переменные я могу использовать/иметь доступ при написании пользовательского javascript? Не могли бы вы поделиться примером того, как получить доступ к имени хоста в этом примере CJS?