📌 Série : réconciliation GA4 × SFCC, partie 5 sur 5. Cet article fait partie d’une série technique sur la réconciliation des commandes e-commerce entre Salesforce Commerce Cloud (SFCC) et Google Analytics 4 (GA4). Il suppose une familiarité avec BigQuery, LookML et l’architecture de table de réconciliation vue dans les parties 1 à 4.

Contexte : pourquoi comparer SFCC et GA4

Salesforce Commerce Cloud (SFCC) est une plateforme e-commerce d’entreprise utilisée par les enseignes moyennes et grandes pour gérer boutique en ligne, catalogue, commandes, comptes clients et logistique. Quand un client passe commande, SFCC l’enregistre côté serveur, quoi que fasse le navigateur du client. GA4, lui, mesure le comportement côté client, via une balise JavaScript : à la fin d’un achat, le navigateur envoie un événement purchase aux serveurs de Google.

En théorie, les deux systèmes enregistrent les mêmes commandes. En pratique, jamais. GA4 rapporte généralement moins de commandes que SFCC : sur les projets que j’ai audités, l’écart allait d’environ 10 % à 35 % des commandes web.

Why GA4 and SFCC Order Counts Never MatchCustomerclicks Buy NowOrder placedSFCC records orderServer-side. Always.✓ 100% of orders capturedGA4 purchase eventClient-side. Conditional.⚠ Not all captured: measure your match rateGA4 misses orders when:• Consent not granted (GDPR)• Safari ITP erases cookie• Ad blocker blocks tag• In-app cookie isolation• Order via phone/store/B2B• GTM/tag implementation bug
Figure 0 — SFCC enregistre chaque commande côté serveur, avec une couverture de 100 %. GA4 les enregistre côté client et en manque une fraction structurelle. La réconciliation vise à comprendre précisément quelles commandes manquent, pourquoi, et quoi en faire.

Le taux de correspondance (match rate) est le pourcentage de commandes SFCC pour lesquelles on retrouve une session GA4 et un événement d’achat. 88 % signifie que sur 100 commandes web dans SFCC, 88 ont un événement purchase GA4 correspondant ; les 12 autres sont invisibles dans vos rapports analytics standard.

Une commande orpheline est une commande SFCC sans session GA4 correspondante. Du point de vue de GA4, elle n’existe pas : le client a payé, le chiffre d’affaires est réel, seule l’attribution manque. L’erreur critique est de traiter toutes les commandes orphelines de la même façon. Certaines sont structurellement intraçables (hors ligne, B2B), d’autres relèvent d’une vraie défaillance de tracking qui peut, et doit, être corrigée.

Vous avez normalisé vos identifiants de transaction et votre match rate est de 88 % sur les commandes web. Mais 12 % des commandes web et toutes les commandes hors ligne n’ont toujours aucune session GA4. La bonne approche : classer chaque commande dans votre modèle de données, mesurer chaque catégorie séparément et en tirer de meilleures décisions.

Les cinq catégories de commandes non rapprochées

Five Categories of Unmatched SFCC OrdersOFFLINE(expected, not fixable)In-store POSCall centre ordersRep-assisted salesNo browser ever.Not a bug.Classify + measureseparately.Action: classify onlyDo not fixB2B / API(expected, not fixable)API order creationWholesale portalBack-office entryNo browser.Higher AOV.Action: segment outfrom consumer KPIsITP / CONSENT(structural, partial fix)Safari 7-day ITPConsent declinedLong cycle buyersCookie lost.Attributed to direct.Partial fix: server-sidetagging + enhanced conv.WEBVIEW(partially fixable)Instagram WebViewTikTok / GmailWhatsApp linksIn-app browserisolates cookies.Fix: app-to-web bridge(Google WebView guide)IMPL. GAP(fixable)Tag not firingConsent misconfiguredAd blockerShould be tracked.Isn’t. Quantifyand fix.Action: audit + fixtag implementationCategories 1-2: Structural, never fixable · Category 3: Structural but improvable · Categories 4-5: Largely fixable with investment
Figure 1 — Les cinq catégories de commandes SFCC non rapprochées. Chacune appelle une réponse différente. Les regrouper sous « dark traffic » conduit à de mauvaises priorités.
CatégorieExemplesNatureAction
Hors ligneCaisse en magasin, centre d’appels, ventes assistées par un commercialAttendue, non corrigeable : aucun navigateur n’est impliquéClasser et mesurer séparément, ne pas « corriger »
B2B / APICréation de commande par API, portail grossiste, saisie en back-officeAttendue, non corrigeable ; panier moyen plus élevéSortir des KPI grand public
ITP / consentementITP Safari à 7 jours, consentement refusé, acheteurs à cycle longStructurelle, correction partielle : cookie perdu, attribué à « direct »Server-side tagging et enhanced conversions
WebViewWebView d’Instagram, TikTok, Gmail, liens WhatsAppPartiellement corrigeable : le navigateur intégré isole les cookiesPont app-vers-web (guide Google WebView)
Défaut d’implémentationTag qui ne part pas, consentement mal configuré, bloqueur de publicitésCorrigeable : devrait être tracké et ne l’est pasAuditer et corriger l’implémentation, quantifier

Les catégories 1 et 2 sont structurelles et jamais corrigeables, la 3 est structurelle mais améliorable, les 4 et 5 largement corrigeables avec de l’investissement. Tout regrouper sous « dark traffic » mène à de mauvaises priorités.

Pourquoi ignorer les commandes non rapprochées crée des erreurs cumulatives

Exclure ces commandes de l’analyse ne les fait pas disparaître : leur impact se redistribue, de façon invisible et cumulative, sur les métriques restantes.

L’inflation du « direct »

