Zeit auf der Seite in Google Analytics

Philippe Großmann

Philippe Großmann

Web Analytics · Aktualisiert am 29.09.2023

Warum die Zeit auf der Seite falsch ist.


Die Zeit auf der Seite in Google Analytics entspricht nicht der tatsächlichen Zeit, die Besucher auf Ihrer Seite verbringen. Sie vermittelt ein völlig falsches Bild der Besuchsdauer - und das liegt an der Art wie die Zeit auf der Seite erhoben wird.

In der Standardkonfiguration resultiert die verbrachte Zeit aus der ersten und der letzten Interaktion. Das bedeutet zum einen, dass Besucher mit nur einem Seitenaufruf, also nur einer Interaktion, theoretisch keine Zeit auf der Seite verbringen, und zum anderen, dass der letzte Seitenaufruf von Besuchern mit mehreren Seitenaufrufen überhaupt nicht mit in die verbrachte Zeit einfließt.

Wir möchten Ihnen zeigen, wie Google Analytics die Zeit auf der Seite und die Dauer einer Sitzung ermittelt und warum diese Metrik unter gar keinen Umständen akkurat sein kann. Gleichzeitig zeigen wir aber Lösungen, wie Sie die wahre Zeit auf der Seite eines Besuchers erhalten.

Grundlagen: Hits in Google Analytics

Verständnis von Hits / Treffern

Jedes Mal, wenn der Tracking-Code durch eine Interaktion eines Nutzers ausgelöst wird, zeichnet Analytics diese Aktivität auf. Jede Interaktion wird zu einem Hit, oder auch Treffer genannt, “verpackt” und an die Server von Google gesendet. Der "Hit" enthält die Daten der Benutzerinteraktion. Zu den häufigen Hit-Typen zählen Seitenaufrufe, Events und E-Commerce-Hits. Hits sind im Kern also Datenpakete die nach einer Interaktion an Google Analytics versendet werden. Google Analytics unterscheidet zwischen zwei Arten von Treffern - einem Normalen und einem Interaktions Hit.

Die meisten Analysetools verwenden die Zeit Seitenaufrufe, um die Zeit auf der Seite zu berechnen. Die Zeitberechnung von Google Analytics verwendet Interaktions Hits.

Was ist ein Interaktions Hit?

Ein Interaktions Hit ist jeder Hit, der die Absprungrate beeinflusst. Diese Hits werden mit folgendem Parameter definiert:

non_interaction = false

Zudem dürfen diese Hits nicht nur mit benutzerdefinierten Informationen gefüllt sein. Das bedeutet, dass der Hit mindestens Seiteninformationen, E-Commerce-Transaktions Informationen, E-Commerce-Artikel Informationen oder Event Informationen enthalten muss.

In der Standardkonfiguration

Wie die Zeit auf der Seite berechnet wird

Die Zeit auf der Seite wird auf zwei verschiedene Arten berechnet. Die Berechnung hängt davon ab, ob der Besucher nur eine Seite oder mehrere Seiten besucht hat.

Wenn es mehrere Seitenaufrufe gibt
Wenn es während eines Besuchs mehrere Pageviews gibt, dann basiert die Zeitberechnung auf der Startzeit zwischen der aktuellen Seite und der Startzeit des nächsten Seitenaufrufs.

Wenn es nur einen Seitenaufruf im Besuch gibt
Die meisten Menschen glauben, dass Google Analytics keine Zeit auf der Seite berechnen kann und das auch nicht kann, wenn es nur eine Seite in einem Besuch gibt. Das ist auch teilweise korrekt.

Wenn während des Besuchs keine andere Seite angezeigt wird, verwendet Google Analytics die Zeit zwischen dem ersten Seitenaufruf und dem letzten Interaktions Hit, der auf den Seitenaufruf folgt.

Zeit auf der Seite =
 (Zeit des letzten "Engagement Treffers" auf der Seite) - (Zeit des ersten Treffers von der Seite)

