Zum Hauptinhalt springen
5 Min. Lesedauer

Browser-Erweiterung

Der Zenovay Analytics Inspector ist eine WebExtension für Chrome und Firefox, die das Zenovay-Tracking-Skript auf jeder Seite erkennt und Live-Ereignisse in einem Popup anzeigt. Es ist ein Diagnose-Werkzeug — eine schnellere, browserinterne Alternative zu DevTools oder dem Installations-Verifizierungs-Flow im Dashboard.

Keine Telemetrie. Die Erweiterung führt nie Netzwerk-Aufrufe zu Zenovay durch. Der gesamte Zustand liegt in chrome.storage.session und wird beim Schließen des Browsers gelöscht.

Installation

Chrome Web Store

Demnächst — Einreichungspaket bereit. Wir verlinken hier direkt, sobald es freigegeben ist.

Firefox Add-ons (AMO)

Demnächst — Einreichungspaket bereit.

Aus dem Quellcode (für Entwickler)

git clone https://github.com/zenovay/extension-zenovay.git
cd extension-zenovay
npm install
npm run build

Dann in Chrome chrome://extensions öffnen, Entwicklermodus oben rechts aktivieren, auf Entpackte Erweiterung laden klicken und das dist/-Verzeichnis auswählen.

In Firefox about:debugging#/runtime/this-firefox öffnen, auf Temporäres Add-on laden klicken und dist/manifest.json wählen.

Das Badge lesen

BadgeBedeutung
(leer)Kein Zenovay-Tracking-Skript auf dieser Seite erkannt
Bernstein !Skript erkannt, aber noch keine Ereignisse ausgelöst
Grün ONSkript erkannt und Ereignisse werden ausgelöst
Blau CSkript erkannt, läuft im cookieless-Modus

Der Badge-Zustand ist pro Tab, sodass eine einzelne Browser-Sitzung gleichzeitig unterschiedliche Zustände für verschiedene Seiten anzeigen kann.

Was das Popup anzeigt

Wenn Sie auf das Badge klicken, zeigt das Popup:

  • Status-Karte — aktueller Erkennungs-Zustand mit pulsierendem Indikator, während Ereignisse live sind
  • Tracking-Code — die Projekt-ID (z. B. ZV_abc123…)
  • Skript-Quelle — die URL, von der der Tracker geladen wurde
  • Cookieless — ob data-cookieless="true" am Skript-Tag gesetzt ist ODER cookielessMode: true in ZENOVAY_TRACKER_CONFIG
  • GPC — ob der Nutzer Global Privacy Control in den Browser-Einstellungen aktiviert hat
  • API-Endpunkt — wohin der Tracker Ereignisse sendet
  • Live-Ereignisse — eine scrollende Liste der letzten 50 Ereignisse (Ereignis-Typ + relative Zeit)
  • In Zenovay-Dashboard öffnen — Deep-Link zum passenden Dashboard

Live-Ereignisse: Pfad A vs. Pfad B

Der Zenovay-Tracker sendet das Custom-Event zenovay:debug:event nur dann, wenn die Seite data-debug="true" setzt. Produktive Seiten tun das in der Regel nicht.

Pfad B (Standard). Die Erweiterung hört auf zenovay:debug:event und liest window._zenovayDebugBus aus. Auf einer Debug-Seite (oder auf app.zenovay.com) sehen Sie Ereignisse einlaufen. Auf einer Produktivseite ohne Debug-Modus zeigt das Popup:

Aktivieren Sie data-debug="true" am Skript-Tag, um Live-Ereignisse zu sehen, oder schalten Sie unten die Tiefen-Inspektion ein.

Pfad A (Opt-in). Schalten Sie Beta: Tiefen-Inspektion im Popup ein. Die Erweiterung patcht navigator.sendBeacon und window.fetch, um Event-POSTs zur Tracker-API abzufangen. Funktioniert auf jeder Seite, mit zwei Einschränkungen:

  1. Die Erweiterung kann mit anderen Erweiterungen kollidieren, die ebenfalls Netzwerk-Aufrufe patchen.
  2. Ereignisse, die vor dem Aktivieren des Schalters ausgelöst wurden, werden nicht erfasst. Wenn 3 Sekunden ohne Ereignisse vergehen, bietet das Popup ein Neu laden an, um den initialen Pageview zu erfassen.

Wir kennzeichnen Pfad A als Beta, bis wir Feedback zu Kollisionen gesammelt haben. Deaktivieren Sie ihn, falls Sie merkwürdiges Verhalten auf einer Seite sehen.

Erkennungssignale

Die Erweiterung prüft fünf Quellen, in dieser Reihenfolge, alle innerhalb des MAIN-World-Kontexts der Seite:

  1. Skript-Tag-Scanscript[src*="/z.js"], script[src*="zenovay-tracker"], script[data-id], script[data-tracking-code], script[data-website-id].
  2. Global-Testtypeof window.zenovay === 'function', bis zu 5 Sekunden lang alle 200 ms geprüft.
  3. Config-Test — liest window.ZENOVAY_TRACKER_CONFIG, falls der Tracker via /load-Endpunkt geladen wurde (mit Dashboard-gesteuerter Konfiguration).
  4. Event-Subscription — hört auf zenovay:debug:event am window.
  5. Buffer-Auslese — schnappt einen Snapshot von window._zenovayDebugBus, falls vorhanden.

Ein einziges Signal reicht aus, um eine Seite als "erkannt" zu markieren.

Berechtigungen

BerechtigungWofür
activeTabDOM des aktiven Tabs lesen, wenn Sie das Popup öffnen
storageDie letzten 50 Ereignisse pro Tab in Session-Storage cachen
scriptingDie Erkennungs-Sonde in den MAIN-World der Seite injizieren
host_permissions: <all_urls>Zenovay auf jeder Seite erkennen, die Sie besuchen

Ausdrücklich nicht angefordert: tabs, webRequest, cookies, history, bookmarks, downloads. Die Erweiterung kann Ihre anderen Tabs, Ihren Verlauf oder gespeicherte Passwörter nicht lesen.

Datenschutz

Der Inspector wurde so gebaut, dass er die breitere Cookieless-Haltung von Zenovay respektiert:

  • Keine Netzwerk-Aufrufe — die Erweiterung sendet niemals Daten an api.zenovay.com oder irgendwo sonst.
  • Keine Cookies — weder die Erweiterung selbst noch ihre UI schreiben Cookies. Toggle-Zustand liegt in chrome.storage.local (wenige Bytes für die Beta: Tiefen-Inspektion-Präferenz). Tab-Level-Eventdaten liegen in chrome.storage.session, das beim Schließen des Browsers geleert wird.
  • Keine persistente Payload-Speicherung — Pfad As Patches parsen Event-Bodies nur im Speicher.
  • Deep-Link ist nutzer-initiiert — Klick auf In Zenovay-Dashboard öffnen ist die einzige ausgehende Aktion und erfordert eine bewusste Aktion.

Fehlerbehebung

Badge bleibt leer auf einer Seite, von der ich sicher weiß, dass sie Zenovay hat

  • Tab hart neu laden (Cmd/Strg + Shift + R). Die injizierte Sonde läuft bei document_idle; ein frischer Reload gibt ihr eine saubere Chance.
  • Quelltext nach script src-Mustern durchsuchen, die zu /z.js, zenovay-tracker oder data-id="…" passen. Wenn keines davon vorhanden ist, ist das Skript nicht tatsächlich geladen.
  • CSP der Seite prüfen — eine strikte script-src-Direktive könnte den Tracker komplett blockieren.

Badge zeigt bernstein !, aber ich erwarte Ereignisse

Das ist Pfad B wie vorgesehen. Das Skript ist geladen, sendet aber kein zenovay:debug:event, weil die Seite kein data-debug="true" setzt. Aktivieren Sie Beta: Tiefen-Inspektion im Popup und laden Sie neu.

Ereignisliste ist leer nach Aktivierung der Tiefen-Inspektion

Wenn innerhalb von 3 Sekunden ein Hinweis-Banner erscheint — klicken Sie Neu laden. Der initiale Pageview des Trackers wird einmal pro Seitenaufruf gefeuert; Pfad A fängt nur Ereignisse ab dem Moment der Aktivierung.

Cookieless-Indikator zeigt ✗, obwohl ich cookieless konfiguriert habe

data-cookieless="true" muss am <script>-Tag selbst stehen, als String "true". Bestätigen Sie:

<script src="https://api.zenovay.com/z.js" data-id="IHR_CODE" data-cookieless="true"></script>

Nicht data-cookieless (nur Vorhandensein) oder data-cookieless="1". Der Tracker liest es als strikten String-Vergleich.

Open Source

Die Erweiterung ist MIT-lizenziert und wird offen entwickelt unter github.com/zenovay/extension-zenovay. Issues und Pull Requests willkommen.

War diese Seite hilfreich?