Tracking e-commerce : mesurer vos ventes et votre tunnel d'achat
Accueil Blog Tracking e-commerce : mesurer vos ventes et votre tunnel d'achat

Tracking e-commerce : mesurer vos ventes et votre tunnel d'achat

Tracking

Jean-Philippe Gronier

Jean-Philippe Gronier

10 juil. 2026

Sur un site vitrine, une mesure approximative reste gênante. Sur un site e-commerce, elle coûte de l'argent, chiffre après chiffre. Un add_to_cart manquant fausse un taux de conversion ; un purchase compté deux fois gonfle artificiellement le ROAS d'une campagne qu'on va ensuite sur-financer ; un montant remonté hors taxe au lieu de toutes taxes comprises décale l'ensemble du reporting revenu sans que personne ne s'en aperçoive avant le rapprochement comptable. Le tracking e-commerce est une discipline à part parce que la boutique en ligne combine des enjeux qu'un site vitrine n'a pas à gérer : des montants qui doivent être exacts au centime, des catalogues produits avec variantes et stocks changeants, des commandes qui peuvent être annulées, partiellement remboursées ou modifiées après coup, et un tunnel d'achat en plusieurs étapes où chaque abandon a une valeur business précise. Que votre boutique tourne sous Sylius, Shopify ou un autre CMS, la logique de mesure reste la même : la mise en place du tracking commence par un plan de marquage clair qui décrit, étape par étape, quel événement porte quelle donnée, avant même d'ouvrir le code source du thème ou du back-office pour l'implémenter. C'est ce plan de marquage qui fait la différence entre une collecte de données fiable et une mesure approximative des différents canaux d'acquisition. Cet article détaille les événements GA4 e-commerce standard, la structure de dataLayer qui les porte, la mise en place du tracking via Google Tag Manager, les pièges qui font le plus souvent dérailler la mesure d'une boutique, et les particularités d'une boutique Sylius.

Pourquoi le tracking e-commerce est plus exigeant

Un site de contenu se contente le plus souvent de suivre des pages vues et quelques clics. Un site e-commerce, lui, doit suivre une chaîne de valeur complète, du premier contact avec un produit jusqu'au paiement encaissé, et parfois au-delà avec le remboursement. Trois exigences distinguent nettement ce contexte.

D'abord, la précision des montants. Un montant de commande erroné ne fausse pas seulement un rapport, il fausse le pilotage des enchères automatiques sur Google Ads ou Meta, qui optimisent directement sur la valeur remontée par les événements de conversion transmis à ces plateformes publicitaires — via le pixel côté navigateur ou son pendant côté serveur. Ensuite, la richesse du catalogue : chaque produit a un identifiant, une catégorie, parfois une variante (taille, couleur), un prix qui peut varier avec des promotions, et un niveau de stock qui influence la présentation du produit (rupture, réassort). Le tracking doit refléter cette structure sans l'appauvrir. Enfin, la dimension temporelle et post-achat : une commande n'est pas un événement instantané et définitif. Elle peut être annulée avant expédition, partiellement remboursée après un retour, ou payée en plusieurs fois. Un tracking e-commerce qui ne capture que l'instant purchase et ignore tout ce qui suit produit une image figée d'un processus qui, dans la réalité, continue d'évoluer pendant des semaines.

C'est cette combinaison — précision financière, complexité produit, suivi dans la durée — qui rend le tracking e-commerce plus exigeant qu'un tracking classique, et qui explique pourquoi tant de boutiques pilotent leur marketing sur des chiffres approximatifs sans le savoir, sans même pouvoir dire quels canaux d'acquisition contribuent réellement au chiffre d'affaires encaissé.

Les événements GA4 e-commerce et leur rôle dans le tunnel

