Server-vs-Client-Abgleich
Kunden vergleichen ihre Zenovay-Zahlen regelmäßig mit GA4, Stripe-Belegen oder ihren eigenen Backend-Logs und stellen fest, dass die Zahlen nicht ganz übereinstimmen. Manchmal meldet Zenovay mehr Ereignisse, manchmal weniger. Die ehrliche Antwort lautet: Jedes Analytics-Tool — auch Zenovay — liefert eine Schätzung auf Basis dessen, was den Browser, was den Server und was eine Webhook-Bestätigung erreicht hat.
Der Abgleich ist Zenovays Mechanismus, um diese Lücke mit Konfidenz-Labels zu quantifizieren, statt sie zu ignorieren.
Was verglichen wird
Der Abgleich läuft als täglicher Job, der drei Wahrheitsschichten pro Website, Metrik-Typ und Tag vergleicht:
| Schicht | Was sie misst | Wo sie liegt |
|---|---|---|
| Client | Vom Browser-Tracker ausgelöste Ereignisse | page_views, user_events mit source = 'browser' |
| Server | Über POST /api/v1/events ingestierte Ereignisse | Dieselben Tabellen, source = 'server' |
| Webhook | Stripe-/LemonSqueezy-/Polar-Webhook-Bestätigungen | payment_events mit status = 'succeeded' |
Für jedes (Website, Tag, Metrik)-Tripel werden gespeichert: wie viele Ereignisse jede Schicht gesehen hat, wie viele übereinstimmen, der geschätzte Verlust in Prozent und ein primärer Mismatch-Grund aus einer festen Liste.
Die drei V1-Metriktypen
V1 deckt die drei Metriken ab, für die es eine eindeutige Wahrheitsschicht gibt:
- Seitenaufrufe — Client (Browser) vs. Server (
POST /api/v1/events). - Ziel-Abschlüsse — Client-Zielereignisse vs. serverseitige Zielereignisse.
- Umsatz-Ereignisse — Client-Kaufereignisse vs. Stripe-Webhook-Wahrheit (
payment_events).
Benutzerdefinierte Ereignisse, Identify-Aufrufe und andere Ereignistypen sind in V1 nicht enthalten — sie haben keine vergleichbare Wahrheitsschicht.
Wie der Verlust geschätzt wird
Für Seitenaufrufe und Ziele ist die Wahrheitsschicht server_count. Für Umsatz ist die Wahrheitsschicht webhook_count (der Webhook des Zahlungsanbieters ist die Quelle der Wahrheit — er hat tatsächlich abgerechnet).
geschätzter_Verlust = (Wahrheit - Client) / Wahrheit × 100
Negative Werte sind erlaubt: Wenn der Server mehr Ereignisse erfasst hat als der Browser-Tracker, ist auch das eine Information — Ihr Tracker hat Ereignisse verpasst, die die serverseitige Erfassung aufgefangen hat. Genau deshalb betreibt man beides.
Konfidenz-Labels
Jede Abgleichszeile trägt eines von drei Labels:
| Label | Wann es greift |
|---|---|
| Hohe Konfidenz | Beide Schichten haben jeweils ≥100 Ereignisse, geschätzter Verlust unter 30 %. |
| Mittlere Konfidenz | Eine der Schichten liegt im Bereich 50–100 Ereignisse, oder der Verlust liegt zwischen 30 % und 60 %. |
| Begrenzte Daten | Unter 50 Ereignisse auf einer Schicht, Verlust über 60 %, oder nur eine Schicht überhaupt vorhanden. |
„Begrenzte Daten" ist kein Fehler, der behoben werden muss — es bedeutet nur, dass die Stichprobe zu klein oder einseitig ist, um eine sichere Aussage zu treffen. Konfidenz-Labels halten die Trust-Ansicht ehrlich.
Mismatch-Gründe
Wenn der Abgleich eine relevante Lücke erkennt, wählt er einen von sieben Gründen, sortiert nach Erkennungspriorität:
| Grund | Erkennungsregel | Handlungsbedarf? |
|---|---|---|
webhook_delay | Client > Webhook um ≥20 % UND heutige Webhook-Anzahl ≥2σ unter 6-Tage-Mittel | ✓ |
client_blocked | Server > Client um ≥10 % | ✓ |
route_mapping | Top-1–2-Routen verursachen ≥50 % der Lücke | ✓ |
duplicate_suppression | Die Ingest-Pipeline hat Browser-Ereignisse innerhalb des Tages dedupliziert | informativ |
id_stitching | Hohe Varianz nicht zugeordneter Client-Ereignisse über Besucher-Segmente | informativ |
no_server_layer | server_count = 0 und client_count > 0 | informativ |
unknown | Keine Schwelle erreicht | informativ |
Drei Gründe sind handlungsrelevant — die Maßnahme liegt bei Ihnen (CSP korrigieren, SDK-Retry konfigurieren, Stripe-Webhook-Auslieferung prüfen). Die anderen vier liefern diagnostischen Kontext.
Wo Sie es sehen
Öffnen Sie ein beliebiges Domain-Dashboard in app.zenovay.com und wählen Sie den Reiter Trust. Sie sehen dort:
- Den geschätzten Tracking-Verlust der letzten 7 Tage mit Konfidenz-Label.
- Eine Aufschlüsselung pro Metrik (Seitenaufrufe, Ziele, Umsatz) mit Client- / Server- / Übereinstimmungs-Zahlen und der Lücke als gestreifter Abschnitt einer Vollständigkeitsleiste.
- Die wichtigsten Mismatch-Gründe nach Ereignisauswirkung sortiert, mit Handlungsempfehlungen für die handlungsrelevanten.
- (Pro und höher) Eine Drilldown-Tabelle pro Route, die zeigt, welche Routen den größten Anteil an der Lücke haben.
Was es nicht ist
- Es ist keine Garantie für Korrektheit. Es ist eine Messung der Messqualität.
- Es ist kein Versuch, die Lücke zu schließen. Die Maßnahmen — CSP-Konfiguration, Webhook-Konfiguration, Route-Normalisierung — liegen auf Ihrer Seite.
- Es nennt keine Drittanbieter-Dienste, die Sie nicht ohnehin schon nutzen. Mismatch-Gründe bleiben generisch, damit die Handlungsempfehlungen unabhängig von Ihrem Stack relevant bleiben.
- Es führt keine neue Datenerfassung ein. Der Abgleich liest bestehende Zeilen aus
page_views,user_eventsundpayment_events— keine neuen Cookies, keine neuen Identifier, die Cookieless-Tracking-Garantie bleibt unverändert.
Plan-Verfügbarkeit
Der Trust-Reiter selbst ist in jedem Plan verfügbar. Drilldown pro Route und Handlungsempfehlungen für handlungsrelevante Gründe sind ab Pro verfügbar. Free zeigt Aggregate und Grund-Bezeichnungen ohne Routen-Detail.
Verwandte Konzepte
- Absprungrate — ein weiteres Qualitätssignal, das vom Abgleichs-Kontext profitiert.
- Serverseitige Ereignis-Erfassung — der
POST /api/v1/events-Endpunkt, der die Server-Schicht versorgt. - Cookieless-Tracking — warum der In-Memory-Tracker den Abgleich nicht mit veralteten Identifiern verschmutzt.