Zum Hauptinhalt springen
7 Min. Lesedauer

Core Web Vitals

Zenovay erfasst Googles Core Web Vitals (LCP, CLS, INP) sowie zwei ergänzende Metriken (FCP, TTFB) aus jeder echten Besucher-Session. Die Daten erscheinen im Tab Performance jedes Domain-Dashboards.

Keine Installation nötig. Die Erfassung der Web Vitals ist Teil des Standard-Trackers von Zenovay. Wenn Ihr Tracking-Skript bereits läuft, fließen Vitals automatisch, sobald Besucher Ihre Seiten laden.


Was die Web Vitals messen

Core Web Vitals sind Googles stabile Signale für die tatsächliche Seitenerfahrung. Sie erscheinen in der Google Search Console, fließen in das Ranking ein und korrelieren stark mit Absprungrate und Konversion.

MetrikWas sie misstGutVerbesserungswürdigSchlecht
LCP — Largest Contentful PaintWann der Hauptinhalt sichtbar wird≤ 2,5 s≤ 4,0 s> 4,0 s
CLS — Cumulative Layout ShiftWie stark sich sichtbarer Inhalt unerwartet verschiebt≤ 0,1≤ 0,25> 0,25
INP — Interaction to Next PaintSchlimmste Verzögerung zwischen Klick/Tipp und nächstem Paint≤ 200 ms≤ 500 ms> 500 ms
FCP — First Contentful PaintWann der erste Text bzw. das erste Bild gerendert wird≤ 1,8 s≤ 3,0 s> 3,0 s
TTFB — Time to First ByteWann das erste Byte vom Server eintrifft≤ 800 ms≤ 1,8 s> 1,8 s

Die Schwellenwerte folgen Googles veröffentlichten Empfehlungen und schlagen sich direkt in der Farbcodierung im Zenovay-Dashboard nieder (grün / gelb / rot).


Wie Zenovay die Daten erfasst

Die Erfassung erfolgt vollständig im Browser über die Standard-PerformanceObserver-API und den Navigation-Timing-Eintrag — ohne Drittanbieter-Bibliothek, ohne zusätzliches Skript.

Kurzer Ablauf:

  1. Sobald der Tracker initialisiert ist, registriert er Observer für largest-contentful-paint, layout-shift, event (für INP) und paint (für FCP).
  2. TTFB wird einmal aus performance.getEntriesByType('navigation')[0].responseStart gelesen.
  3. Die finalen Werte werden in einer einzigen Payload gebündelt und an POST /api/track/<Ihr-Tracking-Code>/performance gesendet, wenn der Besucher die Seite verlässt (visibilitychange → hidden, plus pagehide für den mobilen bfcache).
  4. Die API ergänzt jede Zeile um country_code, device_type, browser und — sofern verfügbar — connection_type.

Die Payload enthält keine Formularwerte, keine DOM-Inhalte und keine PII über das hinaus, was ein analytischer Pageview bereits enthält (die URL).

Ein Beacon pro Page-Lifecycle. Vitals werden genau einmal gesendet, wenn der Besucher eine Seite verlässt. Single-Page-Apps, die clientseitig routen, senden bei jedem Seitenwechsel einen neuen Beacon — genau wie bei Pageview-Events.


Wo Sie Ihre Daten finden

Öffnen Sie eine Domain in app.zenovay.com und klicken Sie auf den Tab Performance.

Sie sehen:

  • Eine Metrik-Sidebar mit aktuellem Wert, Schwellen-Rating und Perzentil-Verteilung für LCP / CLS / INP / FCP / TTFB.
  • Ein Detail-Panel mit dem Verlauf der gewählten Metrik im gewählten Zeitraum sowie einer kontextbezogenen Erklärung.
  • Routen- und Länder-Aufschlüsselungen, die zeigen, welche Seiten und Regionen am schlechtesten abschneiden.
  • Steuerelemente für:
    • Gerät — Alle / Desktop / Mobil
    • Perzentil — P75 / P90 / P95 / P99 (Google nutzt standardmäßig P75)
    • Zeitraum — je Tarif begrenzt (siehe unten)

Hinweise zu Perzentilen

Google nutzt für Ranking-Signale in der Search Console das 75. Perzentil echter Nutzer. Höhere Perzentile (P90, P95, P99) zeigen Ihre langsamsten Besucher — nützlich, wenn Sie eine bestimmte Regression oder eine Spitze langsamer Geräte untersuchen.


Tarif-Verfügbarkeit und Aufbewahrung

Die Erfassung der Web Vitals ist in jedem Tarif enthalten, einschließlich Free. Der Zugriff auf den Zeitraum ist tariflich gestaffelt:

TarifPerformance-Zeitraum
FreeLetzte 7 Tage
ProLetzte 30 Tage
ScaleLetzte 90 Tage
EnterpriseBis zu 1 Jahr

Diese Grenzen entsprechen den allgemeinen Analytics-Aufbewahrungsstufen — siehe Preise & Tarif-Limits für die zugrundeliegenden Regeln.


Web Vitals für eine einzelne Seite deaktivieren

Vitals sind standardmäßig aktiv. Um sie für eine einzelne getrackte Seite zu deaktivieren, setzen Sie das Feature-Flag in den Einstellungen dieser Seite:

{
  "feature_flags": {
    "enable_core_web_vitals": false
  }
}

Wenn das Flag auf false steht:

  • Der Tracker registriert die Observer überhaupt nicht (null Kosten im Browser).
  • Der API-Endpunkt akzeptiert den Beacon, speichert aber nichts (stiller No-Op für Anfragen, die unterwegs sind).

Zum Reaktivieren setzen Sie das Flag zurück auf true oder entfernen es ganz (Default: an).


Häufig gestellte Fragen

Warum fehlt INP unter Safari?

Safari hat den PerformanceObserver-Entry-Typ event mit interactionId erst sehr spät implementiert. In älteren Safari-Versionen meldet Zenovay LCP, CLS, FCP und TTFB und lässt INP für diese Session auf null. Das Dashboard zeigt dann einfach weniger INP-Stichproben, bis die Safari-Abdeckung aufholt — Sie müssen nichts tun.

Bekommen Single-Page-Apps pro Route-Wechsel einen Beacon?

Ja. Der Tracker setzt die Observer bei jedem getrackten Seitenwechsel zurück (einschließlich SPA-Routes, die pushState oder replaceState auslösen). Sie sehen eine Performance-Zeile pro Pageview, nicht eine pro Browser-Session.

Beeinflusst die Vitals-Erfassung die Performance meiner Seite?

PerformanceObserver ist eine passive Browser-API, die genau für diesen Anwendungsfall entworfen wurde. Die Observer feuern auf bestehende Browser-Events; es gibt kein Polling und keine zusätzliche Arbeit im Main-Thread. Der einzelne Beacon beim Page-Unload wird über fetch mit keepalive: true gesendet und blockiert daher die Navigation nicht.

Warum weichen meine Werte von Googles CrUX-Daten ab?

Zwei normale Gründe:

  1. Stichproben-Population. Zenovay misst jeden echten Besucher, der Ihre Seite lädt. CrUX misst nur Chrome-Nutzer, die der URL-Anonymisierung zugestimmt haben — eine strikte Teilmenge.
  2. Zeitfenster. CrUX ist ein rollierendes 28-Tage-Fenster nur über Chrome-Daten. Mit Zenovay wählen Sie Ihr eigenes Fenster und können nach Gerät, Perzentil, Route und Land filtern.

Beide Signale sind valide; sie beantworten leicht unterschiedliche Fragen. CrUX nutzt Google fürs Ranking; Zenovay nutzen Sie für die Fehleranalyse.

Wo finde ich die Schwellenwerte im Code?

Sie liegen in app-zenovay/lib/api/performance.ts (Frontend-Konstanten) und spiegeln Googles veröffentlichte Schwellen wider. Eine Änderung erfordert ein Code-Update — sie sind bewusst nicht kundenseitig konfigurierbar, damit die Labels "Gut" / "Verbesserungswürdig" / "Schlecht" produktübergreifend vergleichbar bleiben.


Fehlerbehebung bei leerem Dashboard

Wenn der Performance-Tab den Leerzustand zeigt ("No performance data yet"):

  1. Prüfen Sie, dass der Tracker feuert. Öffnen Sie die Install-Health-Diagnose. Wenn Pageviews nicht ankommen, kommen auch keine Vitals an.
  2. Prüfen Sie das Feature-Flag. Stellen Sie sicher, dass feature_flags.enable_core_web_vitals in den Einstellungen der Seite nicht explizit auf false steht.
  3. Geben Sie der Seite etwas Traffic. Vitals-Beacons feuern beim Page-Unload. Eine Seite mit sehr wenig Traffic — oder eine, die Sie nur selbst mit frisch geleertem Cache testen — braucht ggf. einige Sessions, bevor Zahlen erscheinen.
  4. Öffnen Sie das Dashboard mit weiterem Zeitraum. Eine neue Seite im Free-Tarif zeigt standardmäßig die letzten 7 Tage — frisch installiert sollten Sie auf das Maximum Ihres Tarifs erweitern.
  5. Browser-DevTools → Netzwerk. Filtern Sie nach Performance und suchen Sie nach einem POST an /api/track/<code>/performance. Die Antwort ist ein kleines JSON mit success: true.

Feuert der Request, erscheinen aber keine Daten, schreiben Sie [email protected] mit Ihrem Tracking-Code — wir prüfen, ob das websitespezifische Opt-out-Flag versehentlich gesetzt ist.


Verwandt

War diese Seite hilfreich?