Les extensions cessent de casser votre interface
Plus de tickets de support lorsque Consent-o-matic pousse une mise à jour qui casse votre bannière. Les extensions interagissent avec des métadonnées structurées, pas votre DOM.
Les assistants de consentement, les navigateurs et les régulateurs dépendent tous des données que vous produisez. navigator.consent est l’API qui rend votre infrastructure de conformité lisible par les machines, et fait de votre CMP la source de données de référence sur laquelle repose l’écosystème du consentement.
Les utilisateurs voient la bannière. Ils ne voient pas ce qu’il y a derrière : la gestion des fournisseurs à travers les juridictions, des pistes d’audit opposables, la propagation du consentement en temps réel aux sous-traitants, les expériences multilingues conformes à l’exigence de spécificité du RGPD.
La spécification proposée navigator.consent rend ce travail visible pour le reste de l’écosystème. Vos déclarations de fournisseurs deviennent des données structurées que les assistants de consentement lisent directement. Votre état de consentement devient auditable par conception. La CMP devient la source faisant autorité sur laquelle repose toute la chaîne de consentement.
Aujourd’hui, les assistants de consentement font de la rétro-ingénierie sur votre DOM : scrapent les boutons, devinent les listes de fournisseurs, injectent des clics. Chaque mise à jour de CMP peut casser chaque extension. navigator.consent remplace ce scraping fragile par une API structurée : vous déclarez vos fournisseurs et finalités, les assistants lisent directement les métadonnées.
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}Plus de tickets de support lorsque Consent-o-matic pousse une mise à jour qui casse votre bannière. Les extensions interagissent avec des métadonnées structurées, pas votre DOM.
Lorsqu’un assistant de consentement gère le consentement via l’API, votre bundle complet d’interface (JS, CSS, polices, images) n’a jamais besoin d’être chargé. À grande échelle, ça se chiffre.
Chaque mutation de préférence est enregistrée avec provenance et horodatage. La preuve de conformité est intégrée au protocole, pas plaquée après coup.
Les assistants de consentement dépendent de vos déclarations de fournisseurs et de finalités. L’écosystème s’appuie sur vos données au lieu de les contourner.
Une seule intégration API remplace N contournements spécifiques par extension. Chaque assistant de consentement actuel et futur utilise le même canal.
Plus besoin de maintenir votre propre géolocalisation IP pour deviner quel cadre juridique s'applique. Le navigateur fournit directement le contexte réglementaire via getRegulations(). Une pièce mobile en moins susceptible de mettre en risque vos clients et vous.
navigator.consent est une couche de transport. Elle ne remplace pas vos responsabilités juridiques, de conformité ou d’expérience utilisateur.Vous présentez les informations de consentement et recueillez les choix via votre propre interface. L’API coordonne, elle n’impose pas d’expérience utilisateur.
Vous restez le système de référence pour les preuves de consentement. L’API ajoute un canal de coordination, pas un remplacement.
Vous définissez le périmètre du consentement (origin, domain, eTLD+1) et la politique de persistance. Le navigateur ne s'y substitue pas.
Modèle d’enregistrement ouvert. Pas de listes blanches, pas de portes d’attestation, pas d’intermédiaire entre vous et vos fournisseurs.
Toutes ces méthodes s’exécutent dans le contexte DOM. Les scripts en contexte d’extension ne peuvent pas les appeler. Le navigateur applique cette frontière.
registerInterface()Déclarez votre interface de consentement pour la page courante. Retourne un registrationId pour toutes les opérations suivantes.
registerVendors()Publiez votre catalogue de fournisseurs : nom, domaine, URL de politique de confidentialité. Les assistants de consentement lisent cela au lieu de scraper.
registerPurposes()Publiez les finalités de traitement, chacune avec un id libre et un nom lisible par l’humain.
requestConsent()Signalez l’assistant avant d’afficher votre interface de consentement. Avec un scope vide, cela signale un consentement général (bannière de première visite). Avec des identifiants de fournisseur ou de finalité spécifiques, cela signale un besoin contextuel (ex. : contenu embarqué bloqué). Dans les deux cas, l’assistant a la possibilité de répondre avant que vous n’affichiez votre propre interface.
updatePreferences()Synchronisez des préférences déjà collectées ou poussez des mises à jour côté CMP. Déclenche un événement de mise à jour que les assistants écoutent.
getRegulations()Retourne le contexte réglementaire du navigateur : réglementations applicables, juridiction et source de détection. Méthode partagée, disponible en contexte DOM et extension.
La spécification complète de l’API avec les types, méthodes et comportements.
Définitions de payloads lisibles par les machines pour tous les types de l’API.
Un polyfill fonctionnel pour l’expérimentation locale.