Berechnung der Verweildauer

Hallo zusammen,
ich habe folgendes Problem mit der durchschnittlichen Verweildauer.

Wenn ich in die Datenanalyse einsteige, ziehe ich mir immer Seiten heraus, die z.B. eine hohe Absprungrate haben und eine hohe Verweildauer. In dieses Muster fallen meistens Seiten, mit denen sich der Nutzer beschäftigt - aber ihn keine weiteren Themen mehr interessieren. Klassisch News-Artikel - Interesse - lesen - und weg.

Die durchschnittliche Veweildauer pro URL wird in Matomo aber anders berechnet als in Google Analytics. In Google Analytics werden die Absprünge nicht in den Durchschnitt einbezogen. Bei Abspüngen wird ja im Default die Verweildauer auf 00:00:00 gesetzt. Ich habe hier nun mal folgenden Screenshot:

Ich habe mir also Segmente angelegt und die Besucher gesplittet. Die Visits die abgesprungen sind (5 Einstiege), zeigen die 0 Sekunden an. Die Besucher die weiter navigiert oder halt durch navigiert sind, haben eine Dauer von 1:30 erzeugt (24 Aufrufe).
Gehe ich nun über alle Besucher, ist die durchschnittliche Dauer auch 1:30.
Sprich die Dauer der 24 Ansichten entspricht der Dauer der 29 Ansichten.

Matomo
Gleiches habe ich nun in Matomo durchgespielt.
Dazu habe ich mir eine Seite herausgepickt und im Besucherlog die Daten betrachtet.

Hier habe ich also in der Summe eine Verweildauer von 63 Sekunden
Diese wird nun durch 7 geteilt und es kommt ein Wert von 9 Sekunden heraus.
In der Berechnung werden also die Besucher die abgesprungen sind mit einkalkuliert.

Auf diesem Screenshot sieht man, dass bei den Seitenaufrufen mit Verweildauer im Schnitt 12 Sekunden vorhanden sind. Über alle Besucher habe ich nur 9.
Ich hätte eigentlich erwartet, dass diese beiden Werte gleich sind.
Das ist jetzt nur exemplarisch. Ich kann gerne noch andere Bespiele aufzeigen.

@Lukas @peterbo
Habe ich einen Denkfehler ?

1 Like

Hi,

generell ist es schwierig unterschiedliche Seiten, die nicht mit dem selben System gemessen werden, zu vergleichen.

Bei einer Aussage muss ich dich aber korriegieren.

Die Besucher die weiter navigiert oder halt durch navigiert sind, haben eine Dauer von 1:30 erzeugt (24 Aufrufe).

Wenn ich es nun korrekt im Kopf habe ist man bei Matomo ein Bouncer wenn man weniger als eine Seite besucht hat.
So steht es auch in den Standard Bericht im Standard Dashboard als Annotation.

Das ist bei Google Analytics nicht der Fall.
Hier kannst du eine Seite besuchen, eine Interaktion wie ein Video abspielen starten.
Wenn das erfasst wird und man nonInteraction: false hat (was per default gesetzt ist), dann ist man schon kein Bouncer mehr.
Es wurde ein Hit an GA gesendet.
Dadurch hat GA schon einmal eine mindeste erste Verweildauer für diese Session.
In GA zählt jeder Hit.

Meine Frage ist nun auch.
Wie ist es eigentlich genau bei Matomo, vor allem wenn man den Heartbeat Timer gesetzt hat und ggf. auch Events über Interaktionen erfasst.

Hi Trackingninja,
Danke für die Antwort.
Mir geht es ja hauptsächlich darum, dass GA die Null-Werte nicht in den Durchschnitt einfließen läßt. Matomo leider schon. Das will ich mit den Screenshots zeigen.

Wenn Zeiten einer Seite da sind, passt das ja. Aber viele Seitenaufrufe ohne Verweildauer senken so den Durchschnitt. Das ist meines Erachtens nicht richtig.

GA macht das wie oben gezeigt anders. Unabhängig von Events oder Heartbeat Timern. Die erzeugen ja dann Zeiten.
Gerade GA Umsteiger verwirrt diese Berechnung. Das hatte ich jetzt schon einige Male.

