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.

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 :

CMPEndroit où vérifier le mapping
AxeptioCookies Widget → Vendors → Google → vérifier les 4 signaux activés
DidomiConsole → Consent Notices → Google Consent Mode → vérifier l’activation
CookiebotManager → Site → Settings → Consent Mode → activé + mode Advanced
OneTrustCookie 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érificationCommentOK / KO
1gtag('consent', 'default', ...) présent avant GTMVoir le HTML source de la page (Ctrl+U)
24 signaux déclarés (pas seulement 2)ad_storage, analytics_storage, ad_user_data, ad_personalization
3État par défaut = denied dans l’EEEInspecter le code, pas l’interface CMP
4wait_for_update entre 300 et 800 msIdem
5Mode Advanced activé (pas Basic déguisé)DevTools Network : pings /g/collect même avant consentement
6Aucun cookie tiers avant consentementDevTools Application → Cookies à l’arrivée sur la page
7gcs=G111 après acceptation totaleDevTools Network → /g/collect → param gcs
8gcs=G100 après refus total (analytics only)Idem après clic « Refuser »
9update consent déclenché au clicMode aperçu GTM → onglet Consent
10Retrait fonctionne (granted → denied)Tester reset CMP + nouveau refus
11Tags Ads exigent les 4 signauxGTM → tag GAds → Additional Consent Settings
12Tags GA4 exigent au minimum analytics_storageIdem 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
G111Consentement complet (ad_storage + analytics_storage = granted)
G110analytics granted, ad denied
G101ad granted, analytics denied (rare)
G100Tout refusé, ping anonymisé envoyé
G001État par défaut transmis (Consent Mode mal initialisé)
G000Pas 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énarioComportement attendu
Visite + refus immédiatPings anonymisés (gcs=G100), pas de cookies tiers
Visite + acceptationgcs=G111, cookies déposés, événements complets
Refus puis changement d’avis (re-clic CMP)update consent émis, basculement live
Acceptation puis retraitupdate consent denied, arrêt des cookies, conservation des pings
Navigation cross-page après refusgcs=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/collect et google.com/pagead/conversion pour 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.

Sources

Besoin d'aide sur ce sujet ?

Je peux vous accompagner sur la mise en place ou l'optimisation de votre tracking.

Sans surprise : forfaits affichés en clair, devis validé avant kick-off, pas d'avenant.