Как отслеживать пользовательские события, когда Google Analytics управляется Диспетчером тегов Google?

В итоге мне пришлось использовать Диспетчер тегов Google для своего сайта, поэтому Google Analytics теперь является его частью. Все настроено правильно и работает нормально. Однако раньше я мог очень легко отслеживать пользовательские события на своем сайте, с функцией ga():

ga('send', 'event', 'Videos', 'play', 'Fall Campaign');

Однако теперь ga() больше не определена; Я получаю сообщение об ошибке в консоли, ReferenceError: ga is not defined. Затем я попробовал метод gtag(), и это тоже не работает (то же сообщение об ошибке):

gtag('event', 'aaa', {
  'event_category' : 'bbb',
  'event_label' : 'ccc'
});

Как я могу отслеживать события с помощью кода Javascript?

Чтобы было ясно, я НЕ хочу возиться с Диспетчером тегов Google. Это миллион кликов, чтобы сделать что-нибудь там. ;-) Я просто хочу вызвать Javascript напрямую, как всегда мог раньше.

У нас так много общего!

Simon_Weaver 07.09.2019 22:52

Для тех, кто хочет установить настраиваемые поля (вместо событий), особенно те, которые связаны с кампанией, ознакомьтесь с этой статьей bounteous.com/insights/2016/09/27/… Попытка сделать это в коде оказалась слишком сложной / даже невозможной.

Simon_Weaver 08.09.2019 00:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
11
2
2 018
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Диспетчер тегов Google (GTM) по умолчанию использует случайное имя для каждого трекера, сгенерированное для каждого тега Universal Analytics. AS GTM создает только именованные трекеры, поэтому трекер по умолчанию (t0) создан не будет. Поскольку средство отслеживания по умолчанию не создается, вы должны указать имя средства отслеживания самостоятельно. Следовательно, теперь вам нужно будет получить имена трекеров или каким-то образом запросить и сослаться на них, чтобы это работало, только с помощью вызова ga() непосредственно из JavaScript.

Есть возможность использовать фиксированное имя для трекеров крайне обескураженный.

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

Настройка вашего тега будет выглядеть примерно так, где вы можете ссылаться на свои настройки Analytics и все переменные, связанные с событием, из dataLayer:

Ваш код отслеживания событий будет выглядеть так:

dataLayer.push({
  'event': 'GAEvent',
  'eventCategory': 'Videos',
  'eventAction': 'play',
  'eventLabel': 'Fall campaign', 
  'eventValue': undefined,
  'eventNI': true 
});

Обратите внимание, что рекомендуется всегда устанавливать все соответствующие значения событий в dataLayer, даже если не нужно отслеживать строку или значение, чтобы никакие более ранние значения dataLayer не были унаследованы во время слияния. Кроме того, вы должны обновить флаг невзаимодействия, если это необходимо в вашем случае. Ваш триггер должен соответствовать значению клавиши event.

Спасибо за этот ответ. Что за беспорядок… по сути, это сводится к тому, что «если вы используете Диспетчер тегов Google, вы больше не можете выполнять настраиваемое отслеживание Javascript, не выполняя ТОННУ настроек внутри GTM для каждого типа вызова JS, который вы хотите сделать. " :-(

Eric 15.04.2019 12:14
Ответ принят как подходящий

Я создал новый тег «пользовательский html» в диспетчере тегов. Затем я добавил приведенный ниже код analytics.js и установил тег для активации при загрузке страницы. Это позволило мне использовать существующие вызовы ga в моем коде для запуска пользовательских событий, а не переписывать все мои события для работы с Universal Analytics через dataLayer, как предлагалось в другом ответе.

<!-- Google Analytics -->
<script>
    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    ga('create', 'UA-XXXXXXXXX-Y', 'auto');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->

Это довольно блестяще.

Eric 09.07.2019 12:26

@eric, но разве это не полностью обходит теги Universal Analytics Диспетчера тегов? Так зачем вообще использовать диспетчер тегов? Конечно, это означает, что вы не можете добавить тег GA, такой как в ответе kgrg.

Simon_Weaver 07.09.2019 23:08

Я бы хотел вообще избавиться от Диспетчера тегов, но кажется, что Google «настоятельно» рекомендует его, и их документы также сильно ориентированы на Диспетчер тегов. Я бы предпочел просто сделать все это в своем коде/программно.

Eric 08.09.2019 11:22

Теперь это старо, но как вы реализовали пользовательский тег html? Я уже два дня борюсь с dataLayer.push() и ничего не получаю. Я пытаюсь отправить пользовательские события, когда на нашем веб-сайте происходят определенные вещи, которые могут, например, исходить из возврата AJAX/SQL или чего-то в этом роде. Документы Google в лучшем случае являются базовыми. Кто больше использует onclick = ""? Спасибо!

Mark 29.01.2021 04:40

Другие вопросы по теме