Dans GA4, une session sans source identifiable apparaît en « (direct) / (none) » ; quand ITP a supprimé le cookie, GA4 ne peut pas la relier à la visite payante précédente. Si 30 % de vos commandes SFCC ne sont pas rapprochées et incluent des commandes dont l’attribution de canal a été perdue (ITP sur Safari, WebView), elles gonflent le « direct » dans vos rapports d’attribution. Un canal qui semble générer 25 % du chiffre d’affaires via le direct en génère peut-être 10 %, et 15 % passent par des canaux payants dont l’attribution s’est perdue.

La cascade de sous-estimation du ROAS

L’utilisateur A clique sur votre annonce Google Ads Search le 1er juin. Il revient le 10 juin via Safari : ITP a effacé son cookie, GA4 le voit comme un nouveau visiteur « direct ». Il convertit, SFCC enregistre la commande, GA4 l’attribue au direct, et les rapports de canaux basés sur GA4 sous-évaluent la recherche payante. Google Ads peut encore compter la conversion via son propre tag et les enhanced conversions : comparez les deux avant de couper des budgets.

C’est la réalité structurelle pour tout commerce dont le cycle de réflexion dépasse 7 jours auprès d’utilisateurs Safari (ITP supprime les cookies écrits par script après 7 jours sans interaction). Vérifiez leur part dans votre propre GA4 (Tech › Navigateur) : sur mobile, c’est souvent un tiers ou plus.

La distorsion du taux de conversion

Si 15 % des achats réels n’ont généré aucun événement GA4, votre taux de conversion est systématiquement sous-estimé, et chaque test A/B, analyse de funnel ou comparaison de cohortes est biaisé à la baisse. Avant d’injecter des taux basés sur GA4 dans des calculs d’enchères, vérifiez-les contre SFCC.

Le système de classification en LookML

La solution : classer chaque commande non rapprochée avant qu’elle n’atteigne un dashboard.

Niveau 1 : classification d’origine

dimension: order_origin {
  label: "Order Origin"
  type: string
  sql: CASE
    WHEN ${TABLE}.ga4_session_id IS NOT NULL
      THEN 'tracked_web'
    WHEN ${TABLE}.ga4_session_id IS NULL
         AND ${TABLE}.sfcc_channel IN ('store', 'pos', 'kiosk', 'retail')
      THEN 'offline_store'
    WHEN ${TABLE}.ga4_session_id IS NULL
         AND ${TABLE}.sfcc_channel IN ('phone', 'callcenter', 'agent', 'fax')
      THEN 'offline_callcenter'
    -- … b2b_wholesale, subscription_automated,
    -- WHEN sfcc_order_source = 'mobile_app'            THEN 'mobile_app_untracked'
    -- WHEN sfcc_channel IN ('web','storefront','website') THEN 'dark_traffic_web'
    ELSE 'unknown'
  END ;;
}

Niveau 2 : confiance du tracking

dimension: tracking_confidence {
  label: "Tracking Confidence"
  type: string
  sql: CASE
    WHEN ${order_origin} = 'tracked_web'
      THEN '1. High'
    WHEN ${order_origin} IN ('offline_store','offline_callcenter','b2b_wholesale','subscription_automated')
      THEN '2. Structural gap'
    WHEN ${order_origin} IN ('dark_traffic_web','mobile_app_untracked')
      THEN '3. Fixable gap'
    ELSE '4. Unknown'
  END ;;
}

La bibliothèque de métriques

Quatre mesures gouvernées portent l’essentiel du suivi :

measure: web_dark_traffic_rate {
  type: number
  sql: COUNT(DISTINCT CASE WHEN ${order_origin} = 'dark_traffic_web' THEN ${TABLE}.order_id END)
       / NULLIF(COUNT(DISTINCT CASE WHEN ${TABLE}.sfcc_channel IN ('web','storefront') THEN ${TABLE}.order_id END), 0) ;;
  value_format_name: percent_1
}

L’architecture des dashboards de réconciliation

  1. Vue exécutive du chiffre d’affaires : cinq tuiles (CA net SFCC total, CA tracké, CA de l’écart structurel, CA de l’écart corrigeable, ratio de couverture).
  2. Réconciliation finance : courbe du CA net SFCC contre le CA rapporté par GA4, par mois, avec l’écart. Elle répond à la question du lundi matin : « pourquoi les chiffres sont-ils différents ? »
  3. Santé de l’implémentation du tracking : tendance du taux de dark traffic web sur 90 jours. Un pic correspond à un déploiement qui a cassé quelque chose, une hausse progressive à une dégradation systémique (dérive du Consent Mode, croissance des bloqueurs).
  4. Mix business par canal : commandes et CA par order_origin, par mois, pour montrer la vraie contribution des canaux hors ligne, B2B et abonnement, indépendamment de GA4.

Le point de départ minimal viable

  1. Exécuter les requêtes de diagnostic de la partie 3 pour connaître votre match rate actuel.
  2. Créer les deux vues BigQuery normalisées (norm_sfcc_orders et norm_ga4_purchases).
  3. Créer une table de réconciliation BigQuery avec order_id, order_origin, sfcc_net_revenue, ga4_revenue, revenue_delta, channel, created_at.
  4. Se connecter à Looker et définir les mesures gouvernées de base.
  5. Construire les quatre tuiles KPI et la courbe de dark traffic.

Sources

Pour aller plus loin, lisez la version complète de l’article (en anglais) : Dark Traffic and Orphan Orders: The Complete Classification, Measurement and Exploitation Guide.

Besoin d’aide sur ce sujet ? Consultant GA4 et audit analytics.

Vous doutez de votre tracking ?

Réserver un appel Ou commencez par l’audit analytics gratuit →