Google Analytics 4 propose un schéma d'événements e-commerce standardisé, pensé pour reconstituer l'intégralité du parcours d'achat. Chaque événement a un rôle précis et des paramètres attendus, regroupés dans un objet ecommerce qui contient toujours un tableau items. Formaliser cette liste dans un plan de marquage — un document qui associe à chaque événement son déclencheur, ses paramètres et la donnée source dans le back-office — évite les divergences d'implémentation d'une mise à jour à l'autre.

  • view_item_list : déclenché quand l'utilisateur voit une liste de produits (page catégorie, résultats de recherche, module de recommandation). Il permet de mesurer l'exposition d'un produit avant même qu'il ne soit consulté individuellement.
  • view_item : déclenché sur la fiche produit. Paramètres clés : items (avec item_id, item_name, item_category, price), value et currency pour valoriser la vue.
  • add_to_cart : l'ajout au panier, l'un des signaux les plus utilisés pour le remarketing et l'optimisation des campagnes. Il doit porter la quantité et le prix unitaire réels au moment de l'ajout, pas un prix catalogue générique.
  • begin_checkout : l'entrée dans le tunnel de commande. C'est le point de mesure du taux d'abandon de panier le plus scruté par les équipes marketing, et souvent le premier endroit où se révèlent les points de friction du parcours d'achat — formulaire trop long, frais de port découverts trop tard, absence d'un moyen de paiement attendu. Enchaîner correctement la vue de la page produit, l'ajout au panier et le début du paiement dans le plan de marquage est ce qui permet de localiser ces points de friction du parcours étape par étape.
  • add_shipping_info : l'étape où l'utilisateur choisit son mode de livraison. Utile pour isoler les abandons liés au coût ou au délai de livraison plutôt qu'au produit lui-même.
  • add_payment_info : l'étape de sélection du moyen de paiement, juste avant la validation finale du checkout.
  • purchase : la conversion, l'événement le plus critique de tous. Il doit impérativement porter transaction_id (identifiant unique de la commande, pour la déduplication), value (montant total, toutes taxes comprises, cohérent avec ce qui est effectivement encaissé), currency, et le détail items avec les quantités et prix réellement vendus.
  • refund : le remboursement, total ou partiel, d'une commande déjà comptée en purchase. Trop souvent absent des implémentations, il est pourtant indispensable pour qu'un chiffre d'affaires « net » soit calculable dans les rapports, plutôt qu'un chiffre d'affaires brut qui ignore les retours.

Ces huit événements, correctement implémentés et correctement paramétrés, permettent de reconstituer un entonnoir complet — de la vue produit à l'achat — et d'identifier précisément à quelle étape la boutique perd des clients, quels que soient les canaux d'acquisition ou les sources de trafic qui ont amené ces visiteurs jusqu'à la fiche produit.

Structurer un dataLayer e-commerce propre

Tous ces événements doivent être poussés dans le dataLayer avant que Google Tag Manager ne déclenche la balise GA4 correspondante, ou la balise du pixel publicitaire concerné. La structure attendue par GA4 respecte un schéma précis : un objet ecommerce avec un tableau items, et pour l'événement purchase, l'ensemble des montants qui composent la commande. Voici un exemple de dataLayer propre pour un événement purchase :

{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "CMD-2026-004821",
    "value": 129.90,
    "tax": 21.65,
    "shipping": 4.90,
    "currency": "EUR",
    "coupon": "SOLDES10",
    "items": [
      {
        "item_id": "SKU-10234",
        "item_name": "Veste technique impermeable",
        "item_category": "Vetements homme",
        "item_variant": "Bleu marine / L",
        "price": 89.90,
        "quantity": 1
      },
      {
        "item_id": "SKU-88213",
        "item_name": "Ceinture cuir",
        "item_category": "Accessoires",
        "price": 35.00,
        "quantity": 1
      }
    ]
  }
}

Quelques règles à respecter scrupuleusement : value doit correspondre exactement au montant encaissé, taxes et frais de port compris ; items doit lister chaque ligne de commande avec son prix unitaire réel (après remise appliquée), pas un prix catalogue ; transaction_id doit être unique et stable, généralement l'identifiant de commande du back-office, jamais régénéré à chaque rafraîchissement de page. C'est cette dernière règle qui évite l'un des pièges les plus fréquents, détaillé plus bas. Cette même structure de dataLayer, une fois posée proprement dans le code source du site, sert aussi de socle à l'envoi des événements vers un Meta Pixel et son API Conversions (le couple Meta Pixel / Conversions API, ou pixel + Conversions API), ou vers toute autre balise publicitaire, sans avoir à redévelopper une collecte de données parallèle spécifique à chaque plateforme. Une collecte de données unique en amont, dérivée vers Google Tag Manager, alimente ainsi GA4, Google Ads et le Meta Pixel avec les mêmes valeurs. Pour la mécanique de déclenchement de ces balises dans GTM (règles, variables de dataLayer, ordre de chargement), la base reste celle décrite dans notre guide dédié à l'installation et la configuration de Google Tag Manager : ce satellite ne revient pas sur ces fondamentaux, il se concentre sur ce qui est spécifique à la couche e-commerce.

