GuideInfrastructure~25 min

Google Tag Manager

Guide complet : Web Container (client-side) et Server Container (server-side). Import des containers pre-configures, verification des valeurs, publication, architecture tags, consent, GA4 transport, destinations CAPI, Enhanced Conversions.

Connectors0/3
Google Tag Manager
GTM Web Container ID
tagmanager.google.com — ex : GTM-XXXXXXX
GTM Server Container ID
tagmanager.google.com — ex : GTM-XXXXXXX
Server Container URL
Addingwell > Server > Custom Domain — ex : https://tags.domain.com
Credentials requis0/7
GA4 Measurement IDServer Container URLCookiebot CBIDMeta Pixel IDMeta Access TokenGoogle Ads Conv. IDGoogle Ads Conv. Label

Remplir dans les guides correspondants (section Connectors en haut de chaque guide).

1Role / Objectif

GTM est le hub central du tracking. Il recoit les events du DataLayer (injecte par Addingwell), gere le consent (Cookiebot CMP), conditionne les tags marketing, et route les hits vers le server container (sGTM) via un custom domain first-party.

Shopify Store
        ↓
Addingwell (DataLayer + Custom Pixel + GTM injection)
        ↓
┌─────────────────────────────────────────────────┐
│  GTM Web Container (client-side)                │
│  Consent, tags marketing, GA4 transport         │
└─────────────────────────────────────────────────┘
        ↓  GA4 hits via server_container_url
┌─────────────────────────────────────────────────┐
│  GTM Server Container (server-side)             │
│  GA4 Server, Meta CAPI, Google Ads EC, etc.     │
└─────────────────────────────────────────────────┘
ContainerRoleHeberge sur
Web (client-side)Consent, pixels marketing, GA4 config/transport, forwarding sGTMNavigateur (via Addingwell)
Server (server-side)Destinations CAPI, Enhanced Conversions, first-party trackingCustom domain (tags.monstore.com)

Les deux containers sont pre-configures et livres complets. Tous les tags, triggers, variables et templates vendor sont inclus. Les credentials sont interpolees depuis le Connectors au telechargement.

2Architecture Web + Server

Organisation du Web Container

GTM Web Container
├── Consent Initialization
│   └── Cookiebot CMP (defaults Denied)
│
├── GA4 Config / Transport
│   └── GA4 tag → server_container_url → sGTM
│
├── Marketing Tags (attendent consent)
│   ├── Meta Pixel (PageView, ViewContent, AddToCart, Purchase)
│   └── Google Ads Remarketing
│
├── DataLayer Triggers
│   ├── page_view, view_item_list, view_item
│   ├── add_to_cart, remove_from_cart, view_cart
│   └── begin_checkout, purchase
│
└── Variables
    ├── DataLayer Variables (ecommerce.*)
    ├── Consent State Variables
    └── Connectors Variables

Organisation du Server Container

sGTM Server Container
├── Client
│   └── GA4 Client (recoit les hits du Web Container)
│
├── Tags
│   ├── GA4 Server Tag → Google Analytics
│   ├── Meta Conversions API Tag → Meta
│   └── Google Ads Server Conversions Tag → Google Ads
│
├── Triggers
│   └── Bases sur event_name GA4 (purchase, page_view, etc.)
│
└── Variables
    ├── Event Data Variables (transaction_id, value, etc.)
    └── User Data Variables (email, phone — hashees)

Flux complet Web → Server

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 tag a un trigger DataLayer specifique
  • Les tags marketing sont conditionnes au consent
  • GA4 sert de transport vers le sGTM via le custom domain first-party
  • Aucun tag ne fire sans trigger explicite
  • Client-side et server-side utilisent le meme event_id pour la deduplication
Web Container — Client-Side

3GTM Web Container

Procedure d'import

Import container Web
1
Telecharger le container Web ci-dessous
2
GTM Web → Admin → Import Container
3
Workspace : Default
4
Mode : Merge → Overwrite conflicting tags, triggers, and variables
0/8 variables

Contenu du container

