Matomo und AJAX Requests


#1

Ich verwende eine sehr spezielle Webserver Lösung, die aber nicht nur einfach ein weiterer Webserver ist, sondern mit zusätzlichen und ansonsten unbekannten Features daherkommt. Dazu gehört u.a. die Möglichkeit bestimmte Features des Webservers vom Backend einer Applikation aus zu steuern. z.B. Wordpress in Form eines WP Plugins. Eine dieser Zusatzfunktionen ist die Möglichkeit eine Seite vorzuladen, wenn man mit dem Cursor über einen Link fährt. Beim Mouseenter wird die Seite hinter dem Link vorgeladen, aber nur der dynamische Content, also keine statischen Sourcen. Das Ganze funktioniert mit AJAX, bzw. in Kombination mit dem darauf abgestimmten Webserver Cache. Beim Mouseenter wird die verlinkte Seite vorgeladen. Klickt man dann auf den Link geht der Seitenaufruf so schnell, dass selbst die Netwzerk Console in den Dev Tools des Browsers gar nicht so schnell reagieren kann, um den jeweiligen Request anzuzeigen. Vielmehr ist es dann so, dass nur mehr noch die URL der Startseite in den DevTools angezeigt wird. Gleichermaßen wirkt sich das dann auch auf Matomo aus. Ich sehe in Matomo zwar die Requests, aber immer nur die URL der Startseite. Das Problem lösen würde mit Einschränkung die Möglichkeit AJAX Requests zu tracken, aber Matomo kann meines Wissens keine AJAX Requests.

Oder doch?


(Lukas Winkler) #2

Hallo,

Deine mouseover-Lösung macht gewissermaßen aus der eigentlichen Webseite eine Single Page Application, da es keine “echten” Seitenaufrufe mehr gibt, sondern nur in Javascript der Seiteninhalt ersetzt wird.
Das kann Matomo nicht automatisch erkennen, aber du kannst einfach Matomo sagen, wenn eine Seitenänderung passiert ist indem du _paq.push(['setCustomUrl',die_neue_url]); und dann _paq.push(['trackPageView']); aufrufst.

Mehr details dazu findest du hier:

https://developer.matomo.org/guides/spa-tracking


#3

Es stimmt zwar nicht ganz, wie Du es verstanden hast, also dass der Seiteninhalt in Javascript ersetzt werden würde, weil der Request beim tatsächlichen Anklicken des Links ein ganz normaler HTTP Request ist, aber ich schau mir die Infos unter dem gezeigten Link mal an. Danke erstmal!

Nur zur Info und zum Anschauen. https://www.wp.quic.network (WP Demo Installation mit 1 Mio Beiträgen)


(Lukas Winkler) #4

Hallo,

Das glaube ich nicht.

Im Firefox kann man das auf der von dir verlinkten Seite schön sehen, wenn man in der Konsole “Nicht leeren” anhakt. Seitenwechsel sieht man dann im Log und nur wenn man klickt bevor der AJAX request fertig ist, wird ein klassischer Seitenwechsel gemacht. Ansonsten wird beim Klick nur der Seiteninhalt verändert und mit der History API dem Browser gesagt, dass er die URL und den History Eintrag anpassen soll.

grafik

Der Block am Ende von https://www.wp.quic.network/min/e03f3.js ist zwar nicht sehr lesbar, aber history.pushState ist trotzdem darin zu finden.

Und in Events and script re-evaluation in InstantClick wird auch erklärt, wie man eigenes JS beim Seitenwechsel ausführen kann:

InstantClick.on('change', function() {
  _paq.push(['trackPageView']);
});

#5

Du hast natürlich recht und hätte das korrekterweise besser spezifizieren sollen. Tricky ist das Ganze aber allemal und bin mir nicht sicher, ob sich das so machen lässt wie das in der Dokumentation zu der InstantClick Funktion beschrieben ist. Nachdem das aber nicht nur Matomo, sondern auch GA betrifft, muss ich mich mal mit dem Webserver Hersteller auseinandersetzen, wie die sich das vorgestellt haben. In jedem Fall vielen Dank für Deine Hilfe.