Academy · TrackingGoogle Tag Manager

Google Tag Manager

Guide complet des conteneurs GTM Web (côté client) et serveur (côté serveur) : import des conteneurs préconfigurés, contrôle des valeurs, publication, architecture des balises, consentement, transport GA4, destinations CAPI et conversions améliorées.

Série Tracking · Infrastructure · environ 25 min de lecture.

Identifiants nécessaires pour ce guide :

IdentifiantVariable GTMOù le trouver
ID du conteneur GTM Webtagmanager.google.com (p. ex. GTM-XXXXXXX)
ID du conteneur GTM serveurtagmanager.google.com (p. ex. GTM-XXXXXXX)
URL du conteneur serveurConst - Server - Container URLAddingwell > Server > Custom Domain (p. ex. https://tags.domain.com)

Les conteneurs à importer attendent ces valeurs : ID de mesure GA4, URL du conteneur serveur, CBID Cookiebot, ID du pixel Meta, Jeton d'accès Meta, ID de conv. Google Ads, Libellé de conv. Google Ads. Notez-les avant de commencer.

Rôle et objectif

GTM est la pièce centrale du tracking. Il reçoit les événements du DataLayer (injecté par Addingwell), gère le consentement (Cookiebot CMP), bloque les balises marketing tant que le visiteur n'a pas donné son accord et achemine les hits vers le conteneur serveur (sGTM) par un domaine personnalisé first-party.

Boutique Shopify
        ↓
Addingwell (DataLayer + pixel personnalisé + injection GTM)
        ↓
┌─────────────────────────────────────────────────┐
│  Conteneur GTM Web (côté client)                │
│  Consentement, balises marketing, transport GA4 │
└─────────────────────────────────────────────────┘
        ↓  hits GA4 via server_container_url
┌─────────────────────────────────────────────────┐
│  Conteneur GTM serveur (côté serveur)           │
│  GA4 Server, Meta CAPI, Google Ads EC, etc.     │
└─────────────────────────────────────────────────┘
ConteneurRôleHébergement
Web (côté client)Consentement, pixels marketing, configuration et transport GA4, relais vers le sGTMNavigateur (via Addingwell)
Serveur (côté serveur)Destinations CAPI, conversions améliorées, tracking first-partyDomaine personnalisé (tags.ma-boutique.com)

Les deux conteneurs sont livrés complets et préconfigurés : balises, déclencheurs, variables et modèles d'éditeurs, tout y est. Il reste à remplacer leurs valeurs d'exemple par vos identifiants : la liste est sous chaque lien de téléchargement.

Architecture Web + serveur

Organisation du conteneur Web

Conteneur GTM Web
├── Consent Initialization
│   └── Cookiebot CMP (Denied par défaut)
│
├── GA4 Config / Transport
│   └── balise GA4 → server_container_url → sGTM
│
├── Balises marketing (en attente du consentement)
│   ├── Meta Pixel (PageView, ViewContent, AddToCart, Purchase)
│   └── Google Ads Remarketing
│
├── Déclencheurs DataLayer
│   ├── page_view, view_item_list, view_item
│   ├── add_to_cart, remove_from_cart, view_cart
│   └── begin_checkout, purchase
│
└── Variables
    ├── Variables DataLayer (ecommerce.*)
    ├── Variables d'état du consentement
    └── Constantes de vos identifiants

Organisation du conteneur serveur

Conteneur serveur sGTM
├── Client
│   └── GA4 Client (reçoit les hits du conteneur Web)
│
├── Balises
│   ├── GA4 Server Tag → Google Analytics
│   ├── Meta Conversions API Tag → Meta
│   └── Google Ads Server Conversions Tag → Google Ads
│
├── Déclencheurs
│   └── Fondés sur l'event_name GA4 (purchase, page_view, etc.)
│
└── Variables
    ├── Variables Event Data (transaction_id, value, etc.)
    └── Variables User Data (e-mail, téléphone : hachés)

Flux complet Web → serveur

GTM Web → GA4 transport → server_container_url
                                    ↓
                            sGTM Server Container
                                    ↓
                    ┌───────────────┼───────────────┐
                    ↓               ↓               ↓
              GA4 Server       Meta CAPI      Google Ads EC
                    ↓               ↓               ↓
            google-analytics   graph.facebook   googleads.g

Principes

  • Chaque balise a son propre déclencheur DataLayer
  • Les balises marketing dépendent du consentement
  • GA4 sert de transport vers le sGTM, par le domaine personnalisé first-party
  • Aucune balise ne part sans déclencheur explicite
  • Le client et le serveur partagent le même event_id, ce qui permet la déduplication

Conteneur Web (côté client)

Conteneur GTM Web

Procédure d'import

Importer le conteneur Web

  1. Téléchargez le conteneur Web ci-dessous
  2. GTM Web → Administration → Importer un conteneur
  3. Espace de travail : Default
  4. Mode d'import : Fusionner, en écrasant les balises, déclencheurs et variables en conflit

Télécharger le conteneur Web : gtm-workspace.json. Le fichier contient des valeurs d'exemple : remplacez chacune par votre identifiant avant l'import, ou juste après dans GTM.

Valeur d'exempleÀ remplacer par
G-XXXXXXXXXXID de mesure GA4
https://tags.yourdomain.comURL du conteneur serveur
YOUR_COOKIEBOT_CBIDCBID Cookiebot
YOUR_META_PIXEL_IDID du pixel Meta
YOUR_META_ACCESS_TOKENJeton d'accès Meta
YOUR_GOOGLE_ADS_IDID de conversion Google Ads
YOUR_CONVERSION_LABELLibellé de conversion Google Ads
GTM-XXXXXXXXID du conteneur GTM Web

Contenu du conteneur

ÉlémentContenu
17 balisesCookiebot CMP, GA4 Config + Transport Addingwell, Conversion Linker, Google Ads Remarketing, etc.
18 déclencheursÉvénements e-commerce (page_view, view_item, add_to_cart, begin_checkout, purchase) et mises à jour du consentement
32 variablesConstantes de vos identifiants (ID GA4, URL du serveur, CBID), plus les variables DataLayer, Event Data et User Data
3 modèlesCookiebot CMP, Facebook Pixel, Event ID

DataLayer et déclencheurs

C'est Addingwell qui alimente le DataLayer, pas le thème. Les événements arrivent d'eux-mêmes dans GTM.

Événement DataLayerDéclencheur GTMBalises associées
page_viewCE - page_viewGA4, Meta PageView
view_itemCE - view_itemGA4, Meta ViewContent
add_to_cartCE - add_to_cartGA4, Meta AddToCart
begin_checkoutCE - begin_checkoutGA4, Meta InitiateCheckout
purchaseCE - purchaseGA4, Meta Purchase, Google Ads Conversion
1. Consent Initialization
   └── Cookiebot → Denied par défaut
       (ad_storage, analytics_storage, ad_user_data, ad_personalization)

2. Le visiteur accepte ou refuse
   └── Cookiebot → consent_update

3. Balises conditionnées
   └── Vérification intégrée du consentement avant chaque déclenchement
BaliseConsentement requis
Cookiebot CMPAucun (Consent Initialization)
GA4 Configanalytics_storage (Advanced Consent Mode)
Meta Pixelad_storage + ad_user_data
Google Ads Remarketingad_storage + ad_personalization

Advanced Consent Mode

GA4 fonctionne en Advanced Consent Mode (mode Consentement avancé) : même sans consentement, il envoie des pings anonymisés, sans cookies. Les balises marketing, elles, restent strictement bloquées tant que le consentement manque.

GA4 Config / Transport

La balise GA4 Config initialise GA4 et règle l'envoi des hits vers le conteneur serveur (sGTM) par le domaine personnalisé.

ParamètreValeurRôle
ID de mesureG-XXXXXXXXXXIdentifiant GA4
server_container_urlhttps://tags.ma-boutique.comDomaine personnalisé du sGTM (first-party)
send_page_viewfalseDésactivé : c'est le déclencheur page_view qui s'en charge
Événement DataLayer (p. ex. purchase)
        ↓
GA4 Event Tag (purchase)
        ↓
GA4 Config (server_container_url)
        ↓
https://tags.ma-boutique.com (sGTM)
        ↓
Destinations côté serveur

server_container_url

Le paramètre server_container_url envoie les hits GA4 vers le sGTM au lieu de google-analytics.com. C'est lui qui permet de passer outre les bloqueurs de publicité et de faire du tracking first-party.

Balises marketing côté client

PlateformeBaliseÉvénements
MetaMeta PixelPageView, ViewContent, AddToCart, InitiateCheckout, Purchase
Google AdsRemarketingPages vues + audiences
  • Côté client : enrichit les signaux first-party (cookies _fbp, _fbc, ttclid, etc.)
  • Côté serveur (sGTM) : envoie les conversions par API (plus robuste, avec déduplication)
  • La déduplication par event_id / transaction_id évite les doublons
  • Les deux canaux se complètent pour maximiser le signal

Rappel : Consent Mode

Le Consent Mode v2 (toutes les valeurs par défaut à Denied) est piloté par la balise Cookiebot CMP dans GTM. C'est elle qui charge la bannière, pose les valeurs par défaut, transmet les mises à jour du consentement et active les déclencheurs conditionnels.


Conteneur serveur (côté serveur)

Conteneur GTM serveur

Procédure d'import

Importer le conteneur serveur

  1. Téléchargez le conteneur serveur ci-dessous
  2. GTM serveur (via Addingwell) → Administration → Importer un conteneur
  3. Espace de travail : Default
  4. Mode d'import : Fusionner, en écrasant les balises, déclencheurs et variables en conflit

Télécharger le conteneur serveur : sgtm-workspace.json. Le fichier contient des valeurs d'exemple : remplacez chacune par votre identifiant avant l'import, ou juste après dans GTM.

Valeur d'exempleÀ remplacer par
G-XXXXXXXXXXID de mesure GA4
https://tags.yourdomain.comURL du conteneur serveur
YOUR_META_PIXEL_IDID du pixel Meta
YOUR_META_ACCESS_TOKENJeton d'accès Meta
YOUR_GOOGLE_ADS_IDID de conversion Google Ads
YOUR_CONVERSION_LABELLibellé de conversion Google Ads
GTM-YYYYYYYYID du conteneur GTM serveur

Contenu du conteneur

ÉlémentContenu
15 balisesGA4 Server, Meta CAPI (Full server-only), Google Ads EC (10 conversions), Addingwell Monitoring
12 déclencheursÉvénements du client GA4 (page_view, purchase, add_to_cart, view_item, begin_checkout, etc.)
8 variablesEvent Data (items, value, currency, event_id, fbc, gclid) et la constante Conversion ID
4 modèlesMeta CAPI by Addingwell, Addingwell Monitoring, URL Builder, Facebook CAPI

Routage dans le sGTM

GA4 Client (reçoit les requêtes du transport Addingwell)
├── GA4 Server → transfert vers GA4
├── META - CAPI → API Conversions (Full server-only)
│   └── cookies 1P fbp/fbc, event_id, user_data
├── GADS - Conv (x10) → conversions améliorées
│   └── purchase, add_to_cart, begin_checkout, view_item, etc.
├── Addingwell Monitoring → logs et analyses
└── Enrichissement automatique :
    • user data via la GA4 Event Settings Variable
    • event_id pour la déduplication Meta
    • signaux Consent Mode v2

Domaine personnalisé first-party

  • Les hits partent vers tags.ma-boutique.com au lieu de google-analytics.com
  • Les bloqueurs de publicité laissent passer les requêtes first-party
  • Les cookies sont first-party : l'ITP n'y touche pas
  • Une meilleure attribution et des cookies qui durent plus longtemps
DNS
  tags.ma-boutique.com → CNAME → hébergement du sGTM

GTM Web
  GA4 Config → server_container_url = https://tags.ma-boutique.com

Résultat
  Tous les hits GA4 passent par le domaine personnalisé

HTTPS obligatoire

Le domaine personnalisé doit être servi en HTTPS. Le fournisseur du sGTM (Addingwell, Stape, etc.) gère le certificat SSL automatiquement.

Destinations côté serveur

DestinationBalise sGTMAPIÉvénements
MetaMeta Conversions APIgraph.facebook.comPageView, ViewContent, AddToCart, Purchase
Google AdsGoogle Ads Conversionsgoogleads.googleapis.compurchase (action de conversion)

Déduplication

PlateformeClé de déduplication
Metaevent_id (identique côté client et côté serveur)
Google Adstransaction_id / order_id

Modèles Addingwell

Les modèles Addingwell (Meta CAPI, Google Ads Conversions) enrichissent automatiquement les événements avec les user_data, les cookies et les paramètres d'URL. Aucune variable à configurer à la main.

Conteneur clé en main : les connecteurs côté serveur, le routage first-party et les identifiants des destinations (ID de pixel, jetons d'accès) sont des constantes du conteneur, à renseigner avec vos valeurs. Meta tourne en Full CAPI, sans pixel dans le navigateur.


Configuration et publication

Vérifier les valeurs

Chaque valeur d'exemple des conteneurs importés doit maintenant porter votre identifiant. Ouvrez chaque variable ou balise dans GTM et vérifiez que la valeur est la bonne.

GTM Web : 3 constantes

ÉlémentChampFormat attendu
ID de mesure GA4ID de mesureG-XXXXXXX
URL du conteneur serveurURL du conteneurhttps://tags.ma-boutique.com
CBID CookiebotCBIDxxxxxxxx-xxxx-...

GTM serveur : identifiants des destinations

ÉlémentChampFormat attendu
Meta CAPIID du pixel123456789
Meta CAPIJeton d'accèsEAAG...
Google AdsID de conversionAW-XXXXXXXXX
Google AdsLibellé de conv.AbCdEf...

Procédure : GTM → Variables (conteneur Web) ou Balises (conteneur serveur) → ouvrez l'élément → vérifiez que la valeur est la vôtre, et non la valeur d'exemple. Les variables DataLayer (DLV - ecommerce - *) se remplissent d'elles-mêmes grâce à Addingwell.

Désactiver les destinations inutilisées

Si une destination ne vous sert pas, mettez ses balises en pause : ne les supprimez pas.

Destination absenteBalise Web à suspendreBalise serveur à suspendre
Pas de Meta AdsMETA - Pixel - All EventsMETA - CAPI - All Events
Pas de Google AdsGADS - Remarketing - All PagesGADS - Conv - purchase

Procédure : GTM → Balises → ouvrez la balise → menu ... → « Pause » (suspendre) → enregistrez.

Publier les conteneurs

Une fois les valeurs vérifiées et les destinations inutiles mises en pause :

Avant de publier

Ne publiez pas si une valeur vous semble fausse, ou si des valeurs d'exemple (placeholders) apparaissent encore dans les variables ou les balises. Remplacez-les d'abord par vos identifiants.


Référence et vérification

Référence des balises

Conversions améliorées (Enhanced Conversions)

Les conversions améliorées envoient aux plateformes des données hachées (SHA-256), ce qui améliore la correspondance avec les utilisateurs.

DonnéeSourceHachage
E-mailDataLayer (purchase)SHA-256 automatique
TéléphoneDataLayer (purchase)SHA-256 automatique
PrénomDataLayer (purchase)SHA-256 automatique
NomDataLayer (purchase)SHA-256 automatique
AdresseDataLayer (purchase)SHA-256 automatique
Tunnel de paiement Shopify (purchase)
        ↓
DataLayer (user_data en clair)
        ↓
GTM Web → transport GA4 → sGTM
        ↓
Les modèles sGTM hachent automatiquement
        ↓
Les plateformes reçoivent les données hachées

Consentement obligatoire

Les données utilisateur ne partent jamais sans consentement marketing. Le Consent Mode v2 bloque leur transmission si ad_user_data = Denied.

Variables DataLayer (conteneur Web)

VariableChemin DataLayerUtilisation
DLV - ecommerce.currencyecommerce.currencyDevise (EUR, USD, etc.)
DLV - ecommerce.valueecommerce.valueMontant de la transaction
DLV - ecommerce.transaction_idecommerce.transaction_idID unique de la commande
DLV - ecommerce.itemsecommerce.itemsProduits (tableau)

Identifiants nécessaires (conteneur serveur)

DestinationIdentifiants
Meta CAPIID du pixel + jeton d'accès
Google AdsID de conversion + libellé de conversion
GA4ID de mesure (repris du conteneur Web)

Convention de nommage

Les variables DataLayer portent le préfixe DLV -. Les constantes de configuration sont nommées d'après leur rôle. Les déclencheurs portent le préfixe CE - (Custom Event, soit événement personnalisé).

Vérification

Mode Aperçu de GTM (conteneur Web)

  1. Ouvrez GTM → Prévisualiser (bouton en haut à droite)
  2. Saisissez l'URL de la boutique Shopify
  3. Naviguez sur la boutique dans l'onglet d'aperçu
  4. Regardez dans le panneau de débogage quelles balises se déclenchent
ContrôleRésultat attendu
Consent InitializationCookiebot CMP se déclenche en premier
Avant consentementSeules les balises Cookiebot et GA4 Config se déclenchent
Après consentement marketingMeta et Google Ads se déclenchent
Événement purchaseToutes les variables ecommerce du dataLayer sont remplies
server_container_urlLes hits GA4 partent vers le domaine personnalisé

Mode Aperçu de GTM (conteneur serveur)

  1. Ouvrez GTM serveur → mode Aperçu
  2. Naviguez sur la boutique et déclenchez quelques événements
  3. Vérifiez que le client GA4 reçoit les hits
  4. Vérifiez que chaque balise serveur se déclenche correctement

Vérifier les destinations

DestinationOutil de vérification
Meta CAPIGestionnaire d'événements Meta → Tester les événements
Google AdsGoogle Ads → Conversions → Diagnostics
GA4DebugView de GA4 (temps réel)

Proxy CDN et mode Aperçu

Quand le proxy CDN d'Addingwell est actif, le mode Aperçu peut ne pas fonctionner sur le domaine personnalisé. Testez en désactivant le proxy le temps du test, ou passez par l'URL GTM directe.

Phase 2 : socle GTM et consentement

Socle GTM et consentement

  • Conteneur GTM Web chargé par Addingwell (et non par un snippet direct)
  • Balise Cookiebot CMP active dans GTM, avec Denied par défaut
  • Cookiebot CMP se déclenche sur Consent Initialization (avant les autres balises)
  • Option « Tout refuser » présente dans la bannière
  • Passerelle Cookiebot → Shopify Privacy API installée (cookie-consent_boostecom.liquid)
  • Pixel personnalisé DataLayer Monitor actif dans Événements clients (?awdebug=1 pour déboguer)
  • Régions Shopify : bannière native désactivée, bannière personnalisée pour les régions EEE et Royaume-Uni

Test avant consentement (navigation privée)

  1. Ouvrez le site en navigation privée
  2. Cliquez sur « Tout refuser » dans la bannière Cookiebot
  3. Aperçu GTM : vérifiez que seules les balises nécessaires (Necessary) se déclenchent
  4. Onglet Réseau : aucune requête vers GA4, Meta ou Google Ads

Test après consentement

  1. Ouvrez le site en navigation privée
  2. Cliquez sur « Tout accepter » dans la bannière
  3. Aperçu GTM : les balises analytics et marketing doivent se déclencher
  4. DebugView de GA4 : les événements apparaissent en temps réel

Dépannage

Checklist complète

GTM : import, configuration et publication

  • Conteneur GTM Web importé
  • Conteneur GTM serveur importé
  • Constantes vérifiées (ID GA4, URL du serveur, CBID)
  • Identifiants côté serveur vérifiés (Meta CAPI, Google Ads)
  • Destinations inutilisées mises en pause
  • Conteneur GTM Web publié
  • Conteneur GTM serveur publié
  • Mode Aperçu GTM Web : les balises se déclenchent correctement
  • Mode Aperçu GTM serveur : destinations OK

Et ensuite