События, которые не отслеживаются в новой настройке Google Analytics (analytics.js)

У меня есть веб-сайт, на котором я использую новую универсальную аналитику (analytics.js) для отслеживания. Все настроено и работает (просмотры страниц, рефералы и т.д.), Используя следующий фрагмент кода:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-39570713-1', 'site.com');
  ga('send', 'pageview');

</script>

Это находится перед тегом </head>.

Я использую JQuery для запуска события. Я тестировал JQuery с предупреждающим сообщением, и он получает вызов, так что это не проблема. Вот фрагмент, который срабатывает при нажатии кнопки:

$('#submitButton').on('click', function() {
      ga('send', 'event', 'button', 'click', 'contact form');
    });

Ничего не появляется в разделе События в Google Analytics. Я все время нажимаю кнопку, даже с разных компьютеров, чтобы убедиться, что она не исключает мой IP-адрес. Поскольку Google Analytics doc, который предоставляет Google, не дает много объяснений, я здесь в убытке.

Ответ 1

Единственный способ решить проблему - вернуться к предыдущей версии Google Analytics (не-бета):

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-39570713-2']);
  _gaq.push(['_setDomainName', 'optimino.com']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

Ответ 2

Если вы используете Диспетчер тегов Google, а также хотите запускать некоторые события через код, ga('send'...), похоже, недостаточно. Вы должны сначала получить соответствующий объект аналитики:

if ("ga" in window) {
    tracker = ga.getAll()[0];
    if (tracker)
        tracker.send("event", "Test", "Test GA");
}

Обратите внимание, что это предполагает, что вы используете только один код отслеживания Google Analytics на своем сайте. Если вы используете несколько, вам может понадобиться получить соответствующий по имени или индексу.

Ответ 3

В целях тестирования вы также можете использовать метод hitCallback:

ga('send', {
  'hitType': 'event',         
  'eventCategory': 'button', 
  'eventAction': 'click',     
  'eventLabel': 'contact form',
  'hitCallback' : function () {
      alert("Event received");
   }
});

Обновление: запятая отсутствует.

Ответ 4

У меня была такая же проблема. Мне пришлось создать новое свойство и выбрать "Универсальная аналитика" вместо "Классическая аналитика" (она называется "бета" ). Теперь события фиксируются должным образом.

Ответ 5

У меня была такая же проблема, и я думаю, что нашел решение, но это действительно оставляет неприятный вкус во рту Universal Analytics.

Мне нужно было использовать API синхронной аналитики. Поэтому вместо включения обычного фрагмента в тэге <head> используйте следующий код:

<script src="//www.google-analytics.com/analytics.js"></script>
<script>
  tracker = ga.create('UA-XXXXXXX-1', 'example.com');
  tracker.send('pageview');
</script>

Затем вы вызываете код отслеживания событий следующим образом:

tracker.send('event', 'Category', 'Action', 'Label');

Это гарантирует, что маяк отслеживания отправляется в Google и подтвержденный до того, как пользователь загрузит загрузку.

Это говорит о том, что Universal Analytics требует некоторого дополнительного подтверждения, кроме того, что требуется для старого кода ga.js. Поэтому, когда вы присоединяете событие к клику, который приводит пользователя к другой странице, это подтверждение не может быть отправлено, потому что браузер покинул страницу и сбросил текущий стек выполнения javascript.

Возможно, эта проблема специфична для определенных сред исполнения (я использую Chrome 34 на OSX Mountain Lion), что может объяснить, почему другие разработчики не замечают эту проблему.

Ответ 6

В моем случае проблема заключалась в том, что uBlock Origin блокировал аналитику script от загрузки.

Ответ 7

Я не вижу ничего плохого в самом коде. Пробовали ли вы использовать альтернативное отслеживание событий?

ga('send', {
  'hitType': 'event',          // Required.
  'eventCategory': 'button',   // Required.
  'eventAction': 'click',      // Required.
  'eventLabel': 'contact form'
});

Я также предлагаю протестировать веб-сайт с помощью аддона GA Debug Chrome, который позволит вам увидеть, что маяк отслеживания был отправлен или нет.

"Официальная" отладочная документация для Universal Analytics по-прежнему отсутствует, но, надеюсь, она будет добавлена ​​в ближайшее время, так как ga_debug.js предоставляет множество полезных способов узнать, что случилось с реализацией Google Analytics...

Ответ 8

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

Я обнаружил, что метод bast для работы с несколькими трекерами во избежание getAll() заключается в следующем:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-xxxxxx-y', 'auto', 'tracker');
ga('tracker.send', 'pageview');
ga('tracker.send', 'event', 'test', 'click', 'automaticEvent')

Обратите внимание, что вам нужно передать "имя" методу create, а затем отправить событие на этот трекер с помощью ga([trackerName].send, ...)

Ссылка: https://developers.google.com/analytics/devguides/collection/analyticsjs/accessing-trackers

Ответ 9

У меня такая же проблема, и похоже, что события отслеживаются, но панель управления GA не позволяет просматривать их. Это единственный способ, которым я мог бы интерпретировать "Визиты с событиями: 1071", но "Всего событий: 0", которые показывает мне панель приборов GA.

UPD: при отладке GA Chrome обнаружена проблема; 1-й метод не работает (отправляет событие без каких-либо данных), но второй - в порядке.

Ответ 10

Вы также должны учитывать, что, вероятно, страница перезагружается после того, как событие отправки было запущено до того, как ga script смог выполнить метод отправки. Чтобы этого избежать, вы можете использовать механизм "hitCallback", т.е. Предотвратить отправку, вызвать ga send-method и отправить данные формы в обратном вызове.

Ответ 11

Я получил его работу - в моем примере используется новая универсальная аналитика.

<script type="text/javascript">
    function sliderOnChange() {
    var period = window.convertDays(($("#PeriodSlider").slider("value")));
    var amount_of_credit = $("#AmountOfCreditSlider").slider("value");
    var gaEventInput = "£" + amount_of_credit + " for " + period;
    ga('send', 'event', 'slider', 'sliding', gaEventInput);
}
</script>
  • Убедитесь, что фильтры Google Analytics/Диспетчера тегов Google не исключают трафик из другого домена. (Возможно, вы тестируете его, чтобы получить эту работу, используя другой домен)
  • Повторно проверьте свой идентификатор и домен GA в ga ('create', 'UA-39570713-1', 'site.com');
  • Создайте новый профиль в Google Analytics (GA) для тестирования и отлаживайте свой html в том же домене, который вы определяете в GA.
  • Измените дату, которая будет сегодня в GA - вам также может потребоваться некоторое время, прежде чем она появится в GA

Ответ 12

Я рекомендую отправлять событие GTM через window.dataLayer.push({ event: 'EVENT_NAME', ...data }) и в GTM создавать триггер для запуска тега, который отправляет событие в Google Analytics. У вас будет лучший опыт отладки с предварительным просмотром GTM, и вы будете уверены, что события будут отправлены с GTM на GA, потому что GTM позаботится об этом.

Ответ 13

Новая версия аналитики имеет новый синтаксис. Заменить строку ниже;

ga('send', 'event', 'button', 'click', 'contact form');

с этим;

gtag('event', <action>, {'event_category': <category>,
'event_label': <label>,'value': <value>});

Ответ 14

В моем случае это не сработало, потому что я загрузил файл HTML непосредственно из файловой системы.

Загрузка страницы через веб-сервер сделала трюк.

Для локальной разработки такой инструмент, как https://github.com/tj/serve, отлично справляется.