GTM Scroll-/ Engagement-Tracking Guide 2021 [Verschiedene Optionen]

Mit dem Google Tag Manager kann sehr leicht gemessen werden, wieweit ein Nutzer gescrollt hat. Das kann besonders bei längeren Seiten sehr hilfreich sein, wenn man überlegt die Seite ggf. zu erweitern oder zu überarbeiten. Denn häufig diskutieren Webseitenbetreiber über Bereiche auf einer Seite, die sowieso kaum ein Nutzer sich anschaut. Scroll Tracking mit dem Google Tag Manager (GTM) hilft hier weiter.

Neben dem einfachen Messen der Scrolltiefe, lässt sich noch mehr mit dem Scroll-Tracking-Trigger im Google Tag Manager anfangen. Zum Beispiel kann in Kombination mit einem Timer-Trigger die Absprungrate in Google Analytics genauer erfasst werden…

Inhaltsverzeichnis

Autor | René van Loock

Digital Analyst und TÜV-Nord Zertifizierter Datenschutzbeauftragter. Seit mehr als 3 Jahren beschäftige ich mich täglich mit dem Google Tag Manager.

Scroll Tracking [Einfach]

Um das Scrollen des Nutzers auf jeder Seite zu messen, benötigen wir…

  1. Aktivierte Google Tag Manager Scroll-Variablen
  2. Einen Scroll-Trigger
  3. Einen Tag der die Daten nach Google Analytics schickt.

1. Aktivieren der Google Tag Manager Scroll-Variablen

Im Google Tag Manager unter Variablen -> (Integrierte Variablen) Konfigurieren -> Scroll-Tracking. Die Variablen: Scroll Depth Threshold, Scroll Depth Units und Scroll Direction aktivieren.

Überblick über die Variablen

2. Scroll-Tiefe Trigger

Im Google Tag Manager unter Trigger -> Neu -> Triggerkonfiguration -> (Nutzer Engagement) Scroll-Tiefe auswählen.

Scroll-Tiefe-Trigger im Google Tag Manager

Es gibt verschiedene Einstellungsoptionen. Vertikale Scrolltiefe oder Horizontale Scrolltiefe. Da kaum noch Seiten Horizontal Scrollbar sind, ist das meist irrelevant. Für das Messen wie weit der Nutzer nach unten Scrollt die vertikale Scroll-Tiefe verwenden.

Gemessen werden kann die Scroll-Tiefe in Pixel oder in Prozent. Da nicht alle Seiten gleich lang sind, wählen wir Prozent aus. Die häufigste Einstellung, die ich gesehen habe, ist meist 25%, 50%, 75%, 100%. Dies würde ich jedoch in keinem Fall empfehlen. 100% Löst zum Beispiel nur aus, wenn der Nutzer tatsächlich bis nach ganz unten gescrollt hat. Da der ein oder andere Footer einer Webseite sehr lang sein kann, ergibt das für den Content eher weniger Sinn.

Ich empfehle folgende Einstellungen: 10,25,50,75,90,100

Der Trigger löst dann bei 10%, 25%, 50%, 75%, 90% und 100% aus.

Wann solltet Ihr den Trigger aktivieren? 3 Optionen stehen zur Auswahl:

  • Laden des Containers (ehemals Seitenaufruf)
  • Dom ist bereit
  • Fenster ist geladen
 

Standardmäßig ist Fenster ist geladen ausgewählt. Dies ist die stabilste Version, da einige Seiten Content nachladen und wir sicher sein können, dass die Webseite komplett aufgebaut ist, bei der Einstellung Fenster ist geladen.

3. Tag – Erstellen

Der Trigger löst dann bei 10%, 25%, 50%, 75%, 90% und 100% aus. Wir wollen zu diesem Zeitpunkt ein Event nach Google Analytics schicken, welche die aktuelle Scroll-Tiefe als Ereignis-Dimension übergibt. So können wir für jede Seite separat die Scroll-Tiefe herausfinden.

Im Google Tag Manager gehen wir auf Tags -> Neu -> Google Analytics Universal Analytics. Als „Tracking-Typ“ wählen wir „Ereignis“ aus. Das ermöglicht uns das Übersenden von 3 Dimensionen nach Google Analytics.  Kategorie, Aktion, Label.

Damit später im Google Analytics das Scroll Tracking möglichst einfach betrachtet werden kann, empfehle ich folgende Konfiguration:

Google Tag Manager Scroll Tracking Tag

Wichtig: Wenn Ihr nicht wollt, dass das Scroll-Tracking die Absprungrate beeinflusst, muss unter „Treffer ohne Interaktion“ -> „Wahr“ ausgewählt werden. 

Da wir in diesem Beispiel Scroll-Tracking automatisiert auf allen Seiten erfassen möchten, empfehle ich dies unbedingt. 

