Zurzeit sind 697 Mitglieder online.
Zurzeit sind 697 Mitglieder online.
Fragen zum Thema Berichte, Personalisierung, Dashboards, Scheduling, Echtzeit. Fragen zu Zielgruppen, Interessen, Demographie, Technologie, Provider? Fragen zum Thema Verhalten, Content, Pfade, Seiten, Ereignisse, Suche oder Testing? Kontaktiere uns hier.
Anleitung
favorite_border
Antworten

Was sind Eure Best Practices: Absprungrate & Sitzungsdauer von 0 Sek

Rang 7
# 1
Rang 7

Das Problem: Wir betrachten in google analytics eine Website mit vielen Einzelseiten die einer großen Anzahl von Besuchern direkt auf der ersten Seite, also der Einstiegsseite bereits die Antwort auf ihre Frage liefern. Also Besucher die per google Suche auf eine Einzelseite gelangen, verweilen dort weil sie finden, was sie gesucht haben und verlassen die Webseite dann direkt wieder ohne weitere Interaktion mit der Seite. 

 

Folglich: Durch das Verlassen der Webseite ohne Interaktion ergibt sich in google analytics eine Sitzungsdauer von 0 Sekunden und eine Absprungrate von 100%. Die in google analytics betrachteten Webseiten weisen dementsprechend eine hohe Absprungrate und eine geringe Verweildauer auf.

 

 

Trotzdem verfügt google über alle Daten: Mit an Sicherheit grenzender Wahrscheinlichkeit weiss google genau wie lange die Besucher auf solchen einzelnen Webseiten verweilen, denn Seiten die mit ihrem Nutzerverhalten solch grundsätzlich negativen Analysewerte aufweisen, können bekannterweise trotzdem Top-Rankings in der organischen Suche belegen. Grundsätzlich ist das auch konform zur beschriebenen Ausgangslage ist, trotzdem stellt dies für alle google analytics Nutzer sicher eher ein ungewolltes Verhalten dar.

 

@google:

  • Warum verhält sich google analytics so?
  • Welche guten Gründe gibt es für diese "Datenungenauigkeit" anzuführen?

 

Natürlich ist es möglich die Besuchszeit jeder Seite - auch sofern keine weitere Seite aufgerufen wurde und auch keine alternative Nutzerinteraktion stattfindet auch dann ermitteln, wenn man zusätzlich noch Ereignisse trackt, mit denen man darauf schließen kann, dass sich der Besucher noch mit der Seite beschäftigt (z.B. Scrolltiefe, Mausbewegungen im aktiven Browserfenster und so weiter).

 

In einem anderen Forenbeitrag zu diesem Thema wurden hierfür zwei beispielhafte Plugins: http://scrolldepth.parsnip.io/ und http://riveted.parsnip.io/  aufgeführt.

 

Zudem gibt es weitere Ansätze. wie z.B.:

  • Klicks als Event an Google übermitteln, so dass das als Aktion gewertet wird
  • Die Scrolltiefe als Event übermitteln (10er-Schritte)
  • nach z.B. 30 Sekunden automatisch einen Event übermitteln (d.h. das Fenster mit der Seite war zumindest 30 Sekunden offen)
  • Regelmäßig alle 30 Sekunden einen Event übermitteln (ACHTUNG: versaut u.a. die Statistik, wenn jemand das Fenster einfach im Hintergrund offen lässt.)

 

Aber das ist doch nicht der Sinn einer Trackingsoftware wie google analytics, oder?

 

Wie geht ihr mit diesem Problem um?

 

Was sind Eure Best Practices?

 

 

 

Was sind Eure Best Practices: Absprungrate & Sitzungsdauer von 0 Sek

Rang 8
# 2
Rang 8

Ich sende mittels Javascript-Handler beim (bzw. vorm) Verlassen der Seite mehrere Event an Analytics, welche Scrolltiefe, Windows-Fokus-Zeit und andere Sachen enthalten. Übersteigen solche Kennzahlen einen von mir vorgegebenen Schwellwert, wird das entsprechende Event mit nonInteraction:0 gesendet. Außerdem sind in den Seiten noch andere JavaScript Eventhandler, die bei bestimmten Aktionen Events an Analytics senden (mit nonInteraction:0), z.B. Links auf externe Links, Kopieren von Texten, Fokusierung von Formularen, etc.

 

