Конфигурация события Google Analytics Web + App: ошибка "gtag is not defined"

Я пытаюсь настроить конфигурацию событий электронной торговли Google Analytics App + Web для веб-сайта. См. Документацию здесь.

Поскольку для конфигурации электронной коммерции существует много настраиваемого кода, я не могу использовать общий шаблон веб-событий GA App + Web, поэтому вместо этого я использую настраиваемый HTML-тег в этом случае.

В качестве первого теста я попытался запустить следующее простое событие:

<script>

  gtag('event', 'blabla', {
  'test_param1': 'test_value_1'
});

</script>

Однако событие неправильно отправляется в GA; вместо этого в консоли возвращается следующая ошибка:

Неперехваченная ошибка ссылки: gtag не определен

Для воспроизведения см. Следующую страницу: https://www.hema.nl/mooi-gezond/make-up/make-up-accessoires/toilettassen-1/toilettas-11830901.html

Дополнительная информация:

  • Инициализация базы GA App + Web (успешно) выполняется через GTM с помощью тега шаблона GA App + Webconfiguration.
  • Я также настроил несколько других (простых не связанных с электронной торговлей) событий GA App + Web через GTM с помощью тега шаблона webevent GA App + Web, и эти события успешно отправляются в GA.

Кто-нибудь знает, что не так, почему появляется ошибка консоли и почему событие не отправляется в GA?


person Timo Rietveld    schedule 05.04.2020    source источник


Ответы (2)


Короткий ответ

В дополнение к тегу GTM GA App + Web вам необходимо добавить следующий код для определения gtag ():

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
</script>

Длинный ответ

Согласно официальной документации (https://developers.google.com/analytics/devguides/collection/ga4) это код, который вы должны включить на свой сайт:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'MEASUREMENT_ID');
</script>

После проверки веб-сайта с этим тегом я обнаружил, что GTM ввел эту первую строку, которой достаточно для работы аналитики. Но он не добавил другие строки, некоторые из которых фактически определяют глобальную функцию gtag как синтаксический сахар для передачи данных на уровень данных аналитики.

Лично я нахожу это действительно странным, поскольку использование GTM - это наиболее канонический вариант добавления Google Analytics на веб-сайт, созданный той же компанией.

person Cristiano Dalbem    schedule 21.02.2021
comment
Я пришел к такому же выводу. Как вы думаете, это просто недосмотр в их документах? Это очень сбивает с толку, и в конечном итоге вы ходите по кругу. Мой браузер сообщает мне, что GTM загружает analytics.js, который загружает ec.js, и GTM также загружает gtag/js, но сгенерированный код, который они мне дают, не определяет gtag. То, что у вас есть выше, - это буквально единственный способ, которым это могло бы работать, поэтому я должен сделать вывод, что в их документах есть просто зияющая дыра. - person Simon_Weaver; 03.06.2021
comment
Также для тех, кто задается вопросом, почему это не происходит автоматически, когда вы добавляете GA4 в конфигурацию GTM в качестве нового тега: скрипт загружается асинхронно, поэтому ваша страница может продолжать загружаться, но, очевидно, где бы вы ни захотели вызвать API, вы этого не сделаете. хочу каждый раз проверять, загружается ли он. Вот что такое dataLayer, просто список команд, которые нужно выполнить, когда он будет готов. И gtag - буквально псевдоним, который нужно добавить в этот список. Весь мой существующий код просто выполнял dataLayer.push, потому что это то, что они говорят нам делать! developers.google.com/tag-manager/devguide - person Simon_Weaver; 03.06.2021
comment
Как будто однажды кто-то сказал: «А почему бы нам просто не создать псевдоним для dataLayer.push и называть его gtag?», Но не каждый получил эту памятку! - person Simon_Weaver; 03.06.2021

Причина проблемы найдена. Проблема заключалась в том, что gtag () не работает, если базовая настройка приложения + веб выполняется с помощью тега шаблона GTM App + Web base. Вместо этого событие следует сначала отправить в уровень данных GTM, а затем использовать шаблон события GTM App + Web для отправки события в Google Analytics.

Большое спасибо Джино (работающему в Merkle) за решение проблемы!

person Timo Rietveld    schedule 07.04.2020
comment
Привет, Тимо, есть ли шанс предоставить фрагмент кода решения? Спасибо! - person Johnny Saxon; 12.11.2020