Bei Seiten, die zu kurz sind, werden nämlich alle Scroll-Tracking Events automatisch direkt beim Seitenaufruf gefeuert.

Dadurch könnt Ihr euch in Google Analytics unter Verhalten -> Ereignisse einfach auf die Kategorie „scroll_tracking“, direkt auf eine Seite durchklicken und die Ergebnisse erhalten. Scroll Depth Threshold gibt dabei jeweils die Scroll-Tiefe in Prozent an.

Engagement Tracking [Scroll-Tracking + Timer Trigger]

Wenn nur die Scrolltiefe gemessen werden soll, empfehle ich den einfachen Einbau mit dem Setzen des Wertes Treffer Ohne Interaktion ist „Wahr“. Viele Webseitenbetreiber möchten über das Scroll-Tracking jedoch die Absprungrate gezielt zu einem realistischeren Wert lenken.

[Definition Absprungrate in Google Analytics in kurz: Ein Nutzer verlässt die Seite ohne Interaktion.]

Was ist eine Interaktion? Ein weiterer Seitenaufruf, ein Event, eine Conversion, ein Kauf.

Das bedeutet mit den Standard-Einstellungen in Google Analytics, dass ein Nutzer der sich vielleicht den gesamten Beitrag durchliest und mehr als 5 Minuten auf der Seite verbleibt ein Abspringer ist, genauso wie ein Nutzer der nach 3 Sekunden die Seite verlässt. Genau das möchte man nicht, sondern eine Differenzierung von diesen beiden Nutzern erreichen.

Man könnte jetzt einfach sagen, ok wir bauen noch einen Trigger der bei 50% oder 75% des Seiteninhalts auslöst und dann ein Event, welches als Interaktion gesendet wird, in Richtung Google Analytics schickt. Das würde in unserem Beispiel oben, den ersten Nutzer der den gesamten Artikel liest von der Absprungrate befreien und den zweiten Nutzer der sofort abspringt als Abspringer zählen.

Im Internet gelten jedoch ein paar Grundregeln, die auf die meisten Nutzer zutreffen. Zum Beispiel: „Wir lesen keine Abschnitte, sondern überfliegen diese“. Immer auf der Suche nach brauchbaren Informationen für unser Problem. 

Liegst du gerade entspannt im Sessel und liest dir diesen Beitrag mit einem Glas Wein durch? Ich denke nicht. Die wenigsten Nutzer lesen eine Webseite konzentriert von oben nach unten durch.

Viele Nutzer überfliegen einen Blogbeitrag. Scannen alle Abschnitte und wenn Sie keine Zwischenüberschrift anzieht sind sie sofort wieder weg. Diese Nutzer würden wir mit einem einfachen Trigger, der bei 50% oder 75% auslöst, fälschlicherweise als nicht Abspringer ausweisen.

Ein weiteres Problem tritt auf, wenn die Seite sehr kurz ist und womöglich 25% oder gar 75% des Websiteinhalts bei Aufruf der Seite sichtbar sind. Das würde dazu führen, dass der Scroll Tracking Trigger sofort auslöst.

Zusammengefasst haben wir folgende Herausforderungen:

  • Nutzer springen sofort wieder ab.
  • Nutzer lesen die gesamte Seite, führen aber keine Interaktion durch.
  • Nutzer Scannen die gesamte Seite, finden keinen ansprechenden Inhalt und verlassen die Seite wieder.
  • Die Seite ist zu kurz. Der Scroll Tracking Trigger wird sofort oder zu schnell ausgelöst.
 

Die Lösung:

Manipulieren des Standard Scroll-Tracking Triggers in Kombination mit einem Timer Trigger.

 

Manipulierter Standard Scroll-Tracking Trigger

Damit wir es schaffen, dass der Standard Scroll Tracking Trigger nicht auslöst, wenn die Seite viel zu kurz ist, müssen wir auf eine benutzerdefinierte Variable zurückgreifen, die uns in irgendeiner Form dazu Auskunft gibt. Simo Ahava hat dazu etwas gebastelt.

Kurz gesagt, wird mit der JavaScript Variablen, die Höhe der gesamten Seite und die Höhe des aktuell sichtbaren Bereichs, in Pixeln gemessen und durcheinander geteilt.

Sichtbare Höhe / Gesamte Höhe

Wenn die Sichtbare Höhe = der Gesamten Höhe ist, ist die komplette Seite direkt sichtbar. Durch diesen Verhältnis-Wert können wir das jetzt an Bedingungen für unseren Trigger knüpfen.

Custom JavaScript Variable erstellen (Dank an Simo Ahava)

Unter Variablen -> (Runter-Scrollen) Benutzerdefinierte Variablen -> Neu -> Variable Konfigurieren -> Benutzerdefiniertes JavaScript

