Consent Mode v2 non conforme : checklist d'audit complète
Deux tiers des implémentations Consent Mode v2 contiennent des erreurs critiques. Checklist d'audit, debug DevTools et décodeur du paramètre gcs=.
Un taux d’échec alarmant — et silencieux
Les audits de terrain révèlent un constat préoccupant : environ deux tiers des implémentations Consent Mode v2 présentent des erreurs qui compromettent soit la conformité RGPD, soit la qualité des données, soit les deux. Le problème : ces défaillances passent quasi systématiquement inaperçues, parce que Consent Mode fonctionne silencieusement en arrière-plan, sans erreur visible dans la console, sans alerte dans GA4, sans message dans Google Ads.
Cet article n’est pas un guide d’implémentation — pour ça, lisez Consent Mode v2 : guide pratique. C’est une méthode d’audit complète : ce que vous devez vérifier, dans quel ordre, avec quels outils, et comment interpréter ce que vous voyez.
Les 7 erreurs critiques à débusquer
1. État par défaut absent ou mal positionné
Consent Mode v2 exige que les quatre signaux soient déclarés avec un état par défaut avant le chargement de gtag/GTM. Le plus souvent, on attend denied dans l’EEE (sauf consentement préalable légitime). Beaucoup d’implémentations omettent cette déclaration, laissant les signaux dans un état indéfini que Google interprète comme « non géré ».
Côté code, l’appel à vérifier ressemble à ceci :
// Doit apparaître AVANT le snippet GTM/gtag
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'wait_for_update': 500
});
Si vous trouvez un consent default après le chargement de GTM, ou pas du tout, c’est une non-conformité immédiate.
2. Signaux v2 (ad_user_data / ad_personalization) absents
C’est l’erreur la plus fréquente sur les implémentations migrées depuis Consent Mode v1. Ces deux signaux sont devenus obligatoires en mars 2024 pour le Digital Markets Act. Sans eux, Google Ads ne peut pas utiliser vos données pour le remarketing ni pour les audiences similaires, et la modélisation des conversions est dégradée — sans qu’aucune alerte ne soit remontée dans l’interface Ads.
Test rapide : ouvrez DevTools → Network → cherchez une requête google-analytics.com/g/collect. Le paramètre gcs= doit comporter 4 chiffres (ex : G111), pas 2.
3. Désynchronisation CMP ↔ Consent Mode
L’utilisateur clique « Accepter » dans le bandeau, mais GTM continue d’envoyer denied. Le bug vient presque toujours d’un mauvais mapping entre les catégories de la CMP (Marketing, Analytics, Préférences, etc.) et les signaux Consent Mode. Chaque CMP a sa propre logique :
| CMP | Endroit où vérifier le mapping |
|---|---|
| Axeptio | Cookies Widget → Vendors → Google → vérifier les 4 signaux activés |
| Didomi | Console → Consent Notices → Google Consent Mode → vérifier l’activation |
| Cookiebot | Manager → Site → Settings → Consent Mode → activé + mode Advanced |
| OneTrust | Cookie Consent → Templates → Geolocation Rules → Google CM v2 |
Pour un comparatif détaillé des 4 CMP majeures, voir Axeptio vs Cookiebot vs Didomi vs OneTrust.
4. Délai wait_for_update mal calibré
Le paramètre wait_for_update indique à gtag combien de millisecondes attendre avant d’envoyer les pings, le temps que la CMP transmette son état. Trop court (< 200ms) : les tags partent avant la mise à jour, les premiers événements sont biaisés. Trop long (> 1000ms) : vous perdez des vues sur les sessions courtes ou les bounces rapides. La valeur sûre est 500ms.
5. Absence de mode Advanced (alors qu’il est annoncé en Advanced)
Dans Basic, les tags ne se déclenchent pas tant que le consentement n’est pas donné — vous perdez toute donnée sur les non-consentants. Dans Advanced, les tags partent avec des pings anonymisés (sans cookies, sans identifiants) qui alimentent la modélisation Google. Beaucoup d’équipes pensent être en Advanced parce qu’elles ont coché la case dans la CMP, alors que GTM bloque encore les tags via des déclencheurs conditionnels — annulant l’effet Advanced.
Pour comprendre la distinction et son impact sur la modélisation, lisez Basic vs Advanced Consent Mode.
6. Cookies déposés avant consentement
Le Consent Mode ne remplace pas le blocage des cookies. La CMP doit toujours empêcher le dépôt de cookies non essentiels avant consentement. Vérifiez dans DevTools → Application → Cookies : avant tout clic sur le bandeau, vous ne devez voir que les cookies strictement nécessaires (session, CSRF, préférences UI). La présence de _ga, _gid, _fbp ou IDE avant consentement = sanction CNIL probable.
7. Pas de test du parcours de refus ni de retrait
90 % des équipes vérifient que le tracking fonctionne après acceptation. Quasiment aucune ne teste : (1) le parcours refus, (2) le retrait de consentement après acceptation (update consent). C’est pourtant là que se cachent les bugs les plus graves, parce qu’ils n’apparaissent qu’à un utilisateur sur dix.
Checklist d’audit en 12 points
À copier dans votre doc d’audit et à passer ligne par ligne :
| # | Vérification | Comment | OK / KO |
|---|---|---|---|
| 1 | gtag('consent', 'default', ...) présent avant GTM | Voir le HTML source de la page (Ctrl+U) | |
| 2 | 4 signaux déclarés (pas seulement 2) | ad_storage, analytics_storage, ad_user_data, ad_personalization | |
| 3 | État par défaut = denied dans l’EEE | Inspecter le code, pas l’interface CMP | |
| 4 | wait_for_update entre 300 et 800 ms | Idem | |
| 5 | Mode Advanced activé (pas Basic déguisé) | DevTools Network : pings /g/collect même avant consentement | |
| 6 | Aucun cookie tiers avant consentement | DevTools Application → Cookies à l’arrivée sur la page | |
| 7 | gcs=G111 après acceptation totale | DevTools Network → /g/collect → param gcs | |
| 8 | gcs=G100 après refus total (analytics only) | Idem après clic « Refuser » | |
| 9 | update consent déclenché au clic | Mode aperçu GTM → onglet Consent | |
| 10 | Retrait fonctionne (granted → denied) | Tester reset CMP + nouveau refus | |
| 11 | Tags Ads exigent les 4 signaux | GTM → tag GAds → Additional Consent Settings | |
| 12 | Tags GA4 exigent au minimum analytics_storage | Idem sur tags GA4 |
Procédure de debug en 5 étapes
Étape 1 — Mode aperçu GTM
Activez le mode aperçu de GTM sur la page à auditer. Dans le panneau Tag Assistant qui s’ouvre, naviguez vers l’onglet Consent. Vous y voyez les états avant et après chaque événement. Au chargement de page, les 4 signaux doivent être à denied (état par défaut). Cliquez sur « Accepter tout » dans la CMP : les 4 signaux doivent basculer à granted dans la colonne « After ». Cliquez sur « Refuser » : tous à denied (sauf si la CMP propose une granularité).
Étape 2 — Décodage du paramètre gcs=
Le paramètre gcs= dans les requêtes /g/collect encode l’état du consentement. Format : G + 3 chiffres. Le premier chiffre indique si la requête a été envoyée avec ou sans consentement, les deux suivants encodent l’état des deux signaux historiques.
Valeur gcs= | Signification |
|---|---|
G111 | Consentement complet (ad_storage + analytics_storage = granted) |
G110 | analytics granted, ad denied |
G101 | ad granted, analytics denied (rare) |
G100 | Tout refusé, ping anonymisé envoyé |
G001 | État par défaut transmis (Consent Mode mal initialisé) |
G000 | Pas de Consent Mode du tout |
Si vous voyez G000 ou G001 après acceptation, le Consent Mode n’est pas correctement câblé. Si vous ne voyez aucun gcs=, vous êtes en Basic (les tags ne se déclenchent pas du tout sans consentement).
Étape 3 — Inspection du data layer
Dans la console DevTools, tapez dataLayer puis Entrée. Vous devez voir au minimum un événement consent avec 'default' comme commande au tout début du tableau. Après clic sur la CMP, un consent update doit apparaître. Si l’update est absent, le mapping CMP est cassé.
Étape 4 — Audit des tags GTM
Dans GTM → Workspace → Tags : pour chaque tag Google, cliquez et ouvrez Advanced Settings → Consent Settings. Les tags GA4 doivent exiger analytics_storage. Les tags Google Ads doivent exiger les quatre signaux. Si un tag Ads n’exige que ad_storage, vous perdez la conformité DMA.
Étape 5 — Test des scénarios bord
| Scénario | Comportement attendu |
|---|---|
| Visite + refus immédiat | Pings anonymisés (gcs=G100), pas de cookies tiers |
| Visite + acceptation | gcs=G111, cookies déposés, événements complets |
| Refus puis changement d’avis (re-clic CMP) | update consent émis, basculement live |
| Acceptation puis retrait | update consent denied, arrêt des cookies, conservation des pings |
| Navigation cross-page après refus | gcs=G100 persistant sur toutes les pages |
Les conséquences chiffrées d’une implémentation défaillante
Côté données : sans signaux v2, vous perdez l’accès à la modélisation Google des conversions. Sur un compte Ads avec un taux de refus de 40 %, ça représente jusqu’à 25 % de conversions invisibles dans vos rapports — donc 25 % de ROAS sous-estimé. Si vous arrêtez des campagnes sur ce signal faussé, le coût d’opportunité est immédiat.
Côté juridique : une CMP affichée sans Consent Mode correctement branché crée une fausse impression de conformité. Les données sont collectées sans que le consentement soit techniquement respecté — exactement le type de configuration qui a valu à plusieurs annonceurs des sanctions CNIL. Voir le bilan CNIL 2025 et les vraies sanctions pour les montants observés.
Côté performance publicitaire : l’absence des signaux v2 empêche Google Ads d’exploiter les audiences de remarketing en Europe. Les tests de Smart Bidding fonctionnent moins bien, l’algorithme dispose de moins de signaux pour optimiser, et les performances se dégradent progressivement sur plusieurs semaines.
Outils recommandés pour l’audit
- Tag Assistant Companion (extension Chrome de Google) : visualisation native de l’état Consent
- GTM Preview Mode : onglet « Consent » obligatoire à consulter
- DataLayer Checker (extension Chrome) : inspection rapide du data layer
- DevTools Network filter :
g/collectetgoogle.com/pagead/conversionpour capter les pings - CookieMetrix ou 2GDPR : audit externe automatisé (à utiliser comme complément, pas comme source unique)
Quand faire appel à un audit pro
L’autocontrôle suffit pour un site simple, une seule CMP, sans cocon tiers (chatbots, A/B tests, embeds). Dès que vous combinez plusieurs CMP (intranet + site public), un sGTM, des conversions offline ou un Meta Pixel via CAPI, le risque d’erreur dépasse ce qu’une checklist peut couvrir.
Pour aller plus loin sur l’alignement CMP + conformité juridique, voir l’audit conformité Consent qui couvre la partie LIA, registre des traitements et préparation contrôle CNIL. Un audit complet d’implémentation Consent Mode et CMP prend en général 4 à 6 heures et révèle systématiquement entre 3 et 8 corrections à apporter.