Les pièges classiques du tracking e-commerce

Certaines erreurs reviennent si systématiquement qu'elles méritent d'être passées en revue une par une.

HT vs TTC. Le piège le plus banal et le plus coûteux : envoyer un montant hors taxe dans value alors que le client a payé toutes taxes comprises (ou l'inverse selon le pays et le type d'activité). L'écart n'est pas anecdotique — il représente le taux de TVA en vigueur, appliqué à l'ensemble du chiffre d'affaires mesuré. Il faut décider une bonne fois pour toutes de la convention retenue et s'assurer qu'elle est identique sur tous les événements et sur tous les canaux (GA4, Google Ads, Meta), faute de quoi les mêmes commandes n'auront pas la même valeur selon la plateforme publicitaire qui les rapporte.

Frais de port. Faut-il les inclure dans value ou les isoler dans le paramètre shipping ? GA4 prévoit les deux, mais encore faut-il que l'implémentation soit cohérente d'une commande à l'autre, et que le total value corresponde bien à ce que le client a réellement payé, frais de port inclus.

Codes promo. Un code de réduction appliqué doit faire baisser le value transmis et, idéalement, être renseigné dans le paramètre coupon. Une erreur fréquente consiste à transmettre le montant avant remise, ce qui surévalue systématiquement la valeur des commandes soldées.

Commandes annulées ou remboursées. Une commande annulée avant expédition ne doit pas rester comptée comme une vente ferme ; un retour partiel doit déclencher un refund avec le montant exact remboursé. Sans ce suivi, le chiffre d'affaires mesuré dans GA4 diverge durablement du chiffre d'affaires réellement encaissé, tel qu'il apparaît dans le back-office de l'entreprise.

Doublons de purchase au rechargement de la page de confirmation. C'est sans doute le piège le plus répandu : si la page de remerciement se contente de pousser l'événement purchase à chaque chargement, un simple rafraîchissement (F5), un retour arrière du navigateur, ou un partage d'URL renvoie le même événement une seconde fois, avec le même montant. Le remède consiste à conditionner l'envoi à un identifiant de transaction déjà vu (stockage local, session, ou vérification côté serveur) pour ne déclencher l'événement qu'une seule fois par commande — la même logique de déduplication doit s'appliquer côté Meta, où l'envoi conjoint d'un événement Pixel côté navigateur et d'un événement Conversions API (CAPI) côté serveur pour un même achat exige un identifiant d'événement partagé, faute de quoi la même vente est comptée deux fois côté plateforme publicitaire.

Ventes offline ou par téléphone. Une partie du chiffre d'affaires peut provenir de commandes passées par téléphone, en point de vente, ou finalisées par un conseiller client après un premier contact en ligne. Ces ventes échappent par nature au tracking web classique. Les intégrer suppose soit une saisie manuelle dans un outil dédié, soit un import de conversions hors-ligne côté plateforme publicitaire — un chantier à part entière, mais à ne pas ignorer si une part significative du revenu passe par ces canaux d'acquisition, sous peine de sous-évaluer durablement la performance de certaines campagnes et de mal arbitrer entre sources de trafic payantes et gratuites.

Réconcilier back-office et analytics

Le chiffre d'affaires affiché dans GA4 ne sera jamais rigoureusement identique à celui du back-office ou de la comptabilité, et c'est normal. Bloqueurs de scripts, refus de consentement, paramétrage restrictif du consent mode, échecs de chargement de page, latence entre l'achat et le rafraîchissement des rapports : un écart résiduel est structurel, pas anormal. La question utile n'est donc pas « pourquoi y a-t-il un écart ? » mais « l'écart est-il stable et explicable, ou dérive-t-il ? ». En pratique, un écart de quelques points de pourcentage, stable dans le temps, s'explique par le refus de consentement et les pertes techniques inhérentes à toute mesure côté navigateur — et se resserre nettement avec une architecture de collecte plus robuste, comme le tracking server-side, qui fait transiter les événements par un point de collecte que l'entreprise maîtrise plutôt que par le seul navigateur du client, avec un Meta Pixel ou un GA4 qui dépendent tous deux du bon vouloir du consentement. Un écart qui se creuse d'un mois sur l'autre, en revanche, signale presque toujours un problème d'implémentation récent : un déploiement qui a cassé un déclencheur, un changement de tunnel de commande non répercuté dans le dataLayer, une bascule de consent mode mal testée, ou l'apparition d'un doublon. La bonne pratique consiste à documenter cet écart lors de la mise en production, à fixer une fourchette de tolérance avec les équipes finance et marketing, et à ne s'alarmer que d'une dérive par rapport à cette fourchette, pas de l'écart lui-même. C'est précisément ce que vérifie un audit de tracking mené régulièrement : confirmer que l'écart reste dans la fourchette attendue, repérer la cause dès qu'il en sort, et vérifier au passage que les sources de trafic remontées restent cohérentes d'une période à l'autre.

