La capa de cumplimiento de la que depende la web

Los asistentes de consentimiento, los navegadores y los reguladores dependen todos de los datos que usted produce. navigator.consent es la API que hace su infraestructura de cumplimiento legible por máquinas, convirtiendo su CMP en la fuente de datos autoritativa en la que se apoya el ecosistema del consentimiento.

Más que un banner

Los usuarios ven el banner. No ven lo que hay detrás: gestión de proveedores en múltiples jurisdicciones, registros de auditoría con validez legal, propagación del consentimiento en tiempo real a procesadores posteriores, experiencias multilingües que satisfacen el requisito de especificidad del GDPR.

La especificación propuesta navigator.consent hace visible este trabajo al resto del ecosistema. Sus declaraciones de proveedores se convierten en datos estructurados que los asistentes de consentimiento leen directamente. Su estado de consentimiento se vuelve auditable por diseño. El CMP se convierte en la fuente autoritativa en la que se apoya toda la cadena de consentimiento.

De resistir el scraping a proporcionar datos abiertos y estructurados

Hoy, los asistentes de consentimiento hacen ingeniería inversa de su DOM: scraping de botones, adivinando listas de proveedores, inyectando clics. Cada actualización de un CMP puede romper todas las extensiones. navigator.consent reemplaza este frágil scraping con una API estructurada: usted declara sus proveedores y finalidades, los asistentes leen los metadatos directamente.

1// Check which regulations apply
2const { regulations, jurisdiction } =
3 await navigator.consent.getRegulations();
4// → { regulations: ["gdpr", "eprivacy"], jurisdiction: "FR", … }
5
6// Register your consent interface
7const { 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 });
14
15// Declare processing purposes with their legal basis
16await 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]);
33
34// Declare vendors and link them to purposes
35await 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]);
51
52// Signal the assistant before showing your banner
53// Empty scope = general prompt; the assistant gets
54// a chance to apply user preferences first
55const snap = await navigator.consent.requestConsent();
56
57// If preferences were applied, skip your UI
58if (Object.values(snap.purposes).some(v => v !== "unset")) {
59 applyConsent(snap);
60} else {
61 showConsentBanner();
62}

Lo que gana

Las extensiones dejan de romper su interfaz

Se acabaron los tickets de soporte cuando Consent-o-matic publica una actualización que rompe su banner. Las extensiones interactúan con metadatos estructurados, no con su DOM.

Ahorro en CDN a escala

Cuando un asistente de consentimiento gestiona el consentimiento a través de la API, su paquete completo de interfaz (JS, CSS, fuentes, imágenes) no necesita cargarse. A escala, esto es medible.

Auditable por diseño

Cada mutación de preferencia se registra con procedencia y marcas de tiempo. La evidencia de cumplimiento está integrada en el protocolo, no añadida después.

Usted define la fuente de verdad

Los asistentes de consentimiento dependen de sus declaraciones de proveedores y finalidades. El ecosistema lee de usted, no a su alrededor.

Una integración, todos los asistentes

Una única integración de API reemplaza N soluciones específicas por extensión. Cada asistente de consentimiento actual y futuro utiliza el mismo canal.

Contexto regulatorio integrado

No necesita mantener su propia geolocalización por IP para adivinar qué marco normativo aplica. El navegador proporciona el contexto regulatorio directamente a través de getRegulations(). Una pieza móvil menos que pueda poner en riesgo a sus clientes y a usted.

Lo que no cambia

navigator.consent es una capa de transporte. No reemplaza sus responsabilidades legales, de cumplimiento o de experiencia de usuario.

Su interfaz de consentimiento

Usted presenta la información de consentimiento y recoge las elecciones a través de su propia interfaz. La API coordina, no impone una experiencia de usuario.

Sus obligaciones de cumplimiento

Usted sigue siendo el sistema de registro para las evidencias de consentimiento. La API añade un canal de coordinación, no un sustituto.

Su alcance y persistencia

Usted define el alcance del consentimiento (origin, domain, eTLD+1) y la política de persistencia. El navegador no lo anula.

Sus relaciones con proveedores

Modelo de registro abierto. Sin listas de permitidos, sin barreras de certificación, sin intermediarios entre usted y sus proveedores.

Métodos del lado del CMP

Todos estos métodos se ejecutan en contexto DOM. Los scripts en contexto de extensión no pueden invocarlos. El navegador aplica este límite.

Empezar a integrar

Especificación

La especificación completa de la API con tipos, métodos y comportamiento.

Leer el RFC

JSON Schemas

Definiciones de carga útil legibles por máquina para todos los tipos de la API.

Ver esquemas

Shim y demostración

Un polyfill funcional para experimentación local.

Probar el shim