Das Problem an der Standardkonfiguration

Einige Websites, wie z.B. Blogs, haben oft hohe Absprungraten. Das ist nicht schlimm und für die Art des Contents vollkommen normal. Wir haben hier alles über die Absprungrate zusammengetragen, falls Sie mehr Informationen möchten.
Aufgrund der Art und Weise, wie Google Analytics die Zeit auf der Seite berechnet, benötigen Sie eine andere Methode, um zu messen, welche Seiten tatsächlich gelesen werden.

Die Lösung: Beforeunload-Event

Die Lösung ist relativ einfach. Wir schicken Google Analytics den Zeitpunkt, wenn die Besucher:in eine Seite verlässt. Somit können wir die Zeit für Besucher:innen mit nur einem Seitenaufruf korrekt tracken, aber auch den letzten Seitenaufruf von Besuchen bzw. Sitzungen mit mehreren Seitenaufrufen.

Wir bewerkstelligen dies durch die Verwendung des “beforeunload”-Events.

  • Zunächst einmal brauchen wir die Startzeit
  • Dann benötigen wir die “Endzeit”
  • Zu guter Letzt schicken wir die Besuchszeit an Google Analytics

Wir setzen die Verwendung des Google Tag Managers vorraus.
Diese Lösung beeinflusst nicht die Metriken "Durchschnittl. Sitzungsdauer" oder "Durchschn. Zeit auf der Seite". Wir nutzen hierfür die Kennzahl "Nutzer-Timing". Diese ist in benutzerdefinierten Berichten und unter Website-Geschwindigkeit -> Nutzer-Timings verfügbar. Alternativ wäre auch ein benutzerdefinierter Messwert möglich.

1. Den Startzeitpunkt erhalten

Zunächst einmal benötigen wir den Startzeitpunkt. Wir greifen hierzu auf "gtm.start" zurück.

Die Eigenschaft "gtm.start" erhält als Wert die Zeit, wenn der Google Tag Manager geladen wird. Dies wird zur Berechnung der Ladezeit von gtm.js und der Cache-Trefferrate verwendet.

Wir erstellen eine neue Variable vom Typ Data Layer Variable und setzen den “Name der Datenschichtvariablen” auf "gtm.start". Nennen Sie die Variable "startzeit":

Startzeit gtm

2. Zeit berechnen und speichern, wenn ein Benutzer die Seite verlässt

Als nächstes erstellen wir ein benutzerdefinierten HTML-Tag, welcher beim verlassen der Seite ein Event feuert, die Zeit auf der Seite berechnet und letztendlich die Zeit in einer DataLayer speichert.

<script>
 window.addEventListener('beforeunload', function() {
 window.dataLayer.push({
 'event': 'beforeunload',
 'timeOnPage': new Date().getTime() - {{startzeit}}
 });
 }); 
</script>

Als Trigger verwenden wir “All Pages”.

Was macht dieses Skript?
Es fügt einen EventListener hinzu, der beim Verlassen der Seite (beforeunload) ein dataLayer.push ausführt. Dort befindet sich ein Event und unsere neue “timeOnPage”. Aktuell befinden sich die Informationen in der DataLayer.
Als nächstes müssen wir die neue Zeit an Google Analytics übermitteln.

3. Zeit an Google Analytics übermitteln

Hierfür müssen wir zunächst die “timeOnPage”-DataLayer als Variable hinterlegen, um sie in einem Google Analytics-Event nutzen zu können.
Im Tag-Manager erstellen wir unter “Variabele” dafür eine neue “Datenschichtvariable” mit dem Name der Datenschichtvariablen "timeOnPage":

Timeonpage

Als nächstes benötigen wir einen Trigger der beim Verlassen der Seite auslöst.
Die Grundlage des Triggers haben wir bereits mit unserem HTML-Tag gelegt: das Event “beforeunload”. Um Besucher:innen, die außerhalb der Sitzungszeit liegen auszuschließen, schränken wir den Trigger zusätzlich ein:

Beforeunload event

Der Trigger löst aus, sobald das Event “beforeunload” ausgelöst wurde, welches wiederum durch unseren Javascript-EventListener getriggert wird.

Zu guter Letzt erstellen wir unseren neuen Universal Analytics-Tag.
Benennen Sie den neuen Tag und geben Sie Ihre Tracking-ID ein. Stellen Sie den Typ auf "Timing". Als nächstes benennen Sie die Kategorie "Time on Page", die Var auf "Time", und den Wert auf "Real Time On Page". Dieser Wert bezieht sich auf die Variable, die wir zuvor erstellt haben. Setzen Sie das Label auf "Page Path".

Wichtig: Navigieren Sie zu den Weitere Einstellungen und fügen Sie unter Festzulegende Felder ein weiteres Feld hinzu.
Der Feldname muss auf "transport" und der Wert auf "beacon" eingestellt sein.
Mit dieser Einstellung verwendet das Tag nun die Beacon-API, um die Informationen asynchronen zu versenden. Dies ist notwendig, da die Nutzer:innen ja dabei ist, die Seite zu verlassen und wir somit versuchen sicherzustellen, dass die Informationen auch wirklich bei Google Analytics ankommen, auch wenn der Browser die Seite bereits entladen hat.

Tag einstellungen zeit

Als Trigger für diesen Tag nutzen wir unseren beforeunload-Trigger, den wir zuvor erstellt haben.

Jetzt können wir den Tag speichern und Debuggen. Nutzen Sie dafür die Vorschaufunktion des Tag-Managers, um sicherzustellen, dass die Daten beim Verlassen einer Seite korrekt gesendet werden.
Es ist hilfreich über die Console der Developer-Tools ihres Browsers (wir empfehlen in dem Fall Google Chrome) folgenden Javscript-Code einzufügen, damit Sie beim Testen des Events nicht versehentlich die Seite verlassen:

window.onbeforeunload=function(){
 return "Wollen Sie die Seite wirklich verlassen?";
}

4. Google Analytics Konfiguration

Diese Lösung beeinflusst leider nicht die Metrik "Durchschnittl. Sitzungsdauer". Wie wir gelernt haben, bräuchten wir dafür einen Interaktions-Hit, der die Absprungrate beeinflussen würde.
Wir finden die echte Nutzer-Zeit jetzt unter "Verhalten" -> "Websitegeschwindigkeit" -> "Nutzer-Timing".

Diese Ansicht ist jedoch nicht wirklich bequem, daher sind noch einige weitere Schritte notwendig. Wir erstellen einen Berechneten Messwert, der das Nutzer-Timing zunächst in das richtige Format umrechnet und dann durch die Anzahl der Nutzertiming-Beispiel teilt. Somit erhalten wir eine eine durchschnittl. Seiten-Zeit.

Die Formel für die Berchnung lautet:

( ( "Nutzertiming (ms)" / 1000 ) / "Nutzertiming-Beispiel" )
Messwert zeit

Zu guter Letzt erstellen wir noch einen Bericht mit unserem neuen Messwert.

Fazit und letzer Schritt: Neue Daten sammeln und analysieren.

Ab jetzt heißt es abwarten und Daten sammeln. Auf Grundlage dieser akkurateren Daten könnnen Sie gerade für Suchmaschinen-Traffic besser beurteilen, ob die Inhalte gut in Ihrer Kernzielgruppe ankommen. Gerade auf lange Sicht sind solche Daten sehr viel Wert.

Jetzt Newsletter abonnieren.

Erhalten Sie exklusive & kuratierte Inhalte direkt in Ihren Posteingang.


Philippe Großmann

Philippe Großmann

Philippe entwickelt Online Marketing Kampagnen, ist Web-Analytics Enthusiast und ein großer Fan von PPC-Marketing.