|

Comment vérifier le statut G111 du Consent Mode V2 pour ne plus perdre vos revenus AdSense

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

La suite après la publicité

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.

La suite après la publicité

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 GCSSignificationImpact sur les revenus
G111Tous les stockages/données sont accordés (ad_storage et analytics_storage à 1).Revenus maximums (Annonces personnalisées)
G100Tous 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.

La suite après la publicité

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.

La suite après la publicité

É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

  1. Ouvrez votre site web dans une fenêtre de navigation privée.
  2. Ouvrez la Console de votre navigateur (F12).
  3. 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

ÉtatSortie attendue dans la ConsoleSignification
Chargement initial1. DEFAULT avec denied pour les paramètres de stockage/données.Votre site est légalement conforme (GCM V2 démarre restreint).
Après AcceptationUne 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)

La suite après la publicité

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

  1. Gardez la Console ouverte et rafraîchissez la page.
  2. Collez le script ci-dessous dans la Console et appuyez sur Entrée.
  3. Acceptez les cookies sur votre bannière CMP.
  4. 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

ActionSortie attendue dans la ConsoleStatut des revenus
Chargement initialLes hits affichent G100Conformité légale respectée.
Après acceptation & navigationLes nouveaux hits affichent G111SUCCÈS ! Les annonces personnalisées sont activées. Les revenus sont optimisés.
Scénario d’échecLes 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 !

La suite après la publicité

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *