Extensies breken uw UI niet meer
Geen supporttickets meer wanneer Consent-o-matic een update uitbrengt die uw banner breekt. Extensies werken met gestructureerde metadata, niet met uw DOM.
Toestemmingsassistenten, browsers en toezichthouders zijn allemaal afhankelijk van de data die u produceert. navigator.consent is de API die uw compliance-infrastructuur machineleesbaar maakt en uw CMP transformeert tot de gezaghebbende databron waar het toestemmingsecosysteem op vertrouwt.
Gebruikers zien de banner. Ze zien niet wat erachter zit: leveranciersbeheer over jurisdicties heen, juridisch toetsbare audit trails, realtime toestemmingsverspreiding naar downstream-verwerkers, meertalige ervaringen die voldoen aan de specificiteitseis van de AVG.
De voorgestelde specificatie navigator.consent maakt dit werk zichtbaar voor de rest van het ecosysteem. Uw leveranciersdeclaraties worden gestructureerde data die toestemmingsassistenten rechtstreeks lezen. Uw toestemmingsstatus wordt controleerbaar by design. Het CMP wordt de gezaghebbende bron waarop de gehele toestemmingsketen vertrouwt.
Vandaag de dag reverse-engineeren toestemmingsassistenten uw DOM: knoppen scrapen, leverancierslijsten raden, klikken injecteren. Elke CMP-update kan elke extensie breken. navigator.consent vervangt deze fragiele scraping door een gestructureerde API: u declareert uw leveranciers en doelen, assistenten lezen de metadata rechtstreeks.
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}Geen supporttickets meer wanneer Consent-o-matic een update uitbrengt die uw banner breekt. Extensies werken met gestructureerde metadata, niet met uw DOM.
Wanneer een toestemmingsassistent toestemming afhandelt via de API, hoeft uw volledige UI-bundel (JS, CSS, lettertypen, afbeeldingen) nooit te laden. Op schaal is dit meetbaar.
Elke voorkeurswijziging wordt gelogd met provenance en tijdstempels. Compliancebewijs is ingebouwd in het protocol, niet er achteraf aan toegevoegd.
Toestemmingsassistenten zijn afhankelijk van uw leveranciers- en doeldeclaraties. Het ecosysteem leest van u, niet om u heen.
Eén enkele API-integratie vervangt N extensiespecifieke workarounds. Elke huidige en toekomstige toestemmingsassistent gebruikt hetzelfde kanaal.
Geen eigen IP-geolocatie meer nodig om te raden welk kader van toepassing is. De browser levert de reguleringscontext rechtstreeks via getRegulations(). Eén bewegend onderdeel minder dat u en uw klanten in gevaar kan brengen.
navigator.consent is een transportlaag. Het vervangt niet uw juridische, compliance- of UX-verantwoordelijkheden.U presenteert toestemmingsinformatie en verzamelt keuzes via uw eigen interface. De API coördineert, het schrijft geen UX voor.
U blijft het systeem van registratie voor toestemmingsbewijs. De API voegt een coördinatiekanaal toe, geen vervanging.
U definieert de toestemmingsscope (origin, domein, eTLD+1) en het persistentiebeleid. De browser overschrijft dit niet.
Open registratiemodel. Geen toelatingslijsten, geen attestatiepoorten, geen tussenpersoon tussen u en uw leveranciers.
Al deze methoden draaien in DOM-context. Scripts in extensiecontext kunnen ze niet aanroepen. De browser handhaaft deze grens.
registerInterface()Declareer uw toestemmingsinterface voor de huidige pagina. Retourneert een registrationId voor alle volgende bewerkingen.
registerVendors()Publiceer uw leverancierscatalogus: naam, domein, privacybeleid-URL. Toestemmingsassistenten lezen dit in plaats van te scrapen.
registerPurposes()Publiceer verwerkingsdoelen, elk met een vrij te kiezen id en een voor mensen leesbare naam.
requestConsent()Signaleer de assistent voordat u uw toestemmingsinterface toont. Met een lege scope signaleert dit een algemene prompt (eerste-bezoek-banner). Met specifieke leverancier- of doel-ID’s signaleert dit een contextuele behoefte (bijv. geblokkeerde embed). In beide gevallen krijgt de assistent de kans om te reageren voordat u uw eigen UI toont.
updatePreferences()Synchroniseer reeds verzamelde voorkeuren of push CMP-updates. Activeert een update-event waar assistenten naar luisteren.
getRegulations()Retourneert de reguleringscontext van de browser: toepasselijke regelgeving, jurisdictie en detectiebron. Gedeelde methode, beschikbaar in zowel DOM- als extensiecontext.
De volledige API-specificatie met types, methoden en gedrag.
Machineleesbare payloaddefinities voor alle API-types.
Een werkende polyfill voor lokaal experimenteren.