Google Analytics 4
Guide technique pour mesurer le trafic et les conversions e-commerce : architecture côté serveur, couche de transport, débogage, attribution.
1Rôle et objectif
Dans notre dispositif de tracking, GA4 joue deux rôles :
Analytics
- Mesure du trafic et du comportement
- Tunnel e-commerce complet
- Attribution des conversions
- Rapports et analyses
Transport technique
- Achemine les événements jusqu'au sGTM
- Protocole de collecte standard
- Seul moyen fiable d'atteindre le sGTM
- Contourne les bloqueurs de publicité grâce au domaine personnalisé
GA4 est à la fois l'outil d'analytics et le véhicule technique qui alimente toutes les destinations côté serveur (Meta CAPI, Google Ads, etc.).
2Architecture côté serveur
Le flux complet
Addingwell DataLayer
|
GTM Web Container
|
GA4 Config Tag (transport_url = sGTM)
|
Server-Side GTM (domaine personnalisé)
|
+-- GA4 Server Tag --> Google Analytics
+-- Meta CAPI Tag --> Meta Conversions API
+-- Google Ads Tag --> Enhanced Conversions
+-- Autres destinations côté serveurPourquoi côté serveur ?
- Contourne les bloqueurs de publicité (domaine personnalisé first-party)
- Données plus fiables (aucune perte côté client)
- Consent Mode géré côté serveur
- Un point de collecte unique pour toutes les destinations
- Cookie restore contre l'ITP, via Addingwell
3Transport des données
Dans notre architecture, GA4 sert de couche de transport entre le GTM Web et le sGTM. Les événements GA4 transportent toutes les données dont les destinations ont besoin.
server_container_url
Le champ server_container_url de la balise GA4 Config envoie les hits vers le sGTM au lieu de google-analytics.com.
Sans server_container_url : navigateur --> google-analytics.com (bloqué par les bloqueurs de publicité) Avec server_container_url : navigateur --> tags.ma-boutique.com --> sGTM --> GA4 + destinations
Point critique
Sans server_container_url, les hits GA4 partent directement chez Google et aucune destination côté serveur ne fonctionne (Meta CAPI, conversions améliorées Google Ads, etc.).
Le parcours des données GA4
GA4 est branché automatiquement sur le transport côté serveur. La balise GA4 Config du GTM Web envoie les hits vers le domaine personnalisé du sGTM (first-party), qui les reçoit et les redistribue.
GTM Web (client) --> GA4 Config + Transport tag --> Requête HTTP vers le domaine personnalisé du sGTM (first-party) sGTM (serveur) --> GA4 Client (reçoit la requête) +-- GA4 Server tag --> Google Analytics 4 +-- META - CAPI - All Events --> Meta (Full CAPI, server-only) +-- GADS - Conv - purchase --> Google Ads Enhanced Conversions +-- (bientôt) TikTok Events API, Snap CAPI Enrichissement côté serveur : - Hachage SHA-256 automatique (e-mail, téléphone, adresse) - Cookies d'attribution (fbp, fbc, gclid, wbraid, gbraid) - event_id pour la déduplication - Signaux Consent Mode v2 transmis
Ce que GA4 reçoit
- Tous les événements e-commerce du DataLayer (page_view, view_item, add_to_cart, purchase, etc.)
- Les paramètres enrichis (items[], value, currency, transaction_id)
- Les signaux Consent Mode v2 (analytics_storage, ad_storage)
- Les cookies d'attribution first-party (fbp, fbc, gclid), grâce au cookie restore
Ce que GA4 ne reçoit pas directement
- Les données personnelles en clair (hachées uniquement côté serveur)
- Les événements destinés aux autres plateformes (Meta, Google Ads) : le sGTM les traite en parallèle
- Les événements sans consentement analytics (seulement les pings anonymisés de l'Advanced Consent Mode)
GA4 n'a besoin d'aucune configuration supplémentaire pour servir de transport. L'ID de mesure et le server_container_url saisis dans le bloc Connecteurs suffisent : les conteneurs GTM préconfigurés font le reste.
4Événements e-commerce
Événements suivis dans GA4
| Événement GA4 | Étape du tunnel | Paramètres clés |
|---|---|---|
| page_view | Toutes les pages | page_location, page_title |
| view_item_list | Découverte | item_list_name, items[] |
| select_item | Découverte | item_list_name, items[] |
| view_item | Considération | currency, value, items[] |
| add_to_cart | Considération | currency, value, items[] |
| remove_from_cart | Considération | currency, value, items[] |
| view_cart | Considération | currency, value, items[] |
| begin_checkout | Conversion | currency, value, items[] |
| add_shipping_info | Conversion | shipping_tier, currency, value |
| add_payment_info | Conversion | payment_type, currency, value |
| purchase | Conversion | transaction_id, currency, value, items[] |
Paramètres enrichis
Chaque événement e-commerce contient le tableau items[] complet : item_id, item_name, price, quantity, item_category et item_variant.
Balise Config (GTM Web)
La balise GA4 Config du conteneur GTM Web règle la collecte et le transport vers le sGTM.
| Paramètre | Valeur | Rôle |
|---|---|---|
| ID de mesure | G-XXXXXXXXXX | Identifie la propriété GA4 |
| server_container_url | https://tags.ma-boutique.com | Envoie les hits vers le sGTM |
| Consentement | analytics_storage | Soumis au consentement Cookiebot |
| Déclencheur | All Pages (toutes les pages) | Initialisée sur chaque page |
Balise GA4 Transport
Une seconde balise GA4 Event sert de transport aux événements e-commerce : elle relaie les événements du DataLayer jusqu'au conteneur serveur (sGTM).
Les deux balises (Config et Transport) sont incluses dans le conteneur GTM Web préconfiguré. Les identifiants (ID de mesure, server_container_url) y sont injectés depuis le bloc Connecteurs.
Balise GA4 Server (sGTM)
Dans le sGTM, la balise GA4 Server reçoit les événements et les transmet à la propriété Google Analytics.
GA4 Client (sGTM) reçoit le hit
|
GA4 Server Tag --> transmis à Google Analytics
|
Autres balises (Meta, Google Ads) --> lisent les mêmes événements
|
Chaque destination reçoit les données enrichies- Le client GA4 analyse les hits entrants
- La balise GA4 Server les transmet à Google Analytics
- Les autres balises (Meta CAPI, Google Ads) se déclenchent sur les mêmes événements
- Aucun double envoi : un seul hit GA4 alimente toutes les destinations
Conversions et attribution
Dans GA4, marquez comme conversions (« événements clés » dans l'interface de GA4) les événements qui comptent :
| Événement | Conversion | Valeur |
|---|---|---|
| purchase | Oui | Chiffre d'affaires de la transaction |
| begin_checkout | Facultatif | Valeur du panier |
| add_to_cart | Non | - |
| page_view | Non | - |
Modèle d'attribution
- Par défaut, GA4 utilise l'attribution basée sur les données (Data-Driven Attribution)
- Les conversions modélisées compensent les pertes de données (consentement, bloqueurs de publicité)
- L'Advanced Consent Mode envoie des pings anonymisés, même sans consentement analytics
- Les conversions Google Ads importées depuis GA4 profitent de cette modélisation
5Configuration
Prérequis
- Propriété GA4 créée dans Google Analytics
- ID de mesure (G-XXXXXXXXXX)
- Flux Web configuré
- Domaine personnalisé du sGTM configuré (server_container_url)
Bloc Connecteurs
Les identifiants GA4 se renseignent dans le bloc Connecteurs :
| Champ | Exemple | Utilisation |
|---|---|---|
| ga4_measurement_id | G-XXXXXXXXXX | Balise GA4 Config du GTM Web |
| server_container_url | https://tags.ma-boutique.com | Transport vers le sGTM |
Ces valeurs sont injectées automatiquement dans les conteneurs GTM au moment du téléchargement. Rien à configurer à la main dans GTM.
DebugView et Temps réel
DebugView
- 1Administration GA4 → DebugView
- 2Activez le mode débogage (aperçu GTM ou debug_mode=true)
- 3Les événements apparaissent en temps réel, avec tous leurs paramètres
- 4Vérifiez les paramètres ecommerce (items[], value, currency)
- 5Vérifiez que les événements arrivent bien (aucun trou dans le tunnel)
Temps réel
- GA4 → Rapports → Temps réel
- Affiche les événements des 30 dernières minutes
- Pratique pour vérifier rapidement un changement
- N'affiche pas le détail des paramètres (passez par DebugView pour cela)
Latence
Les rapports GA4 standards ont 24 à 48 h de retard. Pour déboguer, utilisez toujours DebugView ou le rapport Temps réel.
6Vérification
Vérifier le transport vers le sGTM
- 1Ouvrez l'onglet Réseau (Network) du navigateur
- 2Filtrez sur le domaine personnalisé (tags.ma-boutique.com)
- 3Les requêtes /collect doivent pointer vers le sGTM
- 4Aucune requête directe vers google-analytics.com
Vérifier les événements GA4
- 1GA4 → DebugView (activez le mode débogage)
- 2Naviguez sur la boutique : accueil → collection → produit → panier → paiement
- 3Vérifiez chaque événement du tunnel
- 4Vérifiez les paramètres ecommerce (items[], value, currency)
- 5Passez un achat test → vérifiez que purchase porte bien un transaction_id
Vérifier le consentement
- Avant consentement : uniquement des pings anonymisés (Advanced Consent Mode)
- Après consentement analytics : événements complets, avec les cookies GA4
- Vérifiez dans le mode Aperçu de GTM que le consentement conditionne bien les balises
Contrôles de GA4 en tant que destination (phase 3)
Points de contrôle propres à GA4 en tant que destination du sGTM :
- Événements visibles dans le rapport Temps réel de GA4 après consentement
- Requêtes envoyées par le domaine personnalisé du sGTM (et non par googletagmanager.com)
- Balise GA4 Server active dans le sGTM, qui transmet bien à Google Analytics
- Vérifiez dans GA4 → Administration → DebugView que les événements arrivent bien du serveur
7Dépannage
Vérifier :
- 1ID de mesure correct dans le bloc Connecteurs
- 2Balise GA4 Config présente dans GTM Web
- 3GTM injecté par Addingwell (GTM bien présent)
- 4server_container_url pointe vers le bon sGTM
Vérifier :
- server_container_url configuré dans la balise GA4 Config
- Le DNS du domaine personnalisé pointe vers le sGTM
- sGTM en service (pas à l'arrêt)
- Client GA4 actif dans le sGTM
Vérifier :
- Pixel personnalisé Addingwell actif dans Shopify
- Événement purchase présent dans le DataLayer (console)
- Balise GA4 Event déclenchée sur l'événement purchase dans GTM
- transaction_id présent et unique
Vérifier :
- ID de mesure incorrect dans la variable GTM
- Mode débogage inactif (activez-le via l'aperçu GTM ou debug_mode=true)
- Consentement refusé : acceptez-le et rechargez la page
- Vérifiez que la balise GA4 Config se déclenche dans l'aperçu GTM
Vérifier :
- Vérifiez que server_container_url utilise un domaine personnalisé first-party
- Le domaine personnalisé du sGTM doit se trouver sur le même domaine que la boutique
- Vérifiez dans l'onglet Réseau : les requêtes doivent partir vers tags.ma-boutique.com, pas vers google-analytics.com
- Sans domaine personnalisé, toutes les destinations côté serveur sont touchées
Vérifier :
- Vérifiez que l'event_id (transaction_id) est unique pour chaque commande
- Supprimez les apps de tracking natives (Facebook & Instagram, Google & YouTube)
- Vérifiez qu'aucune balise GA4 n'est en double dans GTM Web
- Un seul conteneur GTM doit être actif sur la boutique
8Checklist GA4
Vérifiez la couche que vous venez d'installer
Scannez la boutique : 41 contrôles lisent ce qu'elle envoie maintenant à GA4, Meta et Google Ads.