Hi @Thomas_Zeithaml

Damit ich das richtig verstehe: Wenn wir die Durchschittliche Besuchszeit pro Seite berechnen, sollte der Durchschnitt nur für Seiten mit Besuchsdauer berechnet werden. Also “Gesamtsumme Besuchszeit aller Besuche geteilt durch die Seitenansichten mit Besuchsdauer”. Vs aktuell wird durch alle Seitenansichten geteilt. Verstehe ich das richtig? Das macht definitiv Sinn für mich.

Code-technisch müssten wir hier also durch nb_hits_with_time_spent teilen anstatt generall durch nb_hits: https://github.com/matomo-org/matomo/blob/4.0.0-b3/plugins/Actions/Columns/Metrics/AverageTimeOnPage.php#L37 (aktuell gibt es nb_hits_with_time_spent noch nicht. Dazu müsste der Archiver angepasst werden und es würde quasi nur für neue Reporte funktionieren es sei denn man würde alte invalidieren)

Verstehe ich das richtig?

1 Like

Genau richtig verstanden :wink: In Google Analytics kann man die Berechnung gut nachvollziehen. Siehe Screenshot von oben.
Viele Umsteiger haben diese Logik bei mir immer bemängelt.

Für mich wäre halt V4 der perfekte Umstieg. Sprich da kann man das auch kommunizieren, das alte Berichte da anders gearbeitet haben.

1 Like

@Thomas_Zeithaml ist das quast https://github.com/matomo-org/matomo/issues/9198 ?

Ja, das schaut für mich genau nach dem Thema aus.

Sehr gut trifft es dieser Kommentar:

  • In Count sind auch die Nuller drin
  • bei Sum() machen 0er Werte ja keinen Unterschied.

Das bedeutet ja nicht, dass wir die time_on_site falsch berechnen. Früher wurde da ja mal 10 Sekunden - per Default reingeschossen :wink: Aber eben die Summe.

Wenn man noch Events auf der Seite hat, könnte das noch die Verweildauer beeinflußen. In Google Analytics kann man noch steuern, aber die Zeit dann weiterläuft oder ob es ein neuer Hit / Seitenansicht ist. Aber die Time_on_site Berechnung würde ich hier mal außen vor lassen.

Mir geht es hier ja speziell um die “durchschnittliche Dauer” - also die Summe der einzelnen Werte

Also 5 Besucher
Besucher 1: 60 Sek
Besucher 2: 0 Sek
Besucher 3: 0 Sek
Besucher 4: 0 Sek
Besucher 5: 0 Sek

Wenn man aus der Google Welt kommt, erwartet man hier 1 Minute durchschnittliche Verweildauer, weil die anderen nicht erfasst werden konnten.
Matomo weist hier aber 12 Sekunden aus.

Hi @Thomas_Zeithaml sorry, ich habe Deinen Post erst gerade mitbekommen.

@thomas_matomo - sollte es dann mit der aktuellen Heartbeat-Implementierung eigentlich keine Besucher mit 0s Besuchszeit mehr geben (oder zumindest nur eine minimale Anzahl)? Ich beobachte in meinen Instanzen allerdings auch, dass 80% der Bouncer keine visit_duration bekommen. Gibt es beim “aktionsbasierten” heartbeat eine Mindestaufenthaltsdauer?

Mindestaufenthaltsdauer sind meine ich 15 Sekunden, kann aber auf 5 Sekunden gesetzt werden. also paq.push([‘enableHeartBeatTimer’, 5])

1 Like

Das ist doch aber unabhängig vom Heartbeat Timer.
HT wäre ja nur ein Workarround.

Theorie: Eigentlich müssten alle Zeiten (auch von Bouncern) eingerechnet werden, weil diese nie 0s sein dürften, da auch Bouncer eine Aufenthaltsdauer haben.

Realität: So genau messen kann man das leider nie, da das mit der visibility API nicht immer so rund läuft und wohl auch eine gewisse Zeit nötig ist (dazu gibt es meiner Erinnerung nach auch Tickets, z.B. https://github.com/matomo-org/matomo/issues/16459), bis das System bei den passenden Events die Pings sendet. Daher wäre es definitiv richtig, die 0s Besucher aus der Berechnung zu nehmen, da es sich im Prinzip um Messfehler handelt.

Sollte: So wenig Besucher wie nur möglich sollten eine Aufenthaltsdauer von 0s erhalten, trotzdem sollte man diejenigen herausrechnen, die 0s Besuchsdauer erhalten haben.

Zwei Punkte die noch beachtet werden sollten:

  • Es sind nicht nur Bouncer - sondern auch letzte Seiten
  • Session-Timeouts - also 1800 Sekunden inaktivität.

Alle beide sollten meines Erachtens da einfach nicht mit 0 Sekunden in den Durchschnitt einfließen. Wie du sagst, sind es ja eher Messfehler oder Datenerhebungsprobleme :wink:

Es ist beides (GA, Matomo) nicht optimal. Es sind bei Matomo nicht nur Messfehler oder Datenerhebungsprobleme, sondern auch default Einstellungen, die zu 0 sec visit time führen. Selbst mit heartbeat gibt es per default 0 sec visit times. Siehe dazu hier:
“Note: When testing the heart beat timer, remember to make sure the browser tab has focus and not eg. the developer tools or another panel.”
und hier:
https://developer.matomo.org/guides/tracking-javascript-guide#accurately-measure-the-time-spent-on-each-page
und da gilt zudem das 15 sec default.

Wenn die 0 sec visit time aus dem Ø herausgenommen werden, dann ist zu beachten, dass der Ø nur für die mit >0 sec gilt, also nur für einen %-Satz. Wer über 50% 0 sec hat, der kann da leicht getäuscht werden. Das gilt dann für beides (GA, Matomo), fals Matoma das fixen sollte. Der jetzige Zustand in Matomo macht das Checken der visit time überflüssig, weil verfälscht. kann man also eigentlich deaktivieren, oder reparieren.

Hallo zusammen,
ich arbeite mich gerade in Matomo ein und bin auch auf genau das Problem gestoßen. Nun bin ich kein Entwickler und frage mich, wie ich das Problem lösen kann. Gibt es da inzwischen eine Lösung? Ein Plugin oder ähnliches, womit ich eine genauere Verweildauer sehen kann?
Beste Grüße
Sue-Ann

Hallo SueAnn,

Keine Ahnung.
Am Code hat sich nichts geändert:

Wie zuletzt von mir erwähnt wird die Ø Verweilzeit von mir ignoriert. Bei einer meiner Websites ist der Matomo Tracking Code jedoch sehr speziell konfiguriert, da es auch viele tatsächliche 0 sec Visits per Page gibt, jedoch diese mit mehr als 1 Action, sowie auch einiges an Visitors mit 0 sec und 1 Page visit. Es ist sehr speziell. Zudem kommen noch die nicht korrekt getrackten Visits und Visitor hinzu. Bei denen fehlt die Entry Page, oder die Time on Page, oder der Page-Title/Path. Zum “berechnen” der Ø Verweilzeit wird gelegentlich das Visitor Log gesichtet und ohne tatsächlich zu Rechnen ein Überblick verschafft.

Vielleicht ist es möglich mit Segments einen entsprechenden Filter zu basteln, der alle 0 sec Visits ausschließt, womit der Ø wieder passen müsste.

Hallo @melbao ,

und Danke für deine schnelle Rückmeldung. Ich habe das jetzt Mal so an unser IT-Team weiter gegeben. Die perfekte Lösung wird es wahrscheinlich nie geben, auch GA ist da ja nicht optimal. Schade eigentlich, da der Wert an sich echt interessant ist.

Eine Verbesserung wäre es auch, wenn du z.B. ein Ereignis einbaust. Das kann z.B. die Scrolltiefe sein oder z.B. eine Elementsichtbarkeit. Dann wird der Seite die Zeit zwischen Aufruf und Ereignisauslösung als Verweildauer zugerechnet.