Fortsetzung des Beitrags: Der (un)heimliche Leser – Messung des Besucherengagements in der Webanalyse
Ziel des Einsatzes des HeartBeatTimers ist das genauere Messen der Besuchszeit und Reduzierung der Absprungrate. Hierzu löst eine JavaScript Funktion immer nach Ablauf einer definierten Zeit ein Ereignis aus. Je kürzer das Intervall des auslösenden Ereignisses eingestellt ist, desto genauer kann ich die Besuchszeit messen. Bei Einstellung 1 (bzw. 1000 Millisekunden bei Google), wäre eine sekundengenaue Messung möglich. Allerdings hat diese Einstellung zwei (Matomo) bzw. einen (Google) erheblichen Nachteil. Der gemeinsame Nachteil ist der, dass die Absprungrate quasi auf 0 gesetzt wird und somit keinen brauchbaren Wert mehr liefert. Bei Matomo kommt hinzu, dass die Last des eigenen Servers deutlich ansteigen dürfte und die Seitenladezeit entsprechend verlängert.
Wann soll ein HeartBeat ausgelöst werden?
Daher muss ich mir zuvor die Frage stellen, welcher Wert hier eingestellt werden soll. Die bislang gemessene durchschnittliche Besuchszeit ist hier kein guter Maßstab, da sie pauschal für alle Seiten gilt. Ich beabsichtige aber nicht, die Performanz der Datenschutzerklärung zu messen, sondern die Seiten, auf deren Inhalt es mir ankommt, weil sie den Unternehmenszielen hinsichtlich Branding, Leadgenerierung, Bewerbungen oder Verkäufen dienen. Auch die Verweilzeiten auf der Startseite ziehen häufig die durchschnittlichen Besuchszeiten nach unten, da Besucher häufig weiterklicken.
Im Prinzip muss man abwägen, ob die Absprungrate als wichtiger Wert weiterhin gemessen wird, oder ob die genaue Messung der Besuchszeit im Vordergrund steht. Spiel die Absprungrate als Messwert eine Rolle, würde ich den HeartBeat nicht unter 15 Sekunden setzen, etwa die doppelte Zeit, die nach einem ersten Eindruck der Seite schon eine nähere Beschäftigung mit der Seite anzeigt.
Für Blogs und umfangreichere Contentseiten veranschlage ich entweder eine durchschnittliche Lesezeit, die mir als Ausgangsparameter dient. Hier kann ich nun bestimmen, dass ich nach einem Viertel oder einem Drittel der Lesezeit, einen Herzschlag auslöse. Sehr elegant wäre selbstverständlich, die Wortzahl seitenweise zu messen und daraus eine seitenvariable Besuchszeit zu definieren. Oder ich setze die Zeit, die zum Lesen der ersten Abschnitte ansetze, die nach dem Prinzip der umgekehrten Pyramide die wesentlichen Inhalte enthalten.
HeartBeat bei Matomo
Hierzu fügt man folgende Codezeile in den Trackingcode ein:
_paqpush([‘enableHeartBeatTimer’]);
In diesem Falle löst die Funktion ein Ereignis aus, wenn der Besucher nach mindestens vergangenen 15 Sekunden den Tab wechselt.
Komfortabler scheint mir die erweiterte Funktion, die angibt, nach welcher Zeitspanne ein Ereignis ausgelöst wird. Dazu wird die Zeit in Sekunden angegeben, nach der der HeartBeatTimer ein Ereignis auslöst.
_paqpush([‘enableHeartBeatTimer’, 30]);
Der numerische Wert gibt die Zeit in Sekunden an, nach der ein Ereignis ausgelöst wird.
Bei stark frequentierten Seiten kann der HeartBeatTimer zu einer gewissen Serverlast führen, v.a. wenn die Daten regelmäßig in kurzen Abständen auf den Server geschrieben werden. In dem Falle empfiehlt sich ggf. ein Cronjob, der am frühen Morgen den Datentransfer erledigt. Die Korrelation HeartBeat und Absprungrate ist auch Thema in meinen Matomo Seminaren.
Der HeartBeat bei Google Analytics
Auch bei Google gibt es den HeartBeat, der ein Event auslöst. Unter Absehen der älteren Versionen sieht der ergänzende Code für Universal Analytics so aus:
<script>
setInterval(function() {
ga(’send‘, ‚event‘, ‚HeartBeat‘, ’30s‘);
}, 30000);
</script>
wobei die Kategorie ‘HeartBeat’ natürlich auch anders benannt werden kann, z.B. ‘Intervall’, die Aktion lautet dann ‘30s’. Dies entspricht der Funktionsanweisung 30000, die das Intervall in Millisekunden angibt.
Wer den Google Tag Manager verwendet, kann als Trigger den Timer verwenden, der auf allen Seiten ausgelöst wird:
Und sodann folgenden Event-Tag einrichten, dem dann dieser Trigger zugeordnet wird:
Mir kommt es hier mehr um die inhaltliche Lösung an, die Absprungraten und Leserengagement in ein möglichst realistisches Verhältnis bringt. Eine detaillierte technische Anleitung für den HeartBeat Event bietet folgende Seite, die auch Codebeispiele für die ältere Google Analytics Bibliothek (_gaq.push) enthält: https://dg.agency/blog/ga-time-on-site-why-its-broke-and-how-to-fix-it/
Die ausgelösten Ereignisse stehen in dem Report Verhalten=>Ereignisse unter der jeweils vergebenen Kategorie.
Berechnung der Absprungrate in Matomo
Der HeartBeatTimer löst zwar ab einer gewissen Verweildauer eine Messung aus, die aber nicht als Event die Absprungrate beeinflusst. Also auch wenn der Besucher 10 Minuten auf einer Seite verbleibt und dann geht, ist das ein Absprung. Um die „wahre“ Absprungrate zu messen muss ich in Matomo also die Besuche segmentieren, die die Besuchszeit „0“ haben und auf die Gesantzahl der Besuche prozentual beziehen.
Demnächst mehr…