Spécificités Sylius : événements serveur et plugins open-source

Une boutique construite sur Sylius dispose d'un atout que peu de CMS e-commerce offrent aussi nativement : un cœur applicatif structuré autour d'événements métier côté serveur, déclenchés à chaque étape réelle du cycle de vie d'une commande (création, changement d'état, paiement confirmé, expédition). Ces événements serveur constituent une source de vérité indépendante du navigateur du client : ils permettent de construire une mesure qui ne dépend ni d'un bloqueur de publicité, ni d'un script qui ne s'est pas chargé, ni d'un utilisateur qui a fermé l'onglet avant l'exécution complète d'un script de mesure. C'est un terrain particulièrement favorable pour fiabiliser un purchase ou un refund : plutôt que de faire reposer la mesure sur le seul affichage de la page de confirmation côté navigateur, on peut la déclencher — ou la doubler — depuis la confirmation serveur du paiement, ce qui règle au passage une bonne partie du piège de doublon évoqué plus haut, aussi bien pour GA4 que pour un envoi Meta Conversions API (CAPI).

Éditrice de Sylius et partenaire officiel de la plateforme, Monsieur Biz publie de nombreux plugins open-source, dont un plugin de gestion des scripts et des tags pensé pour intégrer proprement une couche de mesure e-commerce dans le checkout, sans multiplier les scripts collés en dur dans le HTML et le CSS des templates du code source. L'objectif est le même que pour n'importe quel CMS, que la boutique tourne sous Sylius, Shopify ou une solution maison : faire correspondre chaque événement du tunnel d'achat (vue produit, ajout panier, étapes de checkout, achat, remboursement) à un événement métier réel de la plateforme, plutôt que de le déduire approximativement d'un comportement de navigation. L'ensemble de ces plugins est public sur GitHub, et le principe s'applique au-delà de Sylius : sur tout CMS e-commerce disposant d'événements serveur exploitables (webhooks de paiement, hooks de commande), la même logique de fiabilisation peut être reproduite, y compris sur Shopify où les webhooks de commande jouent un rôle équivalent à celui des événements Sylius. C'est précisément notre expertise en tracking e-commerce : brancher une mesure fiable au plus près de la logique métier de la boutique, quelle que soit la plateforme.

Et au-delà de GA4 : Google Ads et Meta

Les événements e-commerce ne servent pas qu'à peupler des rapports GA4. Ils alimentent aussi directement les algorithmes d'enchères des plateformes publicitaires, et permettent d'arbitrer entre canaux d'acquisition en comparant leur contribution réelle au chiffre d'affaires plutôt qu'un simple volume de clics. Sur Google Ads, la conversion « achat » importée (nativement via GA4 ou via l'API Conversions) doit porter la même valeur et le même identifiant de transaction que celui utilisé côté analytics, pour éviter tout double comptage entre les deux systèmes. Sur Meta, l'événement standard Purchase, envoyé via le Meta Pixel côté navigateur et via l'API Conversions (CAPI) côté serveur, attend une structure très proche — valeur, devise, identifiants produits — et bénéficie tout particulièrement d'un envoi côté serveur, qui limite la perte de conversions liée aux bloqueurs, à la limitation des cookies tiers dans les navigateurs et aux refus de consentement gérés par le consent mode. Dans les deux cas, le principe reste le même que celui développé plus haut : un montant exact, un identifiant de commande stable, et un événement envoyé une seule fois par commande. Traiter ce sujet en détail, plateforme par plateforme, dépasse le cadre de cet article : l'essentiel est de retenir que la qualité du tracking e-commerce mesuré ici, depuis les sources de trafic jusqu'au purchase final, conditionne directement la qualité du pilotage publicitaire en aval, quelle que soit la plateforme.