В итоге мне пришлось использовать Диспетчер тегов 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 напрямую, как всегда мог раньше.
Для тех, кто хочет установить настраиваемые поля (вместо событий), особенно те, которые связаны с кампанией, ознакомьтесь с этой статьей bounteous.com/insights/2016/09/27/… Попытка сделать это в коде оказалась слишком сложной / даже невозможной.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Диспетчер тегов 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, который вы хотите сделать. " :-(
Я создал новый тег «пользовательский 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, но разве это не полностью обходит теги Universal Analytics Диспетчера тегов? Так зачем вообще использовать диспетчер тегов? Конечно, это означает, что вы не можете добавить тег GA, такой как в ответе kgrg.
Я бы хотел вообще избавиться от Диспетчера тегов, но кажется, что Google «настоятельно» рекомендует его, и их документы также сильно ориентированы на Диспетчер тегов. Я бы предпочел просто сделать все это в своем коде/программно.
Теперь это старо, но как вы реализовали пользовательский тег html? Я уже два дня борюсь с dataLayer.push() и ничего не получаю. Я пытаюсь отправить пользовательские события, когда на нашем веб-сайте происходят определенные вещи, которые могут, например, исходить из возврата AJAX/SQL или чего-то в этом роде. Документы Google в лучшем случае являются базовыми. Кто больше использует onclick = ""? Спасибо!
У нас так много общего!