Comment vérifier le statut G111 du Consent Mode V2 pour ne plus perdre vos revenus AdSense
Depuis que Google a introduit le Consent Mode V2 (GCM V2) et rendu obligatoires les deux nouveaux paramètres (ad_user_data et ad_personalization) pour le trafic en provenance de l’EEE et du Royaume-Uni, de nombreux éditeurs de sites web ont constaté une chute spectaculaire de leurs revenus AdSense.
La raison est simple : si Google ne reçoit pas le signal de consentement requis, il se rabat sur la diffusion d’annonces non personnalisées, dont le coût par mille impressions (CPM) et le coût par clic (CPC) sont considérablement plus faibles.
La clé pour maximiser vos revenus est de prouver que le signal de consentement est correctement émis et reçu.
Ce guide vous offre la méthode de vérification ultime en deux étapes, applicable à toutes les plateformes web (WordPress, Shopify, solutions personnalisées, etc.), pour garantir que votre site envoie le signal critique GCS=G111, qui autorise les annonces personnalisées et à forte valeur.
1. Pourquoi le Consent Mode V2 est critique pour vos revenus AdSense
L’enjeu central : annonces personnalisées vs. non personnalisées
Google s’appuie sur les signaux de suivi pour diffuser des annonces hautement ciblées. Les annonces ciblées génèrent des enchères plus élevées de la part des annonceurs.
- Quand le consentement est ACCORDÉ (GCS=G111) : AdSense diffuse des annonces personnalisées. Les revenus sont maximisés.
- Quand le consentement est REFUSÉ (GCS=G100) : AdSense diffuse des annonces non personnalisées (ou utilise la modélisation de base). Les revenus chutent considérablement (souvent de 30 à 70 %).
Votre implémentation de GA4, que vous utilisiez gtag.js ou Google Tag Manager, doit communiquer correctement le choix de l’utilisateur aux systèmes publicitaires de Google.
L’importance du paramètre GCS
Le paramètre Google Consent Status (GCS) est l’unique source de vérité. Il est envoyé dans chaque requête réseau pertinente de GA4 et AdSense.
| Valeur GCS | Signification | Impact sur les revenus |
| G111 | Tous les stockages/données sont accordés (ad_storage et analytics_storage à 1). | Revenus maximums (Annonces personnalisées) |
| G100 | Tous les stockages/données sont refusés (ad_storage et analytics_storage à 0). | Revenus minimums (Annonces non personnalisées) |
Si vous voyez G100 après qu’un utilisateur ait accepté le consentement, votre intégration ne fonctionne pas.
2. Le processus de vérification en deux étapes (agnostique)
Un point de défaillance courant est un faux positif : votre plateforme de gestion du consentement (CMP) pense qu’elle a envoyé la mise à jour, mais Google ne l’a jamais reçue correctement. Vous avez besoin de deux scripts complémentaires pour confirmer à la fois l’intention (ce que vous avez envoyé) et la réalité (ce que Google a reçu).
Les scripts suivants ne s’appuient que sur les outils de développement du navigateur et la couche de données standard de Google (dataLayer), ce qui garantit leur fonctionnement sur n’importe quelle plateforme web.
Étape 1 : Vérifier l’intention (Le check dataLayer)
Ce script vérifie la couche de données (dataLayer) pour s’assurer que votre CMP envoie la bonne commande gtag(‘consent’, ‘update’, …) avec les paramètres requis.
Procédure
- Ouvrez votre site web dans une fenêtre de navigation privée.
- Ouvrez la Console de votre navigateur (F12).
- Copiez-collez le script ci-dessous dans la Console et appuyez sur Entrée.
Le script de vérification du statut dataLayer
(function() {
console.clear();
console.log("%c🕵️ VÉRIFICATION DE L'INTENTION : Commandes de Consentement dataLayer", "background: #202124; color: #fff; font-size: 14px; padding: 10px; border-radius: 5px; font-weight: bold;");
const consentCommands = (dataLayer || []).filter(entry => entry && (entry[0] === 'consent'));
if (consentCommands.length === 0) {
console.warn("⚠️ Aucune commande de consentement trouvée dans le dataLayer.");
return;
}
console.log(`%cTrouvé ${consentCommands.length} événement(s) de consentement :`, "color: #1a73e8; font-weight: bold;");
consentCommands.forEach((cmd, index) => {
const type = cmd[1].toUpperCase();
const params = cmd[2];
const styles = type === 'DEFAULT'
? "background: #ffe0b2; color: #e65100; font-weight: bold; padding: 2px 5px; border-radius: 3px;"
: "background: #c8e6c9; color: #2e7d32; font-weight: bold; padding: 2px 5px; border-radius: 3px;";
console.groupCollapsed(`%c${index + 1}. ${type}`, styles);
const statusTable = {};
const criticalKeys = ['ad_storage', 'ad_user_data', 'ad_personalization', 'analytics_storage'];
criticalKeys.forEach(key => {
if (params[key]) {
statusTable[key] = params[key];
}
});
console.table(statusTable);
if (params['ad_personalization'] === 'granted' && params['ad_user_data'] === 'granted') {
console.log("%c✅ Signal de données personnalisées AdSense : ACCORDÉ", "color: green; font-weight: bold;");
} else {
console.log("%c⛔ Signal de données personnalisées AdSense : REFUSÉ ou LIMITÉ", "color: red; font-weight: bold;");
}
console.groupEnd();
});
})();
Résultats attendus pour l’Étape 1
| État | Sortie attendue dans la Console | Signification |
| Chargement initial | 1. DEFAULT avec denied pour les paramètres de stockage/données. | Votre site est légalement conforme (GCM V2 démarre restreint). |
| Après Acceptation | Une nouvelle ligne X. UPDATE avec granted pour les paramètres de stockage/données. | Votre CMP envoie le bon signal (Intention vérifiée). |
Étape 2 : Vérifier la réalité (Le check Réseau)
Ce script est la « source de vérité unique ». Il surveille les requêtes réseau réelles envoyées à Google pour voir si le paramètre gcs confirme le changement de statut.
Procédure
- Gardez la Console ouverte et rafraîchissez la page.
- Collez le script ci-dessous dans la Console et appuyez sur Entrée.
- Acceptez les cookies sur votre bannière CMP.
- Naviguez vers une autre page de votre site pour forcer une nouvelle requête GA4/AdSense.
Le script de surveillance réseau
(function() {
console.clear();
console.log("%c📡 VÉRIFICATION DE LA RÉALITÉ : Surveillance GCS Réseau", "background: #000080; color: #fff; font-size: 14px; padding: 10px; border-radius: 5px; font-weight: bold;");
console.log("Surveillance des requêtes réseau Google Analytics / Ads pour le statut GCS...");
function decodeGCS(gcs) {
if (!gcs) return "INCONNU (Paramètre absent)";
if (gcs === 'G100') return '❌ G100 : Tout Refusé (Mode Anonyme/Basique)';
if (gcs === 'G111') return '✅ G111 : TOUT ACCORDÉ (Ads + Analytics)';
return `❓ ${gcs} : Statut partiel ou complexe`;
}
const observer = new PerformanceObserver((list) => {
list.getEntriesByType('resource').forEach((entry) => {
if (entry.name.includes('/collect') || entry.name.includes('google-analytics') || entry.name.includes('doubleclick')) {
const urlObj = new URL(entry.name);
const gcs = urlObj.searchParams.get('gcs');
if (gcs) {
const isGranted = gcs === 'G111';
const style = isGranted
? "background: #e8f5e9; color: #1b5e20; border-left: 4px solid #4caf50; padding: 4px;"
: "background: #ffebee; color: #b71c1c; border-left: 4px solid #f44336; padding: 4px;";
console.groupCollapsed(`%c📡 Hit détecté : ${gcs}`, style.replace('padding: 4px;', 'font-weight:bold;'));
console.log(`%cStatut : ${decodeGCS(gcs)}`, "font-weight:bold;");
console.log("URL :", entry.name);
console.groupEnd();
}
}
});
});
observer.observe({ type: 'resource', buffered: true });
})();
Résultats attendus pour l’Étape 2
| Action | Sortie attendue dans la Console | Statut des revenus |
| Chargement initial | Les hits affichent G100 | Conformité légale respectée. |
| Après acceptation & navigation | Les nouveaux hits affichent G111 | SUCCÈS ! Les annonces personnalisées sont activées. Les revenus sont optimisés. |
| Scénario d’échec | Les hits restent à G100 | ÉCHEC. La mise à jour du GCM V2 n’est pas traitée correctement. Les revenus AdSense restent faibles. |
3. Dépannage : pourquoi vous voyez encore G100
Si l’Étape 2 échoue (vous restez à G100 après avoir accepté), le pont de communication entre votre CMP et Google est brisé.
- Conflit de chargement de la CMP : Votre script CMP se charge après le code GA4 principal, ce qui signifie que la mise à jour du consentement est manquée par Google. Correction : Assurez-vous que votre CMP est chargé en premier et peut exécuter la commande gtag(‘consent’, ‘default’, …).
- Paramètres manquants : Votre CMP n’est pas mis à jour pour inclure les paramètres obligatoires ad_user_data et ad_personalization. Correction : Mettez à jour votre solution CMP vers la dernière version compatible GCM V2.
- Problèmes de cache : Le cache côté serveur ou CMS (ex. : WordPress) sert du code obsolète. Correction : Videz tous les caches (WordPress et serveur) et réessayez le test dans une fenêtre de navigation privée.
En vérifiant à la fois l’intention dans le dataLayer et la réalité dans le statut Réseau, vous reprenez le contrôle total de votre implémentation GCM V2 et protégez vos revenus AdSense.
Pour ne rien rater, abonnez-vous à Cosmo Games sur Google News et suivez-nous sur X (ex Twitter) en particulier pour les bons plans en direct. Vos commentaires enrichissent nos articles, alors n'hésitez pas à réagir ! Un partage sur les réseaux nous aide énormément. Merci pour votre soutien !
