Consent-Audit: Was läuft, bevor jemand auf „Akzeptieren“ klickt?
Die Lektion hinter diesem Skill (Dr. Erin Toussaint Jacques, IG-Reel, Okt. 2026): Vibe-Coding-Apps sind ein einfacher Weg, um verklagt zu werden, weil niemand prüft, ob der Tracking-Pixel feuert, bevor der Besucher auf „Akzeptieren“ klickt. Ein Pixel ist ein kleines Code-Stück von Meta, Google und anderen, das verfolgt, was Leute auf Ihrer Website tun. Nach dem kalifornischen Abhörgesetz (CIPA) kann Tracking, das vor der Einwilligung beginnt, als Abhörung behandelt werden, mit gesetzlichen Schadensersatzforderungen von bis zu 5.000 $ pro Verstoß, und Pixel-Klagen gehen mittlerweile in die Tausende. Ein Banner zu haben und auf die Erlaubnis zu warten, sind zwei verschiedene Dinge. Viele verklagte Websites hatten ein Banner; das Tracking lud in dem Moment, als die Seite geöffnet wurde.
Dieses Audit beantwortet also eine Frage mit Beweisen: Was wird bei einem frischen Besuch, vor jedem Klick, geladen und was gesendet, und an wen?
Dies ist ein Engineering-Audit, keine Rechtsberatung. Sagen Sie niemandem, dass er „konform“ ist. Sagen Sie, was gefunden wurde, was behoben wurde, was nicht geprüft wurde und dass ein Anwalt prüfen sollte, wenn derjenige Werbung schaltet oder in die EU oder nach Kalifornien verkauft.
Standard: Nur lesen
Ändern Sie in diesem Skill nichts: keine Bearbeitungen, Veröffentlichungen, Datenbank- oder Authentifizierungsänderungen, neuen Dienste oder Annahme von AGB. Korrekturen sind Aufgabe von consent-gate, sobald der Eigentümer zustimmt.
Schritt 1: Inventur des Codes
Wenn der Code lokal ist (oder ein GitHub-Clone eines Lovable-Projekts), führen Sie den Scanner aus:
python3 ~/.claude/skills/consent-audit/scripts/scan_trackers.py /pfad/zu/app
Er listet jeden Tracker, Pixel, Analytics, Replay, Embed und Third-Party-Skript-Signatur auf, die er findet, nach Datei und Zeile, markiert Zeilen, die E-Mails oder Benutzer-IDs zu senden scheinen, und gibt an, ob eine Einwilligungsprüfung in der Nähe erscheint. Ein Hinweis „Einwilligungsprüfung in der Nähe“ ist ein Anhaltspunkt, kein Beweis. Lesen Sie den Code um jeden Treffer herum, um zu bestätigen:
- Wo es beginnt.
index.html<head>,main.tsx,App.tsx,_app/layoutoder ein Provider bedeutet, dass es auf jeder Seite für jeden Besucher läuft. - Was es schützt (gated). Wird der Skript-Tag,
import()oderinit()erst nach einer gespeicherten, ausdrücklichen Zustimmung ausgeführt? Ein Banner, das sich selbst ausblendet, währendgtag('config')bereits gelaufen ist, ist kein Schutz. - Was es sendet.
identify(email),setUser({ email }), Meta Advanced Matching (em,ph), vollständige URLs mit?-Query-Strings oder#-Fragmenten (Geschenk-Codes, Reset-Tokens, Suchtexte) und Formularfelder. - Serverseitige Weiterleitung. Conversions API,
/api/track, Edge-Funktionen, die an Meta/Google/Segment posten. Diese müssen dieselbe Auswahl respektieren.
Wenn es keinen lokalen Code gibt (ein Lovable-Projekt, das Sie nur im Browser erreichen können), verwenden Sie den reine-Audit-Prompt in references/prompts.md im Chat dieses Projekts und überprüfen Sie dann seinen Bericht mit Schritt 2.
Schritt 2: Die Live-Website prüfen (der Teil, den ein Banner nicht vortäuschen kann)
Code kann durch Weglassen lügen (Tag-Manager, Hosting-Erweiterungen, CMS-Snippets). Überprüfen Sie immer die veröffentlichte URL in einem frischen, cookie-freien Browser-Tab:
- Öffnen Sie die Website in einem neuen privaten Kontext (im integrierten Browser von Claude: ein neuer Tab nach dem Löschen des Speichers oder eine dort noch nie besuchte Website). Klicken Sie auf nichts.
- Lesen Sie die Netzwerkanfragen (
read_network_requests). Jede Anfrage an eine Werbe-, Analyse- oder Replay-Domain vor einem Klick ist ein Fund: Listen Sie die Domain, den URL-Pfad und ob sie Identifikatoren (fbp,_ga,cid,uid,em,ttp) enthält. - Lesen Sie Cookies und Speicher via
javascript_tool:document.cookie,Object.keys(localStorage). Notieren Sie alle_ga,_fbp,_gcl_au,_ttp,_hj*,ph_*,ajs_*,_clckoder_uetsid. - Klicken Sie auf Ablehnen (oder schließen Sie das Banner, wenn es keine Ablehnoption gibt). Navigieren Sie zu zwei weiteren Seiten. Alles, was neu feuert, ist ein Fund.
- Klicken Sie in einem frischen Kontext auf Akzeptieren. Bestätigen Sie, dass die Tracker jetzt laden, der Schutz also nicht einfach defekt ist.
- Melden Sie sich mit einem Testkonto an, falls vorhanden (niemals mit einem echten Kundenkonto). Prüfen Sie, ob die E-Mail oder Benutzer-ID in einer Tracker-Anfrage abfließt.
Schritt 3: Hosting- und Plattform-Einstellungen prüfen
Vom Hosting eingeschleuste Tracker erscheinen nicht im Code der App:
- Lovable: Projekt → Einstellungen → Visitor Analytics. Es ist standardmäßig aktiviert; schalten Sie es bei jedem Projekt (auch neuen) aus oder schützen Sie es.
- Vercel (Web Analytics / Speed Insights), Netlify (Analytics), Cloudflare (Web Analytics, Zaraz), Framer/Webflow/Wix/Squarespace (Site-Einstellungen → benutzerdefinierter Code / Analytics / Pixel), EzyCourse / Systeme / Kajabi (Tracking-Code-Felder, Facebook-Pixel-Feld).
- Tag-Manager: Öffnen Sie den GTM-Container und listen Sie jeden Tag und seinen Trigger auf. „Alle Seiten“ ohne eine Einwilligungsbedingung bedeutet, dass er vor der Einwilligung feuert.
Schritt 4: Sortieren und Berichten
Klassifizieren Sie jeden Eintrag:
| Klasse | Beispiele | Regel |
|---|---|---|
| Notwendig | Login-Session, CSRF, Warenkorb, Stripe auf der Zahlungsseite, Betrugs-/Bot-Checks, gespeicherte UI-Einstellungen | Darf ohne Einwilligung laufen. Kein Banner allein dafür nötig. |
| Funktionale Einbettung | Mapbox auf der Kartenseite, YouTube/Vimeo-Player, Calendly, Chat-Widgets | Nur dort laden, wo sie verwendet werden. Bevorzugt Click-to-Load oder Privacy-Modi (youtube-nocookie). |
| Optional | Werbe-Pixel, GA/GTM, PostHog, Hotjar, Clarity, HeyCatch, Session Replay, Retargeting | Darf erst laden, abrufen oder initialisieren, wenn der Besucher in diese Kategorie einwilligt. |
Berichtsformat (kurz und evidenzbasiert halten):
CONSENT-AUDIT: <app> (<url>), <datum>
Vor jedem Klick: <N> optionale Tracker feuerten -> BESTANDEN / NICHT BESTANDEN
| Anbieter | Wo es beginnt (datei:zeile oder host-einstellung) | Feuert vor Einwilligung? | Sendet Identitäts-/URL-Daten? | Klasse | Minimale Behebung |
Notwendige Dienste (OK ohne Einwilligung): ...
Datenschutzhinweis: vorhanden/fehlend, aus Footer verlinkt? korrekte Anbieterliste?
Widerruf der Wahl: Gibt es einen dauerhaften Link „Datenschutzeinstellungen“?
Global Privacy Control beachtet? ja/nein/nicht getestet
Unveröffentlichte Änderungen, deren Veröffentlichung ebenfalls freigegeben würde: ...
Nicht geprüft: ...
Keine Rechtsberatung. Lassen Sie einen Anwalt prüfen, wenn Sie Werbung schalten, Besucher aus Kalifornien/EU bedienen oder Pixel auf Videoseiten setzen.
Bieten Sie dann consent-gate an, um die Korrekturen anzuwenden. Wenn ein Tracker sich nicht lohnt, empfehlen Sie, ihn zu entfernen, anstatt ihn zu schützen: Kein Tracker ist die billigste Compliance (in echten Audits war die Entfernung eines ungenutzten Analyse-Tools oft die gesamte Behebung).
Warnungen aus echten Audits
- Analytics wurde aus der Einstiegsdatei der App gestartet (
src/main.tsx) auf jeder Seite für jeden Besucher, ohne Einwilligungsprüfung, und der Login-Code sendete die E-Mails und Benutzer-IDs angemeldeter Kunden bei jedem Login an das Analyse-Tool. Das Tool konnte keine Query-Strings entfernen, daher wurde es vollständig entfernt. - Lovables Visitor Analytics ist standardmäßig aktiviert und wird vom Hosting eingeschleust. Es ist nicht im Code.
- Das Veröffentlichen gibt alles Unveröffentlichte frei. Bevor Sie eine Datenschutz-Korrektur veröffentlichen, listen Sie die älteren unveröffentlichten Änderungen auf, die damit ebenfalls ausgeliefert werden (Login-Helfer, Abhängigkeits-Updates, Zahlungs-Korrekturen) und holen Sie die Zustimmung des Eigentümers ein.
- Analytics auszuschalten ist nicht dasselbe wie die Datenerfassung auszuschalten. Die eigene Datenbank der App (Schülerarbeiten, Fortschritte, Nachrichten) ist First-Party und getrennt. Sagen Sie das explizit, weil Eigentümer sich sorgen.
- Videoseiten + Meta-Pixel fügen ein weiteres Bundesrisiko hinzu (Video Privacy Protection Act). Kursseiten mit Lektionsvideos sollten jeden Pixel auf diesen Seiten als hohe Priorität behandeln.