Consent Mode v2 sur Shopify : Installation, configuration et vérification
Le Consent Mode v2 est obligatoire pour les annonceurs Google ciblant l'EEE depuis juillet 2025. Ce guide correspond à l'état des intégrations Shopify en mai 2026 — vérifiez la documentation de votre CMP pour les dernières mises à jour.
Obligatoire depuis juillet 2025 pour toute boutique Shopify utilisant Google Ads ou GA4 avec une audience EEE/UK. Les boutiques non conformes ont perdu leurs audiences de remarketing et dégradé leurs algorithmes Smart Bidding — sans délai de grâce.
La complexité spécifique à Shopify : contrairement à un site classique, Shopify a deux contextes de tracking — les pages storefront (via GTM standard) et le checkout (via Custom Pixel dans un sandbox isolé). Le consentement doit être configuré dans les deux contextes séparément.
L'erreur la plus fréquente : avoir un bandeau cookies qui enregistre le choix de l'utilisateur dans sa propre base de données, mais ne jamais envoyer le signal de mise à jour (gtag('consent', 'update', ...)) vers GTM. Résultat : GA4 et Google Ads pensent que le consentement est toujours refusé — même quand l'utilisateur a accepté.
denied placés avant le snippet GTM dans theme.liquid, et une configuration séparée dans le Custom Pixel pour le checkout. Vérifiez systématiquement via Tag Assistant Companion avant de considérer le travail terminé.
Pourquoi c'est obligatoire en 2026 — et ce qui se passe sans
Google a rendu le Consent Mode v2 obligatoire pour tous les annonceurs ciblant l'EEE et le Royaume-Uni depuis juillet 2025. Les conséquences d'une non-conformité sont immédiates et mesurables.
| Sans Consent Mode v2 | Avec Consent Mode v2 correctement configuré |
|---|---|
| ❌ Audiences de remarketing non alimentées pour les utilisateurs EEE qui refusent | ✅ Modélisation comportementale Google — audiences reconstituées sur les données disponibles |
| ❌ Enhanced Conversions non fonctionnelles — données hashées non transmises | ✅ Enhanced Conversions opérationnelles — meilleur taux de correspondance |
| ❌ Smart Bidding dégradé — signal incomplet sur les conversions EEE | ✅ Smart Bidding avec modélisation des conversions manquantes |
| ❌ Données GA4 incomplètes pour les utilisateurs qui refusent | ✅ Modélisation GA4 — estimation des comportements non trackés |
| ❌ Risque de non-conformité RGPD — cookies déposés avant consentement | ✅ Aucun cookie déposé avant consentement — conformité RGPD |
Pour une boutique Shopify dépensant 5 000 €/mois en Google Ads avec une audience européenne majoritaire, la dégradation des audiences de remarketing et du Smart Bidding peut représenter une hausse de CPA de 20 à 40 % selon les secteurs. Ce n'est pas une contrainte juridique abstraite — c'est un problème business direct.
Votre boutique Shopify n'a pas de Consent Mode v2 ou vous n'êtes pas sûr qu'il fonctionne ?
Parlez-nous de votre situation →Architecture Consent Mode v2 sur Shopify — les 2 contextes
Shopify a une architecture de tracking en deux parties distinctes. Le Consent Mode v2 doit être présent dans les deux — une configuration incomplète crée des trous dans vos données de conversion.
| Storefront (pages produit, collection…) | Checkout + page Merci | |
|---|---|---|
| Méthode GTM | Snippet GTM dans theme.liquid | Custom Pixel Shopify (Checkout Extensibility) |
| Contexte d'exécution | Page principale — accès DOM complet | Iframe sandboxé — accès DOM limité |
| GTM Preview | ✅ Fonctionne normalement | ❌ Ne fonctionne pas dans le sandbox |
| Consent Mode init | Via tag GTM "Consent Initialization" | Via code dans le Custom Pixel avant le snippet GTM |
| CMP signal source | Shopify Customer Privacy API + CMP tag GTM | Shopify Customer Privacy API lue dans le Custom Pixel |
| Shopify Standard | ✅ Accès complet à theme.liquid | ✅ Custom Pixel disponible |
| Shopify Plus | ✅ Accès complet | ✅ Checkout Extensibility + Custom Pixel |
Shopify Customer Privacy API — le pont entre votre CMP et GTM
La Shopify Customer Privacy API est le mécanisme natif qui gère les préférences de consentement des visiteurs. C'est le pont entre ce que votre CMP enregistre et ce que vos balises GTM reçoivent.
-
1Le visiteur interagit avec le bandeau cookies Shopify
Il accepte, refuse ou configure ses préférences. La CMP enregistre ce choix dans sa propre base de données.
-
2La CMP écrit dans la Customer Privacy API
Une CMP correctement intégrée appelle
Shopify.customerPrivacy.setTrackingConsent()avec les choix (analytics: true/false, marketing: true/false). Si cette étape ne s'exécute pas, GTM ne reçoit jamais le signal de mise à jour. -
3La CMP traduit les champs Shopify en signaux Consent Mode v2
Le mapping n'est pas automatique. Votre CMP doit effectuer la correspondance :
marketing: true→ad_storage: 'granted'+ad_user_data: 'granted'+ad_personalization: 'granted'analytics: true→analytics_storage: 'granted'
Si votre CMP ne gère pas ce mapping, les 4 signaux Consent Mode v2 ne sont jamais mis à jour — même si le visiteur a accepté.
-
4GTM reçoit le signal via gtag('consent', 'update', ...)
Le template CMP dans GTM écoute les changements de la Customer Privacy API et appelle
gtag('consent', 'update', {ad_storage: 'granted', ...}). Toutes les balises GTM en attente d'une mise à jour de consentement se déclenchent alors.
gtag('consent', 'update'). Résultat : votre bandeau est affiché, les choix sont enregistrés, mais GTM reste en mode "denied" pour tous les visiteurs — y compris ceux qui ont accepté.Choisir sa CMP pour Shopify et Consent Mode v2
- Intégration Shopify Customer Privacy API : la CMP appelle nativement
Shopify.customerPrivacy.setTrackingConsent(). - Template GTM disponible : présent dans la Galerie de modèles GTM avec déclencheur "Consent Initialization".
- 4 signaux Consent Mode v2 :
ad_storage,analytics_storage,ad_user_data,ad_personalization— pas seulement les 2 de la v1. - CMP certifiée Google : présente sur la liste officielle Google Certified CMPs.
- Support du checkout Shopify : fonctionne dans le contexte Custom Pixel sandbox.
| CMP | Intégration Shopify | Template GTM | CMv2 certifié | Prix indicatif |
|---|---|---|---|---|
| Axeptio | ✅ App Shopify native | ✅ Template GTM | ✅ Certifié | ~30–80 €/mois |
| Cookiebot / Cookiebot CMP | ✅ App Shopify | ✅ Template GTM officiel | ✅ Certifié | ~10–30 €/mois |
| CookieYes | ✅ App Shopify | ✅ Template GTM | ✅ Certifié | ~10–30 €/mois |
| Pandectes | ✅ App Shopify native | ✅ Template GTM | ✅ Certifié | ~15–30 €/mois |
| Consentmo | ✅ App Shopify | ✅ Template GTM | ✅ Certifié Google + Microsoft | ~10–40 €/mois |
| Didomi | ⚠️ Configuration custom | ✅ Template GTM | ✅ Certifié | Sur devis — enterprise |
Recommandation pour la France : Axeptio est le plus répandu auprès des marchands français, avec support francophone et configuration relativement simple. Cookiebot est une alternative solide si vous utilisez l'écosystème Usercentrics. Pandectes, spécialisé Shopify, offre une intégration plus fine avec la Customer Privacy API pour les boutiques à fort volume. Consentmo est à noter si vous gérez également des campagnes Microsoft Ads — il est l'un des rares CMPs certifiés à la fois par Google et Microsoft UET.
Installation Consent Mode v2 sur Shopify via GTM — pas à pas
-
1Ajouter les defaults Consent Mode v2 avant le snippet GTM
Dans
theme.liquid, avant le snippet GTM, ajoutez :<script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} // Consent Mode v2 — defaults denied (EEE) gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'wait_for_update': 500 }); </script> <!-- Snippet GTM ici -->La commande
gtag('consent', 'default')initialise les signaux. Le paramètrewait_for_update: 500donne 500ms à la CMP pour envoyer le signal de mise à jour avant que les balises GTM ne se déclenchent en mode denied. -
2Installer le template CMP dans GTM
GTM → Balises → Galerie de modèles → cherchez votre CMP. Configurez avec votre clé de site.
Déclencheur obligatoire : Initialisation du consentement — Toutes les pages. Ce déclencheur spécial s'exécute avant tous les autres — c'est la seule façon de garantir que les signaux sont définis avant les balises GA4 et Google Ads.
-
3Configurer les exigences de consentement sur chaque balise
GTM → chaque balise Google Ads, GA4 → section "Paramètres avancés" → "Contrôles du consentement" → associez les paramètres requis : GA4 :
analytics_storage. Google Ads :ad_storage+ad_user_data. -
4Vérifier dans GTM Preview — Consent Overview
Mode Preview GTM → chargez une page storefront → Tag Assistant Companion, onglet Consent → refusez les cookies → les balises GA4 et Google Ads doivent afficher "Blocked by consent". Acceptez → "Fired".
Consent Mode v2 dans le Custom Pixel Shopify (checkout)
Le checkout Shopify s'exécute dans un sandbox isolé — le Custom Pixel ne peut pas accéder au contexte GTM principal du storefront. Le Consent Mode v2 doit donc être initialisé séparément.
// Custom Pixel Shopify — initialisation Consent Mode v2
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// 1. Lire le statut de consentement depuis Shopify Customer Privacy API
const analyticsConsent = window.Shopify?.customerPrivacy?.analyticsProcessingAllowed()
? 'granted' : 'denied';
const marketingConsent = window.Shopify?.customerPrivacy?.marketingAllowed()
? 'granted' : 'denied';
// 2. Initialiser Consent Mode v2 avec les valeurs actuelles
gtag('consent', 'default', {
'ad_storage': marketingConsent,
'analytics_storage': analyticsConsent,
'ad_user_data': marketingConsent,
'ad_personalization': marketingConsent,
});
// 3. Charger GTM avec les signaux corrects
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');
// 4. Event purchase après consentement correctement défini
analytics.subscribe('checkout_completed', (event) => {
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: event.data?.checkout?.order?.id || '',
value: parseFloat(event.data?.checkout?.totalPrice?.amount) || 0,
currency: event.data?.checkout?.currencyCode || 'EUR',
}
});
});
Point critique : dans le Custom Pixel, vous lisez le consentement actuel depuis la Customer Privacy API au moment du chargement — l'utilisateur a déjà fait son choix sur le storefront. Ce choix est accessible via window.Shopify.customerPrivacy.
Éviter le double tracking — canal natif Shopify vs GTM
C'est un angle mort fréquent : beaucoup de boutiques ont activé le canal Google natif de Shopify (dans Shopify Admin → Canaux de vente → Google) ET configuré GTM avec des balises GA4 et Google Ads. Résultat : chaque événement (view_item, add_to_cart, purchase) est envoyé deux fois.
| Configuration | Risque | Solution |
|---|---|---|
| Canal Google natif Shopify + balises GA4 dans GTM | Sessions et conversions doublées dans GA4 | Désactiver le canal natif Shopify OU supprimer la balise GA4 de GTM — jamais les deux actifs |
| Canal Google natif Shopify + Google Ads dans GTM | Conversions comptées deux fois — Smart Bidding sur-optimisé sur mauvaise donnée | Vérifier dans Google Ads → Diagnostics de conversion → colonnes "Toutes les conv." vs "Conv." — si les deux divergent fortement, suspicion de doublon |
| App CMP Shopify + template GTM de la même CMP | Signaux de consentement contradictoires — comportement imprévisible | Choisir une seule méthode : app Shopify OU template GTM, jamais les deux |
Règle pratique : si vous gérez le tracking via GTM, désactivez toujours les intégrations natives Shopify pour les mêmes outils. Shopify Admin → Paramètres → Canaux de vente → Google → vérifiez que le suivi automatique est désactivé si GTM prend le relai.
Les 4 signaux Consent Mode v2 — ce qu'ils contrôlent exactement
| Signal | Ce qu'il contrôle | Impact si denied |
|---|---|---|
| ad_storage | Cookies publicitaires Google (_gac, gclid, dclid) — tracking des clics Google Ads | Impossible d'attribuer les conversions aux clics précis |
| analytics_storage | Cookies analytics (_ga, _ga_XXXXXXX) — identification des utilisateurs pour GA4 | Sessions GA4 non associées — données agrégées uniquement |
| ad_user_data | Envoi des données utilisateur hashées vers Google pour Enhanced Conversions | Enhanced Conversions non fonctionnelles — pas de correspondance email/téléphone |
| ad_personalization | Utilisation des données pour la personnalisation publicitaire et les audiences de remarketing | L'utilisateur n'est pas ajouté aux audiences de remarketing Google |
Geo-targeting : Google recommande d'appliquer les defaults denied uniquement sur les régions EEE/UK si votre audience est globale. Configuration dans GTM avec le paramètre region: ['FR', 'DE', 'ES', 'IT', 'BE', ...] — cela évite de pénaliser les performances US où le consentement explicite n'est pas requis.
Microsoft Ads : si vous gérez des campagnes sur Bing/Microsoft Ads, la mise en conformité requiert également le Microsoft UET Consent Mode — un mécanisme similaire au Consent Mode v2 de Google, mais spécifique à Microsoft. Consentmo est l'une des rares CMPs certifiées pour les deux plateformes simultanément.
Vérification complète — 4 méthodes
- Tag Assistant Companion → onglet Consent : refus = balises "Blocked" / acceptation = balises "Fired". Si les balises sont "Fired" même après refus, le Consent Mode n'est pas configuré correctement.
- Paramètre gcs dans GA4 : DevTools → Réseau → filtrez sur "google-analytics" →
gcs=G100après refus,gcs=G111après acceptation complète. - Test checkout complet : passez une commande test — vérifiez dans DevTools que les requêtes Google Ads et GA4 depuis le checkout incluent les signaux de consentement corrects.
- Comparez taux d'acceptation CMP vs données GA4 : si votre CMP indique 65 % d'acceptation mais que vos sessions GA4 représentent seulement 40 % de vos sessions Shopify, votre signal de mise à jour ne s'exécute probablement pas correctement.
Erreurs fréquentes — le bandeau qui ne met pas à jour
L'erreur la plus destructrice : une CMP qui affiche un bandeau cookies fonctionnel mais ne transmet jamais le signal de mise à jour vers GTM.
| Erreur | Symptôme | Cause | Correction |
|---|---|---|---|
| Signal update jamais envoyé | GA4 affiche 30–40 % du trafic réel malgré un taux d'acceptation CMP élevé | La CMP enregistre le choix dans sa BDD mais ne déclenche pas gtag('consent', 'update') |
Vérifier le template GTM — il doit être configuré avec déclencheur "Consent Initialization". Contactez votre CMP. |
| Defaults chargés après GTM | Même les utilisateurs ayant refusé voient leurs données collectées lors de la première page | Le code gtag('consent', 'default', ...) est placé après le snippet GTM |
Déplacer le code d'initialisation avant le snippet GTM dans theme.liquid |
| Mapping incomplet CMP → Consent Mode | analytics_storage granted mais ad_user_data toujours denied |
La CMP ne mappe que les 2 signaux v1 | Mettre à jour le template CMP dans GTM vers une version récente supportant les 4 signaux v2 |
| Checkout non couvert | Conversions purchase sans signaux de consentement — Enhanced Conversions non fonctionnelles sur les achats | Consent Mode v2 configuré uniquement en storefront, pas dans le Custom Pixel | Ajouter l'initialisation Consent Mode v2 dans le Custom Pixel (voir section 06) |
| Double tracking actif | Conversions doublées dans Google Ads — rapports GA4 gonflés | Canal natif Shopify + GTM actifs simultanément pour les mêmes outils | Désactiver le canal natif Shopify si GTM prend le relai — vérifier via Google Ads → Diagnostics de conversion |
| Double configuration CMP | Conflits entre les signaux selon les pages | App CMP Shopify + template GTM de la même CMP en parallèle | Choisir une seule méthode : app OU GTM |
Décrivez-nous votre situation.
CMS utilisé, outils Google en place, symptômes observés — plus vous êtes précis, plus notre retour sera concret. Réponse sous 24h.
Parlez-nous de votre projet →Réponse sous 24h · Sans engagement · Devis sur mesure
Questions fréquentes
gtag('consent', 'default', {...}) avec les 4 paramètres sur denied dans theme.liquid avant le snippet GTM, (3) installer le template GTM de votre CMP avec le déclencheur "Consent Initialization — Toutes les pages". Pour le checkout, initialisez le Consent Mode v2 séparément dans le Custom Pixel en lisant la Shopify Customer Privacy API.gtag('consent', 'update', ...) vers GTM. GTM reste en mode "denied" même pour les utilisateurs ayant accepté. Vérifiez dans Tag Assistant Companion → onglet Consent : si les signaux ne passent jamais à "granted" après acceptation, votre template CMP dans GTM n'est pas correctement configuré.window.Shopify.customerPrivacy.analyticsProcessingAllowed() et marketingAllowed(). Sans cette configuration spécifique, les conversions purchase arrivent dans Google Ads sans signaux de consentement.