Folgenden Code einfügen:

function() {
  // Change this to reflect the percentages or pixels you want to fire the trigger for
  var verticalScrollDepths = '55';
  
  // Change this to the MAXIMUM ratio of viewport height / page height you want the trigger to activate for
  var maximumRatio = 0.20;
  
  // Change this to what thresholds should be tracked if the ratio is more than the maximum
  // Leave it at '101' if you want to prevent the trigger from functioning in this case
  var fallbackDepths = '80';
  
  var heightOfPage = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);
  
  var heightOfViewport = Math.max(document.documentElement.clientHeight, window.innerHeight);
  
  var ratio = heightOfViewport / heightOfPage;
  
  return ratio < maximumRatio ? verticalScrollDepths : fallbackDepths;
} 
beispiel benutzerdefinierte javascript variable

Diese Variable können wir dann in unseren neuen Scroll-Trigger einbauen:

Beispiel Trigger im Google Tag Manager mit Hilfe vom Scroll Tracking

Der Scroll-Tracking Trigger löst jetzt bei der Scrolltiefe 55% nur noch aus, wenn die Sichtbare Höhe/ die Gesamte Höhe der Seite kleiner oder gleich 0.2 ist. Ansonsten löst er bei 80% aus. Ziel ist es hier nicht die Scroll-Tiefe zu erfassen, sondern eine exaktere Absprungrate zu ermitteln.

Allein ist unser neuer Scroll-Tracking Trigger aber hilflos bei Nutzern, die die gesamte Seite Scannen und dann sofort wieder verschwinden. Daher sollten wir unseren neuen Scroll-Trigger mit einem Timer Trigger kombinieren.

Timer Trigger

Unter Trigger -> Neu -> Triggerkonfiguration -> Timer Trigger

Zeit messen beim Seitenaufruf Google Tag Manager

Drei Einstellungen können wir tätigen. Intervall, Limit und eine Bedingung für das aktivieren des Triggers. Wir möchten das der Trigger auf allen Seiten ausgespielt wird, daher nehmen wir bei letzterem: Page Path enthält „/“.

Das Intervall ist für unsere Verbesserung der Absprungrate nicht so entscheidend, kann aber durch Auslösen zu einer besser erfassten Verweildauer auf der Seite führen.  Wir nehmen Limit 5.

Das Intervall in Millisekunden bestimmt in welchen Abständen der Trigger auslöst. Eingestellt sind hier 3-Minuten. Das kann aber je nach Seite unterschiedlich sein. Habt ihr zum Beispiel eher kürzere Seiten mit vielen Bildern, sollte das Intervall niedriger gewählt werden. Habt Ihr sehr lange Seiten, kann das Intervall sehr groß gewählt werden. 3 Minuten sind bei einem Blogbeitrag aber denke ich ein guter Wert. Die durchschnittliche Verweildauer auf meinem Blog pro Seite ist recht hoch zum Beispiel:

Trotz des Engagement-Trackings liegt die Bounce-Rate noch immer bei 60% und damit nicht sehr niedrig. Zum Vergleich vor der Umstellung lag die Bounce Rate bei ca. 90%.

Trigger Verbinden [Trigger Gruppe]

Zwei Trigger in Abhängigkeit voneinander zu verbinden, war lange Zeit sehr kompliziert. Standardmäßig kann ich zwar mehrere Trigger jedem Tag hinzufügen. Diese stehen jedoch in ODER Abhängigkeit. Feuere den Tag Wenn Scroll-Tiefe 50% oder Verweildauer länger als 3 Minuten. Wir wollen aber kein ODER sondern ein UND hier stehen haben. Früher wurde dies über komplizierte Ausnahmen etc. gelöst.

Am einfachsten geht es jetzt jedoch über eine Trigger Gruppe.

Da wir bereits beide Trigger erstellt haben, müssen wir diese nur noch einer Trigger Gruppe hinzufügen:

Beispiel einer Trigger Gruppe im Google Tag Manager

Super jetzt fehlt nur noch der Tag.

Unter Tags -> Neu -> Google Analytics Universal Analytics auswählen und Event einstellen:

Welche Werte hier eingetragen werden, ist nicht so wichtig. Wichtig ist nur, dass in diesem Fall, dass Feld: „Treffer ohne Interaktion“ auf „Falsch“ gelassen wird.

Fazit

Durch Ergänzungen im Bereich Scroll Tracking und das Verknüpfen von Tags lassen sich deutlich realistischere Daten in Google Analytics sammeln. Das Tracking von Content-Engagement kann auch im Conversion-Tracking eingesetzt werden. Mehr dazu im Conversiontracking-Guide.

Erhalte exklusive Analytics Tipps, die ich nur mit E-Mail Abonnenten teile.