GTM sur Shopify : Installation complète avec Custom Pixel
L'architecture GTM sur Shopify a changé en 2024–2025 avec la dépréciation de checkout.liquid. Ce guide couvre la méthode Custom Pixel (Customer Events) valide en 2026. Vérifiez que votre boutique a bien migré vers Checkout Extensibility avant de commencer.
Installation pas à pas, code Custom Pixel complet, limitations sandbox, Consent Mode v2 et comparatif GTM vs apps (Elevar, Littledata) — méthode valide sur tous les plans Shopify.
Google Tag Manager Shopify · GTM Shopify · Shopify GTM · GTM Shopify checkout · Install GTM Shopify · Custom Pixel GTM
La méthode d'installation GTM sur Shopify a changé. L'ancienne méthode (injection dans theme.liquid) ne couvre plus le checkout depuis la migration Checkout Extensibility. En 2026, GTM s'installe via les Custom Pixels (Customer Events) — disponibles sur tous les plans Shopify, y compris Basic.
Ce que ça change : GTM s'exécute dans un iframe sandboxé isolé. Les triggers DOM natifs ne fonctionnent plus. Seuls les Custom Event triggers basés sur les événements Shopify fonctionnent. Le mode Preview GTM ne fonctionne pas dans ce contexte.
Ce qui a changé — la fin de checkout.liquid et la migration obligatoire
Shopify a déprécié checkout.liquid avec Checkout Extensibility :
- Août 2024 : dépréciation des pages Information, Expédition et Paiement via checkout.liquid
- Janvier 2025 : migration automatique des stores non migrés
- Août 2025 : dépréciation des pages Merci et Statut de commande — les scripts injectés via
checkout.liquidcessent de fonctionner
Conséquence directe : si vous n'avez pas migré, votre tracking checkout est probablement incomplet ou cassé depuis fin 2025. C'est la cause la plus fréquente des baisses de conversions inexpliquées sur les boutiques Shopify en 2026.
Les 2 méthodes en 2026 — comparaison
| theme.liquid (ancienne méthode) | Custom Pixel — Customer Events ✅ | |
|---|---|---|
| Pages couvertes | Storefront uniquement (hors checkout) | Toutes les pages + checkout + page Merci |
| Plans Shopify | Tous (checkout uniquement Plus) | Tous les plans — Basic inclus |
| Mode Preview GTM | ✅ Fonctionne | ❌ Ne fonctionne pas (sandbox) |
| Triggers DOM natifs | ✅ Clic, scroll, visibility… | ❌ Non disponibles dans le sandbox |
| Support Shopify | ❌ Déprécié | ✅ Méthode officielle recommandée |
| Tracking achat complet | ❌ Incomplet sans checkout.liquid | ✅ checkout_completed disponible |
Recommandation : utilisez les deux méthodes en parallèle — le Custom Pixel pour le tracking checkout et les conversions, le snippet dans theme.liquid pour les interactions on-site (heatmap, scroll, clics).
Votre tracking Shopify est cassé depuis la migration Checkout Extensibility ?
Parlez-nous de votre projet →Installer GTM sur Shopify via Custom Pixel — pas à pas
-
1Récupérez votre ID de conteneur GTM
Dans Google Tag Manager → sélectionnez votre conteneur → l'ID au format
GTM-XXXXXXXest affiché en haut de l'interface. -
2Accéder aux Customer Events dans Shopify
Admin Shopify → Paramètres → Customer Events → Ajouter un pixel personnalisé. Donnez un nom explicite — ex : "Google Tag Manager".
-
3Collez le code GTM Custom Pixel
Dans l'éditeur de code du pixel, collez le code suivant en remplaçant
GTM-XXXXXXXpar votre ID :// Initialisation du DataLayer et de GTM window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} // Consent Mode v2 — valeurs par défaut (denied pour l'EEE) gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'wait_for_update': 500 }); // Chargement du conteneur GTM (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'); // Abonnement aux Customer Events Shopify analytics.subscribe("product_viewed", (event) => { window.dataLayer.push({ ecommerce: null }); window.dataLayer.push({ event: "view_item", ecommerce: { currency: event.data?.productVariant?.price?.currencyCode || 'EUR', value: parseFloat(event.data?.productVariant?.price?.amount) || 0, items: [{ item_id: event.data?.productVariant?.sku || '', item_name: event.data?.productVariant?.product?.title || '', item_category: event.data?.productVariant?.product?.type || '', price: parseFloat(event.data?.productVariant?.price?.amount) || 0, quantity: 1 }] } }); }); analytics.subscribe("checkout_started", (event) => { window.dataLayer.push({ ecommerce: null }); window.dataLayer.push({ event: "begin_checkout", ecommerce: { currency: event.data?.checkout?.currencyCode || 'EUR', value: parseFloat(event.data?.checkout?.totalPrice?.amount) || 0 } }); }); 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, tax: parseFloat(event.data?.checkout?.totalTax?.amount) || 0, shipping: parseFloat(event.data?.checkout?.shippingLine?.price?.amount) || 0, currency: event.data?.checkout?.currencyCode || 'EUR', items: (event.data?.checkout?.lineItems || []).map(item => ({ item_id: item.variant?.sku || item.variant?.id || '', item_name: item.title || '', item_category: item.variant?.product?.type || '', price: parseFloat(item.variant?.price?.amount) || 0, quantity: item.quantity || 1 })) } }); }); -
4Configurer les permissions du pixel
Vérifiez les paramètres de confidentialité dans l'éditeur. Cliquez Enregistrer puis Connecter. Le statut du pixel doit passer à "Connecté".
-
5Vérifiez les paramètres de consentement du pixel
Dans Customer Events, chaque pixel a un paramètre "Privacy & Consent". Vérifiez la valeur configurée :
- "Not required" (par défaut) : le pixel se charge pour tous les visiteurs, indépendamment du consentement
- "Required" : le pixel ne se charge que si l'utilisateur a accordé les cookies Marketing — votre tracking checkout sera silencieusement inactif pour les utilisateurs qui refusent ou n'interagissent pas avec le bandeau
Pour l'EEE, la valeur "Required" est généralement recommandée pour la conformité RGPD, mais assurez-vous que votre CMP gère correctement la mise à jour du consentement.
S'abonner aux Customer Events Shopify — liste complète
| Événement Shopify | Équivalent GA4 | Données disponibles |
|---|---|---|
page_viewed | page_view | URL, titre, referrer |
product_viewed | view_item | Produit, variante, prix, SKU, type de produit |
product_added_to_cart | add_to_cart | Produit, quantité, variante, panier total |
cart_viewed | view_cart | Contenu du panier, total |
checkout_started | begin_checkout | Lignes de commande, total, devise |
checkout_address_info_submitted | add_shipping_info | Adresse, méthode d'expédition |
payment_info_submitted | add_payment_info | Méthode de paiement |
checkout_completed | purchase | Order ID, total, lignes, taxes, livraison |
search_submitted | search | Terme recherché |
collection_viewed | view_item_list | Nom de la collection, produits affichés |
Configurer GTM pour recevoir les événements Shopify
Créer les Custom Event triggers
Dans GTM → Déclencheurs → Nouveau → Type : Événement personnalisé. Nom de l'événement : exactement le même que dans votre push — ex : purchase, view_item, begin_checkout.
Variables DataLayer pour les données e-commerce
Variables → Nouvelle → Variable de couche de données. Pour récupérer les données de transaction :
ecommerce.transaction_id→ Transaction IDecommerce.value→ Valeur de commandeecommerce.currency→ Devise
Enrichir le DataLayer — item_category et dimensions personnalisées
Le DataLayer de base capte les champs essentiels. Pour des rapports GA4 plus riches, enrichissez les items avec des champs supplémentaires lors du push :
item_category: type de produit Shopify (item.variant?.product?.type) — déjà inclus dans le code ci-dessusitem_category2: collection principale du produit — nécessite un accès à l'API Storefront pour récupérer les collectionsdiscount_amount: montant remisé pour analyser l'impact des codes promocoupon: code promo appliqué (event.data?.checkout?.discountApplications[0]?.title)
Ces paramètres débloquent des rapports GA4 comme "quelles catégories de produits génèrent le plus de revenu" ou "quels codes promo produisent des acheteurs récurrents".
Limitations du sandbox Custom Pixel
| Fonctionnalité GTM | Fonctionne dans Custom Pixel ? | Alternative |
|---|---|---|
| Custom Event triggers (DataLayer) | ✅ Oui | — |
| Mode Preview GTM | ❌ Non | DevTools Console + Shopify Pixel Helper |
| Clic triggers (DOM) | ❌ Non | Événements Shopify custom ou theme.liquid |
| Scroll Depth trigger | ❌ Non | Implémenter dans theme.liquid |
| Element Visibility trigger | ❌ Non | Implémenter dans theme.liquid |
| History Change trigger (SPA) | ❌ Non | Écouter page_viewed Shopify |
| Balises GA4 | ✅ Oui | — |
| Balises Google Ads | ✅ Oui | — |
| Meta Pixel (via GTM) | ✅ Oui | — |
Consent Mode v2 sur Shopify avec GTM
Architecture recommandée
- Initialisation dans le Custom Pixel : tous les paramètres sur
deniedpar défaut (code inclus dans l'étape 3). - Mise à jour après consentement : votre CMP (Axeptio, Cookiebot, Cookieyes) doit être configurée avec l'intégration Shopify dédiée pour gérer la mise à jour des 4 paramètres.
- Vérification : DevTools → Réseau → en refus,
gcs=G100doit être présent.
Pour la configuration complète : Consent Mode v2 sur Shopify — guide complet →
Déboguer GTM sur Shopify — sans mode Preview
-
1DevTools Console — vérification des pushes DataLayer
F12 → onglet Console. Sur la page que vous souhaitez tester, tapez
dataLayer. Vous verrez les pushes de votre Custom Pixel. Sur la page produit : cherchezevent: "view_item". Sur la page de confirmation : cherchezevent: "purchase"avec untransaction_idnon vide. -
2Test avec Bogus Gateway — méthode officielle Shopify
Pour tester le tracking sur la page de confirmation sans passer par un vrai paiement : Admin Shopify → Paramètres → Paiements → activer Bogus Gateway (mode test Shopify). Passez une commande fictive avec le numéro de carte
1(qui simule une transaction réussie). Vérifiez dans DevTools que le pushcheckout_completedse déclenche bien avec les bonnes données. Désactivez le Bogus Gateway après les tests. -
3Shopify Pixel Helper — vérification des événements Customer Events
L'extension Chrome Shopify Pixel Helper (Chrome Web Store) affiche les événements Customer Events déclenchés sur chaque page — utile pour vérifier que Shopify envoie bien les événements à votre pixel avant même de regarder GTM.
-
4Vérifiez les doublons avec les apps natives Shopify
Point souvent négligé : si vous avez activé l'intégration native Shopify "Google & YouTube" et GTM Custom Pixel, les événements peuvent être envoyés deux fois — une fois par l'app native, une fois par GTM. Cela donne des conversions doublées dans Google Ads et GA4. Vérifiez dans DevTools → onglet Réseau → filtrez sur "google-analytics" : chaque événement doit apparaître une seule fois. De même pour Meta : l'app native Meta + Meta Pixel via GTM = double fire. Choisissez un seul canal par plateforme.
GTM vs apps Shopify — que choisir en 2026 ?
| GTM (Custom Pixel) | Elevar | Littledata | Analyzify | |
|---|---|---|---|---|
| Coût | Gratuit (GTM) + hébergement sGTM si server-side (15–60 €/mois) | 150–500 €/mois | 99–299 €/mois | 99–299 €/mois |
| Setup technique | Élevé — nécessite GTM + DataLayer + configuration balises | Faible — clé en main | Faible — plugin Shopify | Moyen |
| Plateformes trackées | Toutes (Meta, Google Ads, GA4, TikTok, LinkedIn, Klaviyo…) | Meta, Google Ads, GA4, Klaviyo, Snap, TikTok | GA4, Google Ads, Meta, Klaviyo | GA4, Meta, Google Ads |
| DataLayer e-commerce | Manuel (ou enrichi via code ou plugin) | ✅ Automatique + enrichi | ✅ Automatique | ✅ Automatique |
| Server-side tracking | ✅ Via Stape (config manuelle) | ✅ Intégré | ✅ Intégré | ⚠️ Partiel |
| Paiements alternatifs (Shop Pay, PayPal) | ⚠️ Configuration spécifique requise | ✅ Natif | ✅ Natif | ⚠️ Partiel |
Tracking e-commerce GA4 complet sur Shopify
- purchase :
transaction_idest unique (ID de commande Shopify),valuecorrespond au montant TTC,currencycorrect - Pas de doublons : l'événement
purchasene se déclenche qu'une seule fois par commande. Vérifiez dans GA4 → Explorations → par Transaction ID - Pas de double-fire avec apps natives : désactivez l'intégration native Shopify Google/Meta si vous trackez via GTM — sinon chaque événement est envoyé deux fois
- Bogus Gateway testé : une commande de test a été passée et le push
purchases'est bien déclenché avec les bonnes données - item_category renseigné : type de produit Shopify mappé dans le DataLayer pour les rapports e-commerce GA4
- GA4 Enhanced Measurement : désactivez "Achat" dans Enhanced Measurement de GA4 si vous envoyez manuellement l'événement purchase — sinon double comptage possible
- Consentement Custom Pixel vérifié : paramètre Privacy & Consent du pixel configuré selon votre stratégie RGPD
Si vous avez besoin d'aller plus loin — récupérer les conversions bloquées par les adblockers et iOS 14 — l'étape suivante est le server-side tracking Shopify. GTM client-side et server-side coexistent sur la même boutique.
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
dataLayer pour voir les pushes, Shopify Pixel Helper pour vérifier les Customer Events, et Bogus Gateway pour simuler une commande complète sans paiement réel.checkout_completed apparaît. Vérifiez aussi l'absence de double-fire avec les apps natives Shopify Google/Meta.denied avant le chargement de GTM (exemple dans l'étape 3). Configurez votre CMP avec l'intégration Shopify dédiée pour la mise à jour des paramètres après le choix de l'utilisateur. Vérifiez que gcs=G100 apparaît dans les requêtes réseau en cas de refus. Guide complet : Consent Mode v2 sur Shopify →