Warum Google das nicht von selbst einbaut? Ich vermute, Google möchte die Tracking-Implementation so einfach und stör-unanfällig wie möglich halten. Vor allem aber wollen sie bestimmt den anfallenden Traffic so gering wie möglich halten. Auch sind solche Funktionen auch immer ein Faktor, der mehr Rechenzeit beansprucht. Aber bestimmt liege ich falsch und ist einfach historisch schon immer so und Google hatte den Fokus der Tracker-Weiterentwicklung auf anderen Gebieten Smiley (zwinkernd)

 

Was sind Eure Best Practices: Absprungrate & Sitzungsdauer von 0 Sek

Rang 7
# 3
Rang 7

Hi Andi,

 

vielen lieben Dank für die interessanten Einsichten. Könntest Du bitte noch ein bisschen mehr in's Detail gehen?

- Wie (stark) beeinflusst das die Ladezeit der Seiten?

- Welche Störeinflüsse sind möglich und wie äußern sich diese?

- Welche Steps sind erforderlich um das genauso umzusetzen?

 

Dankeschön!

 

Was sind Eure Best Practices: Absprungrate & Sitzungsdauer von 0 Sek

Rang 8
# 4
Rang 8

Hi Sascha,

 

Insgesamt sind die von mir eingesetzten JavaScripts sehr klein und werden erst nach DOM-ready geladen. Insofern konnte ich bisher keine Verzögerungen der Seitenladezeit beobachten.

 

Störeinflüsse sind möglich bei fehlerhafter Implementation, deshalb sollte man schon ein wenig Zeit in QA investieren und das Ganze auch fürs Team irgendwo dokumentieren. Abgesehen davon nutze ich JavaScript-Eventhandler - hier könnte es mit eigenen Eventhandlern Konflikte geben. Bei mir bisher aber noch nicht aufgetreten.

 

Die Umsetzung ist möglich, indem Du entweder den kompletten Tracking-Code durch einen eigenen ersetzt (so mache ich es). Allerdings muss man hier schon etwas Zeit einplanen, die Tracker von Analytics haben einige Eigenheiten.

Einfacher ist es sicher, die Funktionalitäten einzeln mittels Tag Manager nachzurüsten, allerdings ist man dann nicht so flexibel, was das Zusammenspiel der einzelnen Komponenten betrifft.

 

Was sind Eure Best Practices: Absprungrate & Sitzungsdauer von 0 Sek

Rang 7
# 5
Rang 7

@Andi: Ok, vielen Dank.

 

Wäre natürlich fantastisch, wenn Du deinen Tracking Code hier vorstellen und erläutern würdest. Möglicherweise können andere in der Crowd noch zu der einen oder anderen Verbesserung beitragen.

 

Die aktuelle Analytics-Tracking Code Dokumentation finden alle interessierten Analytics-User hier: 

https://developers.google.com/analytics/devguides/collection/analyticsjs/

Was sind Eure Best Practices: Absprungrate & Sitzungsdauer von 0 Sek

Rang 8
# 6
Rang 8

@Sascha: Das hatte ich schon überlegt, aber mich dann dagegen entschieden. Der gesamte Code beinhaltet noch viel mehr als nur die Absprungraten-Verbesserungen und alles greift ineinander. Es wäre sehr viel Erklärungsbedarf notwendig, wofür für diese Plattform hier ungeeignet ist. Ich werde aber gegen Ende diesen Jahres beginnen, auf einer eigenen Domain Teile davon zu veröffentlichen. Du darfst mir gern folgen Smiley (zwinkernd)

 

Ich möchte aber zumindest den Ansatz erklären:

 

Für die JavaScript EventListerner habe ich eigene Funktionen erstellt, um auch IE Events mit zu erfassen:

function trAddEvListener(elt,evt,fkt){

  if(window.addEventListener){

   elt.addEventListener(evt,fkt);

  }else{

    elt.attachEvent('on'+evt,function(){fkt.call(elt);});

  }

}

Damit überwache ich (neben dem PageUnload auch DomReady, PageLoad usw.

 

Den PageUnload überwache ich mit 3 verschiedenen EventListenern, weil es hier unter den Browsern keinen Standard gibt:

trAddEvListener(window,'beforeunload',trPageUnload);trAddEvListener(window,'unload',trPageUnload);trAddEvListener(window,'pagehide',trPageUnload);

 

Genauso ist es bei den Page Focus Listenern, um z.B. die Page Fokus Zeit zu bestimmen:

// Page Focus Listener
if(typeof document.hidden!=='undefined'){trConfig['hidden']='hidden';trConfig['visibilityChange']='visibilitychange';}
else if(typeof document.mozHidden!=='undefined'){trConfig['hidden']='mozHidden';trConfig['visibilityChange']='mozvisibilitychange';}
else if(typeof document.msHidden!=='undefined'){trConfig['hidden']='msHidden';trConfig['visibilityChange']='msvisibilitychange';}
else if(typeof document.webkitHidden!=='undefined'){trConfig['hidden']='webkitHidden';trConfig['visibilityChange']='webkitvisibilitychange';}
else{trError('VisibilityChange not available','VisibilityChange not available');}
trAddEvListener(document,trConfig['visibilityChange'],trPageFocus);

(ist jetzt nur ein Auszug, eventuelle Variablennamen müsst Ihr jetzt mal interpretieren.

 

Die weiter oben aufgeführte Funktion, die ich beim PageUnload ausführe, sieht so aus:

function trPageUnload(){if(trConfig['pagestate']!='unload'){
// Timings loggen
if(!trConfig['focus'])trConfig['time_gap']=0;trConfig['time_visit']=trCTime(Date.now(),trConfig['time_start'])-trConfig['time_gap'];trQueue.push(['event','Timings','Visit',trConfig['time_visit']+'s',parseInt(trConfig['time_visit']),parseInt(trConfig['time_visit'])>=25?0:1]);trQueue.push(['event','Timings','Page Loading',trConfig['time_page']+'s',parseInt(trConfig['time_page']),1]);trLog('Page unloading (Visit Time:'+trConfig['time_visit']+'s)');
// JS Errors loggen
if(trConfig['js_errors']){for(var tjse=0;tjse<trConfig['js_errors'].length;tjse++){trQueue.push(['event','Errors','JS Errors',trConfig['js_errors'][tjse],0,1]);}}
// Andere Analytics Objekte checken
if(typeof ga!='undefined'){trQueue.push(['event',trConfig['msg']['ga_elem'],typeof _gaq!='undefined'?trConfig['msg']['ga_old_obj_use']:trConfig['msg']['ga_unv_obj_use'],trConfig['page'],0,1]);}

// Scrolltiefe tracken

var trScrollDepthG='no scrolling';if(trScrollDepth>95){trScrollDepthG='>95%';}else if(trScrollDepth>75){trScrollDepthG='>75%';}else if(trScrollDepth>50){trScrollDepthG='>50%';}else if(trScrollDepth>25){trScrollDepthG='>25%';}trEvent('Scrolltiefe',trConfig['page'],trScrollDepthG,trScrollDepth,1);
jQuery('[data-event-action]').each(function(){var tr_input=jQuery(this);if(!tr_input.attr('data-event-mode')||tr_input.attr('data-event-mode')=='viewport')truserevent('viewport',tr_input);});
if(trConfig['form_last_field']){trEvent('Formularabbruch - letztes Feld',trConfig['page'],trConfig['form_last_field'],0);}
trPageUnloadStatus=true;trLog('Window will unload ...');

// Status unload setzen
trConfig['pagestate']='unload';
}}

 

Wie Du siehst, habe ich eine eigene Tracking Queue. Das habe ich gemacht, um die Tracker-Limits zu überwachen und Trackingfehler von dieser Seite zu vermeiden, aber auch um schon tracken zu können, bevor Analytics geladen ist. Die hier vorzustellen, würde den Rahmen sprengen Smiley (zwinkernd)

Ansonsten sind da natürlich viele Variablen enthalten, die schon an früherer Stelle gesetzt werden und Daten sammeln, auch einige Funktionen fehlen hier zum Nachbau. Aber vielleicht reicht es dem ein oder anderem als Ansatz ...

 

Fubktionen, wie man Klicks auf externe Links trackt, beim Fokusieren eines Formulars ein Event sendet, usw. sollten via Google eigentlich leicht zu finden sein ...

 

Ich hoffe, das hilft etwas...