GA4 pour l'e-commerce marocain en 2026 — setup complet.
Méthode d'atelier pour configurer Google Analytics 4 sur un e-commerce marocain : data layer enhanced ecommerce, export BigQuery désormais gratuit, redirection CMI sans casse de tracking, Consent Mode v2, attribution data-driven. Rodée sur 45 marchands en 2025-2026.
Pourquoi GA4 par défaut ne tient pas pour un marchand marocain
Universal Analytics est mort en juillet 2023, GA4 a pris la suite, et la plupart des e-commerces marocains se sont contentés du tag GA4 basique poussé via Google Tag Manager : un script collé, un compte créé, une vue Acquisition consultée une fois par semaine. Cette config par défaut fonctionne — au sens où elle remonte des sessions et des conversions — mais elle masque trois choses qui comptent pour un opérateur à Casablanca, Rabat ou Tanger. Premièrement, la devise. GA4 utilise par défaut la devise du compte, généralement USD. Si vous n'envoyez pas explicitement currency: 'MAD' dans chaque événement ecommerce, les revenus remontent convertis à un taux figé, et tous vos rapports ROAS sont mathématiquement faux. Deuxièmement, le parcours d'achat marocain spécifique. Sur 78 % du trafic mobile, le consommateur découvre via Meta ou TikTok, recherche la marque sur Google deux jours plus tard depuis un desktop bureau, et finalise via CMI ou paiement à la livraison. Sans data layer enhanced ecommerce, ce parcours apparaît comme deux visiteurs distincts, et le canal de découverte ne reçoit aucun crédit. Troisièmement, le sampling. GA4 échantillonne dès qu'une exploration dépasse 10 millions d'events, ce qui arrive vite sur un compte ecommerce moyen — 30 000 visiteurs/mois suffisent. À ce niveau, vos chiffres ne sont plus exacts, ils sont extrapolés. Sur les 45 marchands marocains que la Webotic a auditès en 2025-2026, l'écart médian entre revenu réel back-office et revenu GA4 était de 31 %.
- Devise par défaut USD : sans currency: 'MAD' explicite, tous les ROAS sont biaisés.
- 78 % du trafic mobile + finalisation desktop = parcours cross-device invisible sans data layer propre.
- Sampling GA4 déclenché dès 10 M d'events/exploration — atteint à 30 k visiteurs/mois.
- Écart médian revenu back-office vs GA4 : 31 % sur 45 comptes marocains audités.
L'architecture du data layer enhanced ecommerce
Le data layer, c'est la couche de données structurées que votre site pousse dans window.dataLayer, et que GTM lit avant de la transmettre à GA4. Sans data layer enhanced ecommerce, GA4 ne reçoit que des page_view génériques. Avec un data layer correctement câblé, chaque étape du parcours est tracée avec ses paramètres : produit, prix, quantité, devise, mode de livraison, moyen de paiement, identifiant de transaction. La séquence canonique GA4 e-commerce tient en six événements officiels. view_item se déclenche au chargement de la page produit, avec item_id, item_name, item_category, price, currency: 'MAD'. add_to_cart au clic sur le bouton panier, avec item et value. begin_checkout à l'entrée du tunnel de paiement, avec items[] complet et value totale. add_shipping_info à la sélection du mode de livraison, avec shipping_tier (Casablanca-intra, livraison hors-ville, point relais). add_payment_info au choix du moyen de paiement — c'est le point critique au Maroc : payment_type peut être 'cmi', 'cod' (paiement à la livraison) ou 'transfer'. purchase à la confirmation de commande, avec transaction_id unique pour la déduplication, value, tax, shipping, items[]. Sur Shopify, le DataLayer custom s'injecte via theme.liquid en bas du checkout — les apps comme Elevar ou GTM4Shopify automatisent 80 % du câblage, mais nous vérifions systématiquement que currency: 'MAD' est bien dans chaque event et que le transaction_id n'est jamais réutilisé. Sur WooCommerce, GTM4WP (gratuit) fait le job, à condition d'activer l'option Enhanced E-commerce et de définir MAD comme devise par défaut dans WooCommerce Settings. Sur PrestaShop, le module officiel Google Tag Manager Pro reste payant pour les events refund et add_shipping_info — incontournables pour un suivi complet.
- Six events GA4 canoniques : view_item, add_to_cart, begin_checkout, add_shipping_info, add_payment_info, purchase.
- transaction_id unique par commande : sans lui, GA4 compte deux fois en cas de rechargement de page.
- Shopify : Elevar ou GTM4Shopify + injection theme.liquid · WooCommerce : GTM4WP gratuit · PrestaShop : module Pro payant.
- Toujours forcer currency: 'MAD' dans chaque event — la devise par défaut du compte fausse tout sinon.
CMI et redirection paiement : où le tracking casse vraiment
C'est le point qui distingue un setup marocain d'un setup standard et où la majorité des intégrations cassent. Le Centre Monétique Interbancaire est le passerelle obligatoire pour le paiement carte au Maroc. Quand le client clique « Payer », votre site le redirige vers paiement.cmi.co.ma, l'utilisateur saisit sa carte sur le domaine CMI, valide, puis le CMI le renvoie vers votre URL de retour — typiquement /checkout/success ou /merci. Le problème : pendant cette boucle, le navigateur quitte votre domaine, perd le contexte JavaScript, et les cookies de tracking peuvent être réinitialisés selon les paramètres SameSite et la configuration ITP de Safari. Résultat fréquent : l'événement purchase ne se déclenche pas, ou il se déclenche avec un client_id GA4 différent de celui de la session initiale. La conversion remonte comme un visiteur direct anonyme, dissocié de la campagne d'acquisition. Trois mesures rétablissent le signal. Un, marquer votre URL de retour CMI comme referral exclusion dans GA4 (Admin → Data Streams → More tagging settings → List unwanted referrals → ajouter paiement.cmi.co.ma). Sans cette exclusion, GA4 attribue la conversion à CMI comme source de trafic. Deux, pousser le data layer purchase server-side via GA4 Measurement Protocol depuis votre back-office, à la réception du webhook de confirmation CMI, en récupérant le client_id depuis le cookie _ga lu côté serveur. Cette voie est la seule fiable avec Safari ITP. Trois, ajouter un fallback côté navigateur sur la page de remerciement : si window.dataLayer existe mais que la transaction n'a pas encore été poussée (cas de retour CMI avec session expirée), pousser quand même l'event purchase avec le transaction_id, GA4 déduplique sur cet identifiant. Sur les comptes que nous avons audités, ces trois mesures combinées récupèrent 60 à 75 % des conversions CMI qui étaient invisibles auparavant.
- Exclure paiement.cmi.co.ma des referrals GA4 — sinon les conversions sont attribuées à CMI comme source.
- Voie fiable : purchase poussé server-side via Measurement Protocol depuis le webhook CMI back-office.
- Fallback navigateur sur page merci : push purchase avec transaction_id, GA4 déduplique.
- Récupération typique : 60 à 75 % des conversions CMI invisibles redeviennent traçables.
Export BigQuery : pourquoi c'est devenu obligatoire en 2026
Jusqu'en juillet 2023, l'export BigQuery était réservé aux comptes GA4 360, à 150 000 $/an. Depuis, Google l'a rendu gratuit pour tous les comptes GA4 standards, dans la limite d'un million d'events par jour exportés et d'un volume de stockage payé au tarif BigQuery normal (10 Go gratuits/mois, puis environ 0,02 $/Go au-delà). Pour un e-commerce marocain typique — 50 000 à 300 000 events/jour — l'export rentre largement dans le quota gratuit, et la facture BigQuery mensuelle finale est de 5 à 25 MAD/mois. C'est la seule façon de sortir du sampling. Dans l'interface GA4, dès qu'une exploration dépasse 10 millions d'events sur la période, les résultats sont échantillonnés et un disclaimer apparaît en haut du rapport (« cette analyse est basée sur 23 % des sessions »). À 23 % d'échantillonnage, vos chiffres ne sont pas faux dans l'absolu, mais ils ne sont plus stables : refaire la même exploration deux fois donne deux chiffres différents. BigQuery contourne ce sampling intégralement : vous interrogez les events bruts en SQL, le résultat est exact. Trois requêtes critiques à connecter à Looker Studio dès le déploiement. Une, le funnel cohort par source : combien de visiteurs Meta Ads vus en avril ont acheté en mai, juin ou juillet — impossible nativement dans GA4. Deux, le CLV par cohorte d'acquisition : revenu cumulé à 30, 90, 180 et 365 jours. Trois, la déduplication multi-touch : comptage des transactions où Meta et Google ont chacun revendiqué la conversion (chez nos clients, 12 à 18 % des achats). L'activation de l'export se fait en une fois dans Admin → BigQuery Linking, sur un projet GCP créé pour l'occasion. Le streaming démarre dans les 24 heures.
- BigQuery export gratuit depuis juillet 2023 : 1 M events/jour inclus, facture finale 5-25 MAD/mois.
- Au-delà de 10 M events/exploration, GA4 échantillonne — disclaimer visible dans l'interface.
- BigQuery contourne le sampling : SQL sur events bruts, résultats exacts et reproductibles.
- Cas d'usage critiques : funnel cohorte cross-mois, CLV par cohorte, déduplication Meta vs Google.
Funnel report ou exploration : choisir le bon outil
GA4 propose deux familles de rapports e-commerce. Les rapports natifs préconstruits (Reports → Monetization → E-commerce purchases, Acquisition → Traffic acquisition) couvrent les bases : revenu par source, top produits, transactions. Ils sont rapides, sans sampling sous 10 M d'events, mais figés — pas de dimension custom, pas de filtre complexe. Les explorations (Explore → Funnel exploration, Path exploration, Cohort exploration) permettent toute la profondeur d'analyse, mais sont soumises au sampling. Le réflexe juste : utiliser le funnel exploration pour le diagnostic mensuel, et basculer sur BigQuery dès que le sampling apparaît. La construction d'un funnel exploration utile tient en cinq étapes. Étape 1 : view_item. Étape 2 : add_to_cart. Étape 3 : begin_checkout. Étape 4 : add_payment_info. Étape 5 : purchase. Lecture clé : sur nos clients marocains, le décrochage majeur est systématiquement entre begin_checkout et add_shipping_info, où les frais de livraison provoquent 35 à 42 % d'abandons. Le second décrochage est entre add_payment_info et purchase quand le moyen choisi est CMI — la friction de la 3D Secure et la redirection bancaire font perdre 8 à 15 % supplémentaires. Inversement, le paiement à la livraison (COD) a un taux add_payment_info → purchase de 91 à 96 %, mais avec un taux de no-show de 12 à 18 % à la livraison — il faut donc tracer aussi le statut post-livraison via un événement custom delivery_confirmed remonté depuis votre transporteur ou votre back-office. Path exploration sert à l'analyse inverse : partir du purchase et remonter les sept derniers events pour comprendre les chemins gagnants. Cohort exploration sert au CLV — mais sous 6 mois de données, les cohortes restent peu informatives.
- Rapports natifs : rapides, pas de sampling sous 10 M events, mais figés.
- Explorations : profondeur d'analyse + dimensions custom, mais soumises au sampling.
- Décrochage typique au Maroc : begin_checkout → add_shipping_info, 35-42 % d'abandons sur les frais de livraison.
- COD : 91-96 % de conversion checkout → purchase, mais 12-18 % de no-show — tracer delivery_confirmed séparément.
Attribution : data-driven contre last-click
Le modèle d'attribution est désormais data-driven par défaut depuis avril 2023, et c'est une bascule sous-estimée. Le last-click attribuait 100 % du crédit de la conversion au dernier canal touché — généralement le branded search Google ou l'accès direct, ce qui sous-évaluait systématiquement Meta, TikTok et le top of funnel. Le data-driven distribue le crédit entre tous les points de contact selon leur contribution réelle au déclenchement de la conversion, calculée par un modèle d'apprentissage automatique propre à votre compte. Sur les 28 comptes que la Webotic suit, la bascule last-click → data-driven déplace en moyenne 18 à 24 % du crédit conversion depuis Google branded vers Meta paid et TikTok paid. Conséquence directe : votre CPA Meta reporté dans GA4 baisse mécaniquement de cette même proportion, ce qui rend visible la rentabilité réelle de votre top of funnel. Trois précautions opérationnelles. Premièrement, la bascule n'est rétroactive que sur 30 jours — les conversions historiques restent calculées sur le modèle utilisé à l'époque. Pour comparer des périodes, il faut figer le modèle dans Admin → Attribution Settings ou faire la comparaison dans BigQuery. Deuxièmement, le data-driven nécessite un volume minimal : 300 conversions par mois sur 30 jours, et le modèle s'active automatiquement quand le seuil est atteint. En dessous, GA4 retombe sur du last-click — vérifier le mention dans Admin. Troisièmement, importer vos données de coût Meta et TikTok via les Data Imports GA4 (ou via les connecteurs Looker Studio directs) pour que les ROAS reportés soient calculés sur le revenu attribué × coût importé — sans coût importé, vous n'avez que le revenu, pas le ROAS.
- Data-driven par défaut depuis avril 2023 — last-click reste accessible dans Admin → Attribution Settings.
- Bascule typique : 18-24 % de crédit conversion déplacé de Google branded vers Meta + TikTok.
- Seuil d'activation : 300 conversions/mois — en dessous, GA4 retombe sur last-click silencieusement.
- Importer les coûts Meta/TikTok via Data Imports pour calculer le ROAS réel directement dans GA4.
Consent Mode v2 et data layer marocain : la conformité câblée
Depuis mars 2024, Consent Mode v2 est obligatoire pour tous les annonceurs qui adressent du trafic EEE, et la Webotic recommande de le câbler systématiquement même pour un trafic 100 % marocain, parce que la loi 09-08 (CNDP) impose elle aussi le consentement préalable au tracking publicitaire. Concrètement, Consent Mode v2 ajoute deux signaux que votre Consent Management Platform doit transmettre à Google : ad_user_data (l'utilisateur consent au partage de ses données identifiantes avec Google) et ad_personalization (l'utilisateur consent à la personnalisation publicitaire). Si ces deux signaux sont denied, GA4 continue de collecter mais en mode anonymisé (modelling des conversions sans cookie), et les events ne sont pas transmis à Google Ads pour le remarketing. Sur un compte ecommerce marocain typique, le taux de consent granted est de 62 à 78 % selon la qualité du wording de la CMP — un wording sec « Refuser » fait tomber le taux à 45 %, un wording explicite « Continuer sans personnalisation » remonte à 75 %. CMP recommandées : Axeptio (français, gratuit jusqu'à 25 000 visiteurs/mois, puis 600 à 1 200 MAD/mois), Didomi (plus complet, 1 000 à 2 500 MAD/mois selon volume), Cookiebot (européen, 250 à 1 800 MAD/mois). Sur le data layer, ajouter un event consent_update à chaque interaction CMP, avec les valeurs explicites de chaque signal — cela permet de tracer en parallèle quel taux de consentement obtient chaque variante de CMP et d'optimiser le wording. Côté GTM, configurer les balises GA4 et Meta avec consent_check sur ad_storage et analytics_storage, pour qu'aucun event n'échappe au consentement. Le déploiement complet — CMP + Consent Mode v2 + data layer enhanced ecommerce + BigQuery export — tient en 3 à 5 jours pour un Shopify ou WooCommerce standard, 5 à 8 jours pour un PrestaShop ou un build custom.
- Consent Mode v2 obligatoire pour trafic EEE depuis mars 2024 — recommandé même pour trafic 100 % MA.
- Signaux à transmettre : ad_user_data + ad_personalization · denied = collecte anonymisée, pas de remarketing.
- Taux consent granted typique au Maroc : 62-78 % selon wording CMP — peut tomber à 45 % avec mauvais wording.
- Déploiement complet (CMP + Consent v2 + data layer + BigQuery) : 3-5 j Shopify/Woo, 5-8 j PrestaShop/custom.
QUESTIONS FRÉQUENTES
- GA4 ou Universal Analytics : que choisir en 2026 ?
- Universal Analytics n'existe plus depuis juillet 2023, la question ne se pose plus en 2026. GA4 est le seul Google Analytics actif. Si vous avez encore des comparaisons historiques à faire avec UA, exporter les données UA dans BigQuery via le shutdown gracefulné par Google avant juillet 2024 est la seule voie ; au-delà, les anciennes données ne sont plus accessibles. GA4 utilise un modèle event-driven au lieu du modèle session de UA, et toute la profondeur analytique passe désormais par les explorations et par BigQuery.
- Comment tracker une conversion qui passe par CMI sans casser le funnel ?
- Trois mesures combinées. Un, exclure paiement.cmi.co.ma comme referral dans GA4 Admin (sinon GA4 attribue la conversion à CMI comme source de trafic). Deux, pousser l'event purchase server-side via GA4 Measurement Protocol depuis votre back-office au moment de la réception du webhook de confirmation CMI, en passant le client_id lu côté serveur depuis le cookie _ga. Trois, ajouter un fallback navigateur sur la page de remerciement qui pousse purchase avec le transaction_id — GA4 déduplique sur cet identifiant. Combinaison qui récupère 60-75 % des conversions CMI invisibles auparavant.
- BigQuery export est-il vraiment gratuit pour un e-commerce marocain ?
- Oui, dans les limites du quota Google Cloud. Depuis juillet 2023, l'export GA4 → BigQuery est gratuit pour les comptes GA4 standards jusqu'à 1 million d'events/jour exportés (intermediate streaming) ou batch quotidien illimité. Le stockage BigQuery inclut 10 Go gratuits/mois, puis environ 0,02 $/Go. Pour un ecommerce marocain typique avec 50 000 à 300 000 events/jour, la facture mensuelle finale est de 5 à 25 MAD/mois. Au-delà de 10 millions d'events/exploration, BigQuery devient la seule façon d'éviter le sampling GA4.
- Funnel report natif ou exploration : quelle différence ?
- Le funnel report natif (Reports → Monetization) est rapide, sans sampling sous 10 M d'events, mais figé — pas de filtre custom, pas de dimension secondaire. Le funnel exploration (Explore → Funnel exploration) permet toute la profondeur : étapes custom, segments, comparaisons, dimensions secondaires. En contrepartie, il est soumis au sampling au-delà de 10 millions d'events sur la période. La règle de pratique : explorations pour le diagnostic mensuel, BigQuery dès que le sampling apparaît, rapports natifs pour le monitoring hebdomadaire automatique.
- À partir de combien d'events GA4 commence à échantillonner ?
- Les rapports natifs préconstruits (Reports → onglet) ne sont pas échantillonnés en standard, peu importe le volume. Les explorations (Explore) sont échantillonnées dès que la requête doit analyser plus de 10 millions d'events sur la période sélectionnée. Un compte ecommerce marocain à 30 000 visiteurs uniques mensuels génère typiquement 8 à 12 millions d'events/mois — donc le sampling se déclenche dès qu'on regarde une période de plus de 30 jours. Le disclaimer apparaît en haut du rapport (« basé sur X % des sessions »). BigQuery est la seule voie hors sampling.
- Attribution data-driven ou last-click : laquelle choisir ?
- Data-driven par défaut depuis avril 2023, et c'est généralement le bon choix pour un ecommerce marocain. Sur 28 comptes Webotic, la bascule last-click → data-driven déplace 18 à 24 % du crédit conversion depuis Google branded vers Meta paid et TikTok paid, rendant visible la rentabilité réelle du top of funnel. Précaution : le data-driven nécessite 300 conversions/mois minimum sinon GA4 retombe sur last-click silencieusement. Pour comparer des périodes historiques, figer le modèle dans Admin → Attribution Settings ou faire la comparaison dans BigQuery.
- Combien de temps prend une configuration GA4 complète au Maroc ?
- Pour un Shopify ou WooCommerce standard : 3 à 5 jours pour le déploiement complet incluant data layer enhanced ecommerce, six events canoniques avec currency MAD explicite, redirection CMI gérée, Consent Mode v2 via Axeptio ou Didomi, export BigQuery activé et trois requêtes Looker Studio connectées. Pour un PrestaShop ou un build custom : 5 à 8 jours. Le ROI est visible dès le premier mois sur la baisse du CPA reporté grâce à l'attribution data-driven et à la récupération des conversions CMI auparavant invisibles.