17 tagsCookiebot CMP, GA4 Config + Transport Addingwell, Conversion Linker, Google Ads Remarketing, etc.
18 triggersEvents e-commerce (page_view, view_item, add_to_cart, begin_checkout, purchase) + consent updates
32 variablesConstantes Connectors (GA4 ID, Server URL, CBID) + DataLayer, Event Data, User Data variables
3 templatesCookiebot CMP, Facebook Pixel, Event ID

DataLayer & Triggers

Le DataLayer est alimente par Addingwell (pas par le theme). Les events arrivent automatiquement dans GTM.

Event DataLayerTrigger GTMTags associes
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

Consent Mode v2

1. Consent Initialization
   └── Cookiebot → defaults Denied
       (ad_storage, analytics_storage, ad_user_data, ad_personalization)

2. Utilisateur accepte/refuse
   └── Cookiebot → consent_update

3. Tags conditionnes
   └── Built-in Consent checks avant chaque tag fire
TagConsent 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 utilise le Advanced Consent Mode : meme sans consent, il envoie des pings anonymises (sans cookies). Les tags marketing sont strictement bloques sans consent.

GA4 Config / Transport

Le tag GA4 Config initialise GA4 et configure le transport des hits vers le server container (sGTM) via le custom domain.

ParametreValeurRole
Measurement IDG-XXXXXXXXXXIdentifiant GA4
server_container_urlhttps://tags.monstore.comCustom domain sGTM (first-party)
send_page_viewfalseDesactive — gere par trigger page_view
DataLayer event (ex: purchase)
        ↓
GA4 Event Tag (purchase)
        ↓
GA4 Config (server_container_url)
        ↓
https://tags.monstore.com (sGTM)
        ↓
Destinations server-side

server_container_url

Le server_container_url route les hits GA4 vers le sGTM au lieu de google-analytics.com. C'est ce qui permet le bypass adblockers et le first-party tracking.

Tags Marketing Client-Side

PlateformeTagEvents
MetaMeta PixelPageView, ViewContent, AddToCart, InitiateCheckout, Purchase
Google AdsRemarketingPage view + audiences
  • Client-side : enrichit les signaux first-party (cookies _fbp, _fbc, ttclid, etc.)
  • Server-side (sGTM) : envoie les conversions via API (resilient, deduplication)
  • La deduplication event_id / transaction_id evite les doubles
  • Les deux canaux se completent pour maximiser le signal

Rappel — Consent Mode

Le Consent Mode v2 (tous les defaults a Denied) est gere par le tag Cookiebot CMP dans GTM. Ce tag charge la banniere, definit les defaults, envoie les updates de consent, et declenche les triggers conditionnels.

Server Container — Server-Side

4GTM Server Container

Procedure d'import

Import container Server
1
Telecharger le container Server ci-dessous
2
GTM Server (via Addingwell) → Admin → Import Container
3
Workspace : Default
4
Mode : Merge → Overwrite conflicting tags, triggers, and variables
0/7 variables

Contenu du container

15 tagsGA4 Server, Meta CAPI (Full server-only), Google Ads EC (10 conversions), Addingwell Monitoring
12 triggersGA4 Client events (page_view, purchase, add_to_cart, view_item, begin_checkout, etc.)
8 variablesEvent Data (items, value, currency, event_id, fbc, gclid) + Conversion ID constante
4 templatesMeta CAPI by Addingwell, Addingwell Monitoring, URL Builder, Facebook CAPI

Flux de routing sGTM

GA4 Client (recoit les requetes transport Addingwell)
├── GA4 Server → Forward vers GA4
├── META – CAPI → Conversion API (Full server-only)
│   └── fbp/fbc cookies 1P, event_id, user_data
├── GADS – Conv (x10) → Enhanced Conversions
│   └── purchase, add_to_cart, begin_checkout, view_item, etc.
├── Addingwell Monitoring → Logs & analytics
└── Enrichissement auto :
    • User data via GA4 Event Settings Variable
    • event_id pour deduplication Meta
    • Consent Mode v2 signaux

