LW IT Solutions
« Blog Overview /Digital Analytics / Die Matomo-Tracking-API antwortet auf alles mit 200
This post in other languages:

Die Matomo-Tracking-API antwortet auf alles mit 200

Die Matomo-Tracking-API antwortet auf alles mit 200
Inhalt
  1. Was ein Treffer mindestens braucht
  2. Die Besucherkennung entscheidet über alles Weitere
  3. Custom Dimensions sind nur Nummern
  4. Was nur ein Server senden darf
  5. Warum ein Treffer lautlos verschwindet

Matomo lässt sich ohne eine Zeile JavaScript füttern: eine einzige HTTP-Anfrage an matomo.php trägt einen Seitenaufruf, ein Ereignis oder ein Ziel. Damit ist sie der naheliegende Weg, um festzuhalten, was ein Browser nie sieht – eine im Backoffice bestätigte Bestellung, eine telefonisch gekündigte Mitgliedschaft, ein durchgelaufener Stapelauftrag.

Die Eigenschaft, die sie angenehm macht, ist zugleich die, die das Suchen nach Fehlern erschwert. Der Endpunkt antwortet auf jede Anfrage gleich: HTTP 200 und ein leeres Bild, ob der Treffer aufgezeichnet, stillschweigend verworfen oder auf eine Seite gerichtet wurde, die es gar nicht gibt. Alles Folgende handelt davon, diese drei Fälle auseinanderzuhalten, ohne dass die Antwort etwas dazu sagt.

Eine Anfrage an matomo.php in ihre Parameter zerlegt, gruppiert in Pflichtfelder, Felder für die Zuordnung und Felder, die nur mit einem Token wirken, darunter die stets gleiche Antwort mit leerem Bild
Drei Gruppen von Parametern, eine Antwort für alle: HTTP 200 und ein leeres Bild.

Was ein Treffer mindestens braucht

Drei Parameter entscheiden darüber, ob überhaupt etwas aufgezeichnet wird: idsite für die Seite, zu der der Treffer gehört, rec=1 als der Schalter, der aus einer Anfrage eine Aufzeichnung macht, und etwas, das den Treffer benennt – eine url, ein action_name oder beides. Ohne rec=1 wird die Anfrage genau wie zuvor beantwortet, und gespeichert wird nichts.

Alles Weitere ist in dem Sinne freiwillig, dass der Treffer auch ohne es überlebt, und selten freiwillig in dem Sinne, dass der Bericht brauchbar bleibt. Ein Treffer ohne Adresse erscheint namenlos in den Berichten – jene Art Eintrag, die Monate später auffällt und sich dann nicht mehr zuordnen lässt.

Die Besucherkennung entscheidet über alles Weitere

Der Parameter _id ist eine Besucherkennung aus genau sechzehn Hexzeichen. Nicht fünfzehn, keine UUID mit ihren Bindestrichen, nicht die zweiunddreißig Zeichen eines MD5-Hashes – was das Format verfehlt, übergeht Matomo stillschweigend, und auf dem Stillschweigen liegt die Betonung.

Was dann geschieht, ist schlimmer als ein Fehler. Ohne brauchbare _id leitet Matomo den Besucher aus IP-Adresse und Browserkennung ab, was im Browser leidlich funktioniert und auf einem Server zusammenbricht: jeder Treffer kommt von derselben Adresse mit derselben Kennung, der Verkehr eines ganzen Tages verschmilzt also zu einem einzigen Besucher mit bemerkenswert vielen Aktionen.

Erkennbar ist das an einem Bericht, in dem ein Besucher den größten Teil der Ereignisse auf sich vereint, während die Zahl der Besuche flach bleibt. Das ist kein Bot, sondern ein Stapelauftrag ohne Kennung.

Custom Dimensions sind nur Nummern

Dimensionen werden als dimension1, dimension2 und so weiter übergeben, und die Nummer ist keine Bezeichnung – sie verweist auf einen Platz, den es in der Oberfläche von Matomo geben muss, bevor etwas hineingeschrieben werden kann. Ein Wert an eine nicht eingerichtete Nummer wird angenommen und verworfen.

Das zweite, was zu treffen ist, ist der Geltungsbereich. Eine Dimension mit Besuchsbereich hält einen Wert je Besuch und wird von jedem späteren Treffer überschrieben, der sie trägt; eine mit Aktionsbereich hält einen Wert je Aktion. Ein Tarifname im falschen Bereich ergibt entweder einen Wert, der sich mit dem letzten Seitenaufruf ändert, oder einen, der sich nicht als Segment über den Besuch verwenden lässt.

Was nur ein Server senden darf

Eine Handvoll Parameter verändert Daten, die eine Anfrage normalerweise nicht anfassen darf: cip für die echte IP-Adresse des Besuchers, cdt für einen anderen Zeitpunkt als jetzt, dazu die geografischen Felder. Alle verlangen token_auth, und ohne dieses übergeht Matomo sie, statt die Anfrage abzulehnen.

Das Token gehört auf einen Server und sonst nirgendwohin. Im Browser liest es jeder Besucher mit, und es gewährt kein Lese-, sondern ein Schreibrecht: wer es besitzt, schreibt beliebige Treffer in die Statistik, und hinterher sind sie nicht mehr von den echten zu unterscheiden. Wo eine Seite selbst Treffer senden muss, sendet sie diese Parameter eben nicht mit.

Eine Grenze gilt auch mit Token: ein eigener Zeitpunkt, der mehr als etwa einen Tag zurückliegt, wird abgewiesen. Eine Woche Geschichte nachzutragen ist deshalb keine Frage von cdt, dafür braucht es den Logimporter oder einen unmittelbaren Import.

Warum ein Treffer lautlos verschwindet

Ursache Was zu sehen ist
Fehlendes rec=1 Überhaupt nichts, und die Anfrage sieht völlig gewöhnlich aus.
Falsche idsite Die Treffer landen in einer anderen Seite, meist in der mit der Nummer 1.
_id im falschen Format Alle Treffer verschmelzen zu einem Besucher, die Zahl der Besuche steigt nicht mehr.
cdt ohne Token Der Treffer wird aufgezeichnet, mit dem Zeitpunkt des Eingangs statt dem gemeinten.
Nicht eingerichtete Dimension Der Treffer wird aufgezeichnet, die Dimension nicht.

Die Prüfung, die das meiste davon in einer Minute beendet, ist das Besucherprotokoll mit geöffneter Echtzeitansicht, während die Anfrage abgeht. Ein Treffer, der dort erscheint, ist aufgezeichnet; einer, der ausbleibt, wurde verworfen, und die Liste oben sagt, wo zu suchen ist. Die Antwort wird es nie tun.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

ALL ARTICLES & CATEGORIES

CCTV

Diese Rubrik per RSS verfolgen

Cloud & AI

Diese Rubrik per RSS verfolgen

Data Privacy

Diese Rubrik per RSS verfolgen

Digital Analytics

Diese Rubrik per RSS verfolgen

Digital Marketing

Diese Rubrik per RSS verfolgen

IT & Networks

Diese Rubrik per RSS verfolgen

Raspberry Pi

Diese Rubrik per RSS verfolgen

Smart Home

Diese Rubrik per RSS verfolgen

Web Entwicklung

Diese Rubrik per RSS verfolgen

Wordpress Hacks

Diese Rubrik per RSS verfolgen