Le estensioni smettono di rompere la Sua interfaccia
Niente più ticket di supporto quando Consent-o-matic rilascia un aggiornamento che rompe il Suo banner. Le estensioni interagiscono con metadati strutturati, non con il Suo DOM.
Assistenti al consenso, browser e autorità di regolamentazione dipendono tutti dai dati che Lei produce. navigator.consent è l’API che rende la Sua infrastruttura di conformità leggibile dalle macchine, trasformando il Suo CMP nella fonte dati autorevole su cui si basa l’ecosistema del consenso.
Gli utenti vedono il banner. Non vedono cosa c’è dietro: gestione dei vendor tra giurisdizioni diverse, audit trail di livello legale, propagazione del consenso in tempo reale ai responsabili del trattamento a valle, esperienze multilingue che soddisfano il requisito di specificità del GDPR.
La specifica proposta navigator.consent rende questo lavoro visibile al resto dell’ecosistema. Le Sue dichiarazioni sui vendor diventano dati strutturati che gli assistenti al consenso leggono direttamente. Il Suo stato di consenso diventa verificabile by design. Il CMP diventa la fonte autorevole su cui si basa l’intera catena del consenso.
Oggi, gli assistenti al consenso fanno reverse-engineering del Suo DOM: scraping di pulsanti, ipotesi sulle liste di vendor, iniezione di clic. Ogni aggiornamento del CMP può interrompere ogni estensione. navigator.consent sostituisce questo scraping fragile con un’API strutturata: Lei dichiara i Suoi vendor e le Sue finalità, gli assistenti leggono direttamente i metadati.
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}Niente più ticket di supporto quando Consent-o-matic rilascia un aggiornamento che rompe il Suo banner. Le estensioni interagiscono con metadati strutturati, non con il Suo DOM.
Quando un assistente al consenso gestisce il consenso tramite l’API, il Suo intero bundle UI (JS, CSS, font, immagini) non ha bisogno di essere caricato. Su larga scala, questo è misurabile.
Ogni modifica delle preferenze viene registrata con provenance e timestamp. Le prove di conformità sono integrate nel protocollo, non aggiunte a posteriori.
Gli assistenti al consenso dipendono dalle Sue dichiarazioni di vendor e finalità. L’ecosistema legge da Lei, non aggira Lei.
Una singola integrazione API sostituisce N workaround specifici per estensione. Ogni assistente al consenso attuale e futuro utilizza lo stesso canale.
Niente più geolocalizzazione IP da mantenere per indovinare quale quadro normativo si applichi. Il browser fornisce il contesto normativo direttamente tramite getRegulations(). Un componente mobile in meno che può mettere a rischio Lei e i Suoi clienti.
navigator.consent è un livello di trasporto. Non sostituisce le Sue responsabilità legali, di conformità o di UX.Lei presenta le informazioni sul consenso e raccoglie le scelte tramite la Sua interfaccia. L’API coordina, non impone una UX.
Lei rimane il sistema di registrazione per le prove di consenso. L’API aggiunge un canale di coordinamento, non un sostituto.
Lei definisce l’ambito del consenso (origin, dominio, eTLD+1) e la policy di persistenza. Il browser non sovrascrive questa impostazione.
Modello di registrazione aperto. Nessuna lista di autorizzazione, nessun gate di attestazione, nessun intermediario tra Lei e i Suoi vendor.
Tutti questi metodi vengono eseguiti nel contesto DOM. Gli script nel contesto estensione non possono invocarli. Il browser impone questo confine.
registerInterface()Dichiara la Sua interfaccia di consenso per la pagina corrente. Restituisce un registrationId per tutte le operazioni successive.
registerVendors()Pubblica il Suo catalogo vendor: nome, dominio, URL della privacy policy. Gli assistenti al consenso leggono questo invece di fare scraping.
registerPurposes()Pubblica le finalità di trattamento, ciascuna con un id libero e un nome leggibile dall’uomo.
requestConsent()Segnala l’assistente prima di mostrare la propria interfaccia di consenso. Con uno scope vuoto, segnala un prompt generale (banner di prima visita). Con ID fornitore o finalità specifici, segnala un’esigenza contestuale (es. embed bloccato). In entrambi i casi, l’assistente ha la possibilità di rispondere prima che Lei mostri la propria interfaccia.
updatePreferences()Sincronizza le preferenze già raccolte o invia aggiornamenti lato CMP. Genera un evento di aggiornamento che gli assistenti ascoltano.
getRegulations()Restituisce il contesto normativo del browser: regolamenti applicabili, giurisdizione e fonte di rilevamento. Metodo condiviso, disponibile sia nel contesto DOM che in quello estensione.
La specifica completa dell’API con tipi, metodi e comportamento.
Definizioni di payload leggibili dalle macchine per tutti i tipi dell’API.
Un polyfill funzionante per la sperimentazione locale.