Erweiterungen zerstören Ihre UI nicht mehr
Keine Support-Tickets mehr, wenn Consent-o-matic ein Update veröffentlicht, das Ihr Banner zerstört. Erweiterungen interagieren mit strukturierten Metadaten, nicht mit Ihrem DOM.
Einwilligungsassistenten, Browser und Regulierungsbehörden sind alle auf die Daten angewiesen, die Sie produzieren. navigator.consent ist die API, die Ihre Compliance-Infrastruktur maschinenlesbar macht und Ihre CMP in die maßgebliche Datenquelle verwandelt, auf die das Einwilligungsökosystem baut.
Nutzer sehen das Banner. Sie sehen nicht, was dahintersteckt: Anbieterverwaltung über Jurisdiktionen hinweg, rechtssichere Audit-Trails, Echtzeit-Einwilligungsweiterleitung an nachgelagerte Verarbeiter, mehrsprachige Erfahrungen, die den Bestimmtheitsanforderungen der DSGVO genügen.
Die vorgeschlagene Spezifikation navigator.consent macht diese Arbeit für das restliche Ökosystem sichtbar. Ihre Anbieterdeklarationen werden zu strukturierten Daten, die Einwilligungsassistenten direkt lesen. Ihr Einwilligungsstatus wird prüfbar by Design. Die CMP wird zur maßgeblichen Quelle, auf die die gesamte Einwilligungskette vertraut.
Heute reverse-engineeren Einwilligungsassistenten Ihr DOM: Sie scrapen Buttons, erraten Anbieterlisten und injizieren Klicks. Jedes CMP-Update kann jede Erweiterung zerstören. navigator.consent ersetzt dieses fragile Scraping durch eine strukturierte API: Sie deklarieren Ihre Anbieter und Zwecke, Assistenten lesen die Metadaten direkt.
1// Check which regulations apply2const { regulations, jurisdiction } =3 await navigator.consent.getRegulations();4// → { regulations: ["gdpr", "eprivacy"], jurisdiction: "FR", … }56// Register your consent interface7const { registrationId } =8 await navigator.consent.registerInterface({9 vendor: "My CMP",10 versionIdentifier: "2.4.1",11 regulation: regulations[0] ?? "gdpr",12 jurisdiction: jurisdiction ?? "EU",13 });1415// Declare processing purposes with their legal basis16await navigator.consent.registerPurposes([17 {18 id: "analytics",19 name: "Analytics",20 legalBasis: "legitimate_interest",21 },22 {23 id: "advertising",24 name: "Advertising",25 legalBasis: "consent",26 },27 {28 id: "functional",29 name: "Functional",30 legalBasis: "legitimate_interest",31 },32]);3334// Declare vendors and link them to purposes35await navigator.consent.registerVendors([36 {37 id: "google-analytics",38 name: "Google Analytics",39 domain: "analytics.google.com",40 privacyPolicyUrl: "https://…/privacy",41 purposeIds: ["analytics"],42 },43 {44 id: "hotjar",45 name: "Hotjar",46 domain: "hotjar.com",47 privacyPolicyUrl: "https://…/privacy",48 purposeIds: ["analytics", "advertising"],49 },50]);5152// Signal the assistant before showing your banner53// Empty scope = general prompt; the assistant gets54// a chance to apply user preferences first55const snap = await navigator.consent.requestConsent();5657// If preferences were applied, skip your UI58if (Object.values(snap.purposes).some(v => v !== "unset")) {59 applyConsent(snap);60} else {61 showConsentBanner();62}Keine Support-Tickets mehr, wenn Consent-o-matic ein Update veröffentlicht, das Ihr Banner zerstört. Erweiterungen interagieren mit strukturierten Metadaten, nicht mit Ihrem DOM.
Wenn ein Einwilligungsassistent die Einwilligung über die API abwickelt, muss Ihr vollständiges UI-Bundle (JS, CSS, Schriften, Bilder) nie geladen werden. Im großen Maßstab ist das messbar.
Jede Präferenzänderung wird mit Herkunft und Zeitstempeln protokolliert. Compliance-Nachweise sind in das Protokoll eingebaut, nicht nachträglich angefügt.
Einwilligungsassistenten sind auf Ihre Anbieter- und Zweckdeklarationen angewiesen. Das Ökosystem liest von Ihnen, nicht um Sie herum.
Eine einzige API-Integration ersetzt N erweiterungsspezifische Behelfslösungen. Jeder aktuelle und künftige Einwilligungsassistent nutzt denselben Kanal.
Keine eigene IP-Geolokalisierung mehr nötig, um das geltende Regelwerk zu ermitteln. Der Browser liefert den Regulierungskontext direkt über getRegulations(). Ein bewegliches Teil weniger, das Sie und Ihre Kunden gefährden kann.
navigator.consent ist eine Transportschicht. Sie ersetzt nicht Ihre rechtlichen, Compliance- oder UX-Verantwortlichkeiten.Sie präsentieren Einwilligungsinformationen und sammeln Entscheidungen über Ihre eigene Oberfläche. Die API koordiniert, sie schreibt keine UX vor.
Sie bleiben das führende System für Einwilligungsnachweise. Die API fügt einen Koordinierungskanal hinzu, keinen Ersatz.
Sie definieren den Einwilligungsumfang (Origin, Domain, eTLD+1) und die Persistenzrichtlinie. Der Browser überschreibt dies nicht.
Offenes Registrierungsmodell. Keine Positivlisten, keine Attestierungsbarrieren, kein Vermittler zwischen Ihnen und Ihren Anbietern.
Alle diese Methoden laufen im DOM-Kontext. Skripte im Extension-Kontext können sie nicht aufrufen. Der Browser setzt diese Grenze durch.
registerInterface()Deklarieren Sie Ihre Einwilligungsoberfläche für die aktuelle Seite. Gibt eine registrationId für alle nachfolgenden Operationen zurück.
registerVendors()Veröffentlichen Sie Ihren Anbieterkatalog: Name, Domain, Datenschutzrichtlinien-URL. Einwilligungsassistenten lesen dies statt zu scrapen.
registerPurposes()Veröffentlichen Sie Verarbeitungszwecke, jeweils mit einer frei wählbaren ID und einem menschenlesbaren Namen.
requestConsent()Signalisieren Sie dem Assistenten, bevor Sie Ihre Einwilligungsoberfläche anzeigen. Mit einem leeren Scope wird ein allgemeiner Prompt signalisiert (Erstbesuch-Banner). Mit spezifischen Anbieter- oder Zweck-IDs wird ein kontextbezogener Bedarf signalisiert (z. B. blockiertes Embed). In beiden Fällen erhält der Assistent die Möglichkeit zu reagieren, bevor Sie Ihre eigene UI anzeigen.
updatePreferences()Synchronisieren Sie bereits erfasste Präferenzen oder übertragen Sie CMP-seitige Aktualisierungen. Löst ein Update-Event aus, auf das Assistenten hören.
getRegulations()Gibt den Regulierungskontext des Browsers zurück: anwendbare Verordnungen, Rechtsgebiet und Erkennungsquelle. Gemeinsame Methode, sowohl im DOM- als auch im Extension-Kontext verfügbar.
Die vollständige API-Spezifikation mit Typen, Methoden und Verhalten.
Maschinenlesbare Payload-Definitionen für alle API-Typen.
Ein funktionierender Polyfill zum lokalen Experimentieren.