it-swarm.com.de

Ereignisse werden im neuen Setup von Google Analytics (analytics.js) nicht erfasst

Ich habe eine Website, auf der ich die neuen Universal Analytics (analytics.js) zur Nachverfolgung verwende. Mit dem folgenden Code-Snippet wird alles eingerichtet und funktioniert (Seitenzugriffe, Verweise usw.):

<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>

Das befindet sich vor dem </head>-Tag.

Ich benutze JQuery, um ein Ereignis auszulösen. Ich habe die JQuery mit einer Warnmeldung getestet und wird gerufen, daher ist das nicht das Problem. Hier ist der Ausschnitt, der ausgelöst wird, wenn auf eine Schaltfläche geklickt wird:

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

Im Abschnitt "Ereignisse" von Analytics wird nichts angezeigt. Ich klicke weiter auf die Schaltfläche, auch von verschiedenen Computern aus, um sicherzustellen, dass meine IP-Adresse nicht ausgeschlossen wird. Da das von Google bereitgestellte Analytics-Dokument keine vollständige Erklärung liefert, bin ich hier völlig ratlos.

19
squeezemylime

Wenn Sie Google Tag Manager verwenden und auch einige Ereignisse über Code auslösen möchten, scheint ga('send'...) nicht ausreichend zu sein. Sie müssen zuerst das entsprechende Analyseobjekt abrufen:

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

Beachten Sie, dass Sie davon ausgehen, dass Sie auf Ihrer Website nur einen einzigen Tracking-Code von Google Analytics verwenden. Wenn Sie mehrere verwenden, müssen Sie möglicherweise den entsprechenden Namen nach Namen oder Index abrufen.

79
Sanjay Vamja

Zu Testzwecken können Sie auch die hitCallback-Methode verwenden:

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

Update: Komma fehlte.

6
Dom

Ich hatte genau das gleiche Problem. Ich musste eine neue Eigenschaft erstellen und "Universal Analytics" anstelle von "Classic Analytics" auswählen (es wird als "Beta" bezeichnet). Jetzt werden Ereignisse richtig erfasst.

4
extrabacon

In meinem Fall war das Problem uBlock Origin, das das Laden des Analyseskripts blockierte.

3
user1139733

Ich hatte das gleiche Problem und glaube, ich habe die Lösung gefunden, aber es hinterlässt wirklich einen schlechten Geschmack von Universal Analytics.

Ich musste die synchronous -Analyse-API explizit verwenden. Verwenden Sie also anstelle des üblichen Ausschnitts in Ihrem <head>-Tag den folgenden Code:

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

Dann rufen Sie den Event-Tracking-Code folgendermaßen auf:

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

Dadurch wird sichergestellt, dass das Tracking-Beacon an Google und bestätigt gesendet wird, bevor die Seite, zu der der Nutzer navigiert hat, mit dem Laden beginnt.

Dies legt nahe, dass Universal Analytics eine Art zusätzlicher Bestätigung erfordert, die über den alten ga.js-Analysecode hinausgeht. Wenn Sie also ein Ereignis an einen Klick anhängen, der den Benutzer auf eine andere Seite bringt, kann diese Bestätigung nicht gesendet werden, da der Browser die Seite verlassen und den aktuellen Javascript-Ausführungsstapel gelöscht hat.

Möglicherweise ist dieses Problem spezifisch für bestimmte Ausführungsumgebungen (ich verwende Chrome 34 unter OSX Mountain Lion), was möglicherweise erklärt, warum mehr Entwickler dieses Problem nicht bemerken.

3
CoreDumpError

Ich kann nichts falsch mit dem Code selbst sehen. Haben Sie es mit der alternativen Ereignisverfolgung versucht?

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

Ich würde auch vorschlagen, die Website mit dem Debug-Chrome-Addon GA zu testen, mit dem Sie sehen können, ob das Tracking Beacon gesendet wurde oder nicht.

Die "offizielle" Debugging-Dokumentation für Universal Analytics fehlt noch, aber hoffentlich wird sie bald hinzugefügt, da ga_debug.js viele nützliche Möglichkeiten bietet, um herauszufinden, was an der Implementierung von Analytics nicht stimmt ...

1
Petr Havlik

heute musste ich zum ersten Mal eine Analyse erstellen und fand mich in der gleichen Schwierigkeit.

Ich fand, dass der Bast-Weg, mit den mehreren Trackern umzugehen, um die getAll() zu vermeiden, der folgende ist:

<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')

Beachten Sie, dass Sie der Erstellungsmethode einen "Namen" übergeben müssen und dann ein Ereignis mit ga([trackerName].send, ...) an diesen Tracker senden.

Referenz: https://developers.google.com/analytics/devguides/collection/analyticsjs/accessing-trackers

Neue Version von Analytics hat eine neue Syntax. Ersetzen Sie die Zeile darunter;

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

mit diesem;

gtag('event', 'click', {'event_category' : 'button',
  'event_label' : 'contact form'});

Referenz; https://developers.google.com/analytics/devguides/collection/gtagjs/events

1
afelaho

Ich habe das gleiche Problem und es sieht so aus, als würden Ereignisse nachverfolgt, aber das GA - Dashboard erlaubt es nicht, sie zu durchsuchen. Dies ist der einzige Weg, wie ich die "Besuche mit Ereignissen: 1071" aber "Gesamtereignisse: 0" interpretieren könnte, die im GA - Dashboard angezeigt werden.

UPD: habe mit GA Chrome-Debug ein Problem gefunden; Die erste Methode funktioniert nicht (sendet das Ereignis ohne angehängte Daten), aber die zweite ist in Ordnung.

0

Sie sollten auch berücksichtigen, dass die Seite wahrscheinlich erneut geladen wird, nachdem das Submit-Ereignis ausgelöst wurde, bevor das ga-Skript die 'send'-Methode ausführen konnte. Um dies zu vermeiden, können Sie den "hitCallback" -Mechanismus verwenden, d. H. Das Senden verhindern, die ga send-Methode aufrufen und die Formulardaten im Callback übergeben.

0
Nicolas Zimmer

Ich empfehle, das GTM-Ereignis über window.dataLayer.Push({ event: 'EVENT_NAME', ...data }) zu senden und in GTM einen Auslöser zu erstellen, um ein Tag auszulösen, das ein Ereignis an Google Analytics sendet. Mit der GTM-Vorschau haben Sie die besten Erfahrungen im Debugging-Modus und Sie können sicher sein, dass Ereignisse von GTM an GA gesendet werden, da GTM sich darum kümmert.

0
Daniel Kmak

Ich habe es zum Laufen gebracht - mein Beispiel ist die neue Universal Analytics.

<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>
  1. Stellen Sie sicher, dass die Filter von Google Analytics/Google Tag Manager keinen Datenverkehr von einer anderen Domäne ausschließen. (Vielleicht testen Sie es, damit es mit einer anderen Domain funktioniert)
  2. Überprüfen Sie Ihre GA - ID und Domäne in ga erneut ('create', 'UA-39570713-1', 'site.com');
  3. Erstellen Sie zu Testzwecken ein neues Profil in Google Analytics (GA) und debuggen Sie Ihr HTML in derselben Domäne, die Sie in GA definiert haben.
  4. Ändern Sie das Datum in GA - Sie müssen möglicherweise auch einige Zeit warten, bevor es in GA angezeigt wird
0
Kristjan Kure