Custom Domain First-Party

  • Les hits partent vers tags.monstore.com au lieu de google-analytics.com
  • Les adblockers ne bloquent pas les requetes first-party
  • Les cookies sont first-party (pas affectes par ITP)
  • Meilleure attribution et duree de vie des cookies
DNS
  tags.monstore.com → CNAME → sGTM hosting

GTM Web
  GA4 Config → server_container_url = https://tags.monstore.com

Resultat
  Tous les hits GA4 transitent par le custom domain

SSL obligatoire

Le custom domain doit etre en HTTPS. Le certificat SSL est gere automatiquement par le provider sGTM (Addingwell, Stape, etc.).

Destinations Server-Side

DestinationTag sGTMAPIEvents
MetaMeta Conversions APIgraph.facebook.comPageView, ViewContent, AddToCart, Purchase
Google AdsGoogle Ads Conversionsgoogleads.googleapis.compurchase (Conversion Action)

Deduplication

PlateformeCle de deduplication
Metaevent_id (identique client + serveur)
Google Adstransaction_id / order_id

Templates Addingwell

Les templates Addingwell (Meta CAPI, Google Ads Conversions) enrichissent automatiquement les events avec user_data, cookies et parametres URL. Pas de configuration manuelle des variables.

Container cle en main : connecteurs server-side, routage first-party et credentials destinations (Pixel IDs, Access Tokens) sont pre-remplis via Connectors. Meta fonctionne en Full CAPI (pas de pixel browser).

Configuration & Publication

5Verifier les valeurs

Toutes les valeurs sont pre-remplies dans les containers importes. Ouvrir chaque variable/tag dans GTM et verifier que la valeur correspond.

Google Tag ManagerGTM Web — 3 constantes
Google Analytics
GA4 Measurement ID
Measurement IDG-XXXXXXX
Server Container URL
Container URLhttps://tags.ma-boutique.com
Cookiebot CBID
CBIDxxxxxxxx-xxxx-...
GTM Server — credentials destinations
Meta
Meta CAPI
Pixel ID123456789
Access TokenEAAG...
Google Ads
Google Ads
Conversion IDAW-XXXXXXXXX
Conv. LabelAbCdEf...

Procedure : GTM → Variables (Web) ou Tags (Server) → ouvrir l'element → verifier la valeur Connectors. Les variables DataLayer (DLV - ecommerce - *) se remplissent automatiquement via Addingwell.

6Desactiver les destinations non utilisees

Si certaines destinations ne sont pas utilisees, mettre en pause les tags (ne pas supprimer).

Destination absente
Tag Web a pauser
Tag Server a pauser
Meta
Pas de Meta Ads
META - Pixel - All Events
META - CAPI - All Events
Google Ads
Pas de Google Ads
GADS - Remarketing - All Pages
GADS - Conv - purchase

Procedure : GTM → Tags → ouvrir le tag → menu ... → Pause → sauvegarder.

7Publier les containers

Une fois les valeurs verifiees et les destinations inutiles pausees :

Google Tag ManagerGTM Web
1Submit
2Nommer la version
3Publier
GTM Server
1Submit
2Nommer la version
3Publier

Attention avant de publier

Ne pas publier si des valeurs semblent incorrectes ou si des placeholders sont encore visibles dans les variables ou les tags. Retourner au Connectors pour corriger.

Reference & Verification

8Tags Reference

Enhanced Conversions

Les Enhanced Conversions ameliorent le matching utilisateur en envoyant des donnees hashees (SHA-256) aux plateformes.

DonneeSourceHashage
EmailDataLayer (purchase)SHA-256 automatique
PhoneDataLayer (purchase)SHA-256 automatique
First NameDataLayer (purchase)SHA-256 automatique
Last NameDataLayer (purchase)SHA-256 automatique
AddressDataLayer (purchase)SHA-256 automatique
Shopify Checkout (purchase)
        ↓
DataLayer (user_data en clair)
        ↓
GTM Web → GA4 transport → sGTM
        ↓
Templates sGTM hashent automatiquement
        ↓
Plateformes recoivent les donnees hashees

Consent obligatoire

Les donnees utilisateur ne sont jamais envoyees sans consent marketing. Le Consent Mode v2 bloque la transmission si ad_user_data = Denied.

Variables DataLayer (Web Container)

VariableDataLayer PathUsage
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 (array)

Credentials necessaires (Server Container)

DestinationCredentials
Meta CAPIPixel ID + Access Token
Google AdsConversion ID + Conversion Label
GA4Measurement ID (herite du Web)

Convention de nommage

Les variables DataLayer utilisent le prefixe DLV -. Les constantes de configuration sont nommees par leur role. Les triggers utilisent le prefixe CE - (Custom Event).

9Verification

GTM Preview Mode (Web Container)

  1. 1Ouvrir GTM → Preview (bouton en haut a droite)
  2. 2Entrer l'URL du store Shopify
  3. 3Naviguer sur le store dans l'onglet de preview
  4. 4Verifier les tags fires dans le panneau de debug
VerificationAttendu
Consent InitializationCookiebot CMP fire en premier
Avant consentSeuls Cookiebot et GA4 Config fires
Apres consent marketingMeta, Google Ads fires
Event purchaseToutes les variables ecommerce remplies
server_container_urlLes hits GA4 partent vers le custom domain

GTM Preview Mode (Server Container)

  1. 1Ouvrir GTM Server → Preview Mode
  2. 2Naviguer sur le store et declencher des events
  3. 3Verifier que le GA4 Client recoit les hits
  4. 4Verifier que chaque tag server fire correctement

Verifier les destinations

DestinationOutil de verification
Meta CAPIMeta Events Manager → Test Events
Google AdsGoogle Ads → Conversions → Diagnostics
GA4GA4 DebugView (Realtime)

CDN Proxy et Preview

Si le CDN proxy Addingwell est actif, le Preview Mode peut ne pas fonctionner sur le custom domain. Tester en desactivant temporairement le proxy ou en utilisant l'URL directe GTM.

Phase 2 : Fondations GTM + Consent

Fondations GTM + Consent0/7
Test pre-consent (navigation privee)
1Ouvrir le site en navigation privee
2Cliquer "Tout refuser" dans la banniere Cookiebot
3GTM Preview : verifier que seuls les tags Necessary se declenchent
4Network : aucune requete vers GA4, Meta, Google Ads
Test post-consent
1Ouvrir le site en navigation privee
2Cliquer "Tout accepter" dans la banniere
3GTM Preview : tags analytics et marketing doivent se declencher
4GA4 DebugView : events visibles en temps reel

10Troubleshooting

Tags ne fires pas (Web)

Verifier :

  1. 1GTM injecte par Addingwell (pas de snippet manuel en conflit)
  2. 2Container ID correct
  3. 3Events DataLayer presents (console → dataLayer)
  4. 4Triggers correctement mappes aux events
Tags marketing fires sans consent

Verifier :

  • Tag Cookiebot en Consent Initialization (pas All Pages)
  • Consent built-in configure sur chaque tag marketing
  • Pas de tag avec "No additional consent required"
sGTM ne recoit pas de hits

Verifier :

  1. 1server_container_url correct dans GTM Web (tag GA4 Config)
  2. 2Custom domain fonctionnel (curl https://tags.monstore.com/healthz)
  3. 3Container server publie
  4. 4GA4 Client configure dans le sGTM
Meta CAPI retourne des erreurs

Verifier :

  • Access Token valide et non expire
  • Pixel ID correct
  • Permissions du token (ads_management, ads_read)
  • Format des events (event_name, user_data)
Conversions dupliquees

Verifier :

  • event_id identique entre client-side et server-side
  • Pas de double tag purchase dans le GTM Web
  • Pas de conversion importee manuellement en parallele
  • Deduplication activee cote plateforme
Enhanced Conversions faible match rate

Verifier :

  • user_data present dans le DataLayer (email, phone)
  • Donnees non vides au moment du purchase
  • Hashage automatique actif dans les templates
  • Consent ad_user_data = Granted

Checklist complete

GTM — Import, Config & Publish0/9