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
| Badge | Bedeutung |
|---|---|
| (leer) | Kein Zenovay-Tracking-Skript auf dieser Seite erkannt |
Bernstein ! | Skript erkannt, aber noch keine Ereignisse ausgelöst |
Grün ON | Skript erkannt und Ereignisse werden ausgelöst |
Blau C | Skript 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 ODERcookielessMode: trueinZENOVAY_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:
- Die Erweiterung kann mit anderen Erweiterungen kollidieren, die ebenfalls Netzwerk-Aufrufe patchen.
- 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:
- Skript-Tag-Scan —
script[src*="/z.js"],script[src*="zenovay-tracker"],script[data-id],script[data-tracking-code],script[data-website-id]. - Global-Test —
typeof window.zenovay === 'function', bis zu 5 Sekunden lang alle 200 ms geprüft. - Config-Test — liest
window.ZENOVAY_TRACKER_CONFIG, falls der Tracker via/load-Endpunkt geladen wurde (mit Dashboard-gesteuerter Konfiguration). - Event-Subscription — hört auf
zenovay:debug:eventamwindow. - Buffer-Auslese — schnappt einen Snapshot von
window._zenovayDebugBus, falls vorhanden.
Ein einziges Signal reicht aus, um eine Seite als "erkannt" zu markieren.
Berechtigungen
| Berechtigung | Wofür |
|---|---|
activeTab | DOM des aktiven Tabs lesen, wenn Sie das Popup öffnen |
storage | Die letzten 50 Ereignisse pro Tab in Session-Storage cachen |
scripting | Die 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 inchrome.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-trackeroderdata-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.