Digital Marketing & Beyond

Guide opérationnel : bascule tracking server-side vers client-side

Kapitales, Shopify standard, mai 2026

📋 Vue d'ensemble

Cette bascule consiste à sortir Kapitales de l'architecture server-side Sirdata (GTM-TCTBSLPT + Custom Pixel) pour revenir sur un tracking client-side classique. La procédure ci-dessous a été validée techniquement avec Melchior (Sirdata) lors de votre échange.

Architecture actuelle (à démanteler)
🛒 Shopify checkout (sandboxé)
📦 Custom Pixel Sirdata
🖥️ sGTM Sirdata GTM-TCTBSLPT
📊 Google Ads, Meta, GA4
Architecture cible (à mettre en place)
🛒 Shopify checkout (sandboxé)
📦 App Google & YouTube + App ou Custom Pixel Meta
📊 Google Ads, Meta, GA4

Le GTM web GTM-TN92TCN reste en place pour les événements hors checkout (page_view, view_item, add_to_cart). Les apps Shopify natives prennent le relais dans le checkout sandboxé.

⏱️
Durée estimée
Travail effectif : 4 à 6 heures. Surveillance post-bascule : 3 à 5 jours.
🎯
Objectif
Couper Sirdata proprement sans casser les remontées de conversions Google Ads et Meta dans le checkout Shopify.
⚠️
Dégradation attendue
Coût par conversion Google Ads : +10 à +30%. Sessions GA4 : -20 à -30%. Meta : à mesurer après bascule.
🔙
Rollback possible
Le conteneur sGTM reste actif tant que la facturation Sirdata n'est pas coupée. Retour possible en restaurant la version GTM web.

Dégradations chiffrées attendues

Google Ads CPA
+10 à +30%
Augmentation du coût par conversion
GA4 sessions
-20 à -30%
Pertes liées aux adblockers et ITP
Purchase trackés
-15 à -20%
Estimation conservatrice, à valider
PayPal / Klarna
100% perdus
Ces conversions ne remontent plus en client-side

🔐 Prérequis avant intervention

Accès admin Shopify Kapitales avec droits sur le thème (theme.liquid) et les Customer Events (Paramètres > Événements client)
Accès admin GTM web GTM-TN92TCN avec droits de publication
Accès admin GTM server-side GTM-TCTBSLPT pour le démantèlement final
Accès Google Ads Kapitales pour vérifier les remontées de conversions après bascule
Accès Meta Business Manager Kapitales (Pixel ID et Conversions API si déployé)
Accès GA4 Kapitales pour comparer les sessions et conversions avant/après
Procédure écrite de Melchior reçue par mail (à garder ouverte pendant l'intervention)
Capture d'écran de l'état actuel de GTM web (balises, déclencheurs, variables) avant toute modification
Important : ne pas lancer la bascule un vendredi ou veille de week-end. Idéal : un mardi ou mercredi matin pour avoir 3 à 4 jours de surveillance en semaine.

📦 Phase 0 : préparation et sauvegardes

0
Sauvegardes et points de contrôle
30 minutes, avant J-Day
  1. 1
    Snapshot GTM web GTM-TN92TCN : dans GTM, aller dans Admin > Versions du conteneur. Créer une version manuelle nommée Pre-bascule-Sirdata-mai-2026. Noter le numéro de version, c'est ton point de rollback.
  2. 2
    Export du conteneur GTM web : Admin > Exporter le conteneur. Télécharger le JSON et le stocker dans un dossier kapitales-bascule-tracking-mai-2026 sur ton disque.
  3. 3
    Captures d'écran Shopify : screenshot du Custom Pixel Sirdata dans Paramètres > Événements client (code complet + statut Connected). Screenshot du theme.liquid au niveau des 2 lignes Sirdata en haut du fichier.
  4. 4
    Mesures de référence GA4 (J-7) : exporter les sessions, transactions, et revenu des 7 derniers jours. C'est ta baseline pour quantifier la dégradation post-bascule.
  5. 5
    Mesures de référence Google Ads (J-7) : exporter le CPA, ROAS, et taux de conversion par campagne. Idem pour Meta Ads.
  6. 6
    Identifier l'ancien client-side dans l'historique GTM : dans Admin > Versions, retrouver la dernière version avant la bascule server-side (octobre 2025). Noter le numéro de version. Tu en auras besoin si tu veux restaurer plutôt que reconfigurer.
  7. 7
    Vérifier le mode de chargement actuel du GTM : ouvrir kapitales.fr en navigation privée, F12, onglet Network, filtrer par gtm.js, recharger la page. Noter l'URL exacte d'où part la requête :
    • Si elle part de mjqrsgprru.kapitales.fr/gtm.js (ou autre sous-domaine Sirdata) : la réécriture est active, le snippet GTM classique devra être réinséré en phase 2.
    • Si elle part déjà de www.googletagmanager.com/gtm.js : pas de réécriture, le snippet est déjà en place, étapes 3 et 4 de la phase 2 inutiles.
    Faire une capture d'écran de cette requête, c'est une preuve technique précieuse.
Point de contrôle : à la fin de la phase 0, tu as un dossier complet avec snapshot GTM, exports JSON, captures Shopify, et baseline de mesures. Si tu n'as pas tout ça, ne lance pas la phase 1.

🔧 Phase 1 : reconfiguration du GTM web

1
Suppression des éléments server-side dans GTM-TN92TCN
1 à 2 heures, en mode workspace

Principe : tu travailles dans un workspace GTM séparé (jamais en direct sur Live). Tu modifies, tu testes en preview, puis tu publies seulement quand tu valides.

  1. 1
    Créer un workspace GTM : nommé Bascule-client-side-mai-2026. Toute modification se fait dans ce workspace.
  2. 2
    Lister les balises concernées : identifier toutes les balises GA4, Google Ads et Meta qui utilisent le paramètre server_container_url ou la variable Sirdata - server_container_url. Faire une liste exhaustive avant de modifier.
  3. 3
    Retirer server_container_url des balises GA4 : pour chaque balise GA4 Event, supprimer le paramètre de configuration server_container_url. Garder le measurement_id intact (G-XXXXXX).
  4. 4
    Retirer server_container_url des balises Google Ads : idem pour toutes les balises Google Ads Conversion. Garder les Conversion ID et Conversion Label intacts.
  5. 5
    Retirer server_container_url des balises Meta : si applicable selon ta config. Garder le Pixel ID intact.
  6. 6
    Désactiver les balises iframe : toutes les balises avec le suffixe (in iframe) qui ne se déclenchent qu'avec la condition Sirdata - Utils - GTM loaded in iframe = true. Les passer en désactivées (pas supprimées, on peut les vouloir en rollback).
  7. 7
    Supprimer la règle de réécriture vers le sous-domaine Sirdata : dans la configuration des balises, retirer toute redirection vers https://mjqrsgprru.kapitales.fr.
  8. 8
    Mode aperçu (Preview) : ouvrir Tag Assistant, naviguer sur kapitales.fr, simuler un parcours produit + add_to_cart. Vérifier que les balises hors checkout (page_view, view_item, add_to_cart) se déclenchent correctement et envoient bien directement vers Google et Meta (pas vers le sous-domaine Sirdata).
  9. 9
    Ne pas publier tout de suite : garder le workspace en attente. La publication finale ne se fait qu'après les phases 2, 3 et 4, pour que la coupure soit synchronisée.
Attention : si tu publies GTM web avant d'avoir installé l'app Google & YouTube côté Shopify, tu perds les conversions checkout pendant ce laps de temps. Tout doit être prêt avant la publication finale.

🛒 Phase 2 : nettoyage Shopify

2
Retrait du Custom Pixel et des lignes theme.liquid
30 minutes
  1. 1
    Localiser le Custom Pixel Sirdata : aller dans Paramètres > Événements client dans l'admin Shopify. Identifier le pixel nommé Sirdata sGTM ou similaire.
  2. 2
    Désactiver puis supprimer le Custom Pixel : cliquer sur le pixel, le mettre en statut Disconnected d'abord (pour observer 24h s'il y a un comportement étrange), puis le supprimer définitivement.
  3. 3
    AVANT de retirer les 2 lignes Sirdata, RÉINSÉRER le script GTM classique : point critique confirmé par Sirdata. Actuellement le script GTM se charge depuis le sous-domaine de réécriture mjqrsgprru.kapitales.fr/gtm.js. Si tu retires les 2 lignes sans rien remettre, le GTM ne se charge plus du tout. Il faut donc insérer le snippet GTM classique de Google.
  4. 4
    Snippet GTM à insérer dans le theme.liquid : dans la balise <head>, le plus haut possible, ajouter le code ci-dessous. Et juste après <body>, ajouter le bloc noscript.

Snippet GTM classique (dans <head>)

<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-TN92TCN');</script>

Snippet noscript (juste après <body>)

<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TN92TCN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  1. 5
    Retirer les 2 lignes Sirdata en haut du theme.liquid : aller dans Boutique en ligne > Thèmes > Actions > Modifier le code. Ouvrir layout/theme.liquid. Repérer les 2 lignes Sirdata en haut du fichier (celles qui font la réécriture vers le sous-domaine). Les supprimer (ou les commenter avec {% comment %} ... {% endcomment %} pour un retour facile).
  2. 6
    Tester immédiatement après sauvegarde : ouvrir kapitales.fr dans un onglet de navigation privée. Ouvrir la console (F12). Taper dataLayer puis Entrée. Si tu vois un tableau d'événements, le GTM est bien chargé via le script classique. Si tu vois "undefined", le snippet GTM est mal placé ou mal copié.
  3. 7
    Sauvegarder : Shopify versionne automatiquement le thème, donc le rollback est natif via Anciennes versions du thème.
Point critique confirmé par Sirdata : la réinsertion du script GTM classique AVANT le retrait des 2 lignes est obligatoire si le GTM est actuellement chargé via le sous-domaine de réécriture. Sans cette étape, tu coupes l'intégralité du tracking, pas seulement le server-side.
Comment vérifier la réécriture avant de commencer : aller sur kapitales.fr en navigation privée, F12, onglet Network, filtrer par gtm.js. Si la requête part vers mjqrsgprru.kapitales.fr/gtm.js ou un sous-domaine similaire, la réécriture est active et le snippet GTM classique est obligatoire. Si la requête part déjà vers www.googletagmanager.com/gtm.js, pas de réécriture, étapes 3 et 4 inutiles.

📊 Phase 3 : installation app Google & YouTube

3
Mise en place du tracking Google natif Shopify
45 minutes

L'app Google & YouTube est l'outil officiel Shopify pour gérer la sandbox checkout côté Google. Elle injecte les balises GA4 et Google Ads Conversion directement dans le checkout via l'API native Shopify, ce que GTM web seul ne peut pas faire.

  1. 1
    Installer l'app : dans l'admin Shopify, aller dans Boutique d'applications Shopify, chercher Google & YouTube. Installer (gratuit, par Google).
  2. 2
    Connecter le compte Google : se connecter avec le compte qui a accès au Google Ads Kapitales et au GA4 Kapitales. Autoriser les permissions.
  3. 3
    Connecter Google Ads : sélectionner le compte Google Ads Kapitales. Activer le suivi des conversions automatique. L'app va créer ou détecter une action de conversion Shopify dédiée. Noter l'ID de cette action.
  4. 4
    Connecter GA4 : sélectionner la propriété GA4 Kapitales. Activer Enhanced E-commerce. L'app va envoyer view_item, add_to_cart, begin_checkout, add_payment_info et purchase directement via mesure_id.
  5. 5
    Vérifier l'absence de doublon : si une balise GA4 ou Google Ads dans GTM web envoie aussi un événement purchase, tu vas avoir un double comptage. Soit tu désactives la balise GTM, soit tu désactives l'event correspondant dans l'app. Recommandation : laisser l'app gérer le checkout (purchase, begin_checkout, add_payment_info) et laisser GTM gérer le storefront (page_view, view_item, add_to_cart).
  6. 6
    Configurer le Consent Mode V2 : dans l'app, activer le Consent Mode. Si Kapitales utilise une CMP (Sirdata, Axeptio, autre), s'assurer que le mode consentement remonte correctement. Sans cela, GA4 et Google Ads dégradent fortement leurs données EEE.
  7. 7
    Tester en commande test : passer une commande test sur kapitales.fr (utiliser un code 100% de réduction si possible). Vérifier dans Google Ads (15 minutes plus tard) et GA4 (Realtime puis DebugView) que le purchase remonte bien.
Limite à connaître : l'app Google & YouTube ne permet pas d'ajouter des paramètres personnalisés (promo IDs, métadonnées produit). Tu perds en flexibilité par rapport à GTM custom. C'est acceptable pour Kapitales pour gérer la sortie, pas pour optimiser à long terme. L'attribution sera en last-click par défaut.

📘 Phase 4 : installation tracking Meta

4
Choix de la solution Meta et installation
1 à 3 heures selon l'option retenue

Pour Meta, il n'existe pas d'équivalent direct de l'app Google & YouTube qui gère la sandbox automatiquement. Il y a 3 voies possibles, par ordre de simplicité et d'efficacité.

Option B : Custom Pixel Meta via Shopify Customer Events API
⏱️ 2 à 3 heures 💰 Gratuit 🔧 JavaScript requis 📊 Pixel seul (pas de CAPI)

Tu crées un Custom Pixel comme l'a fait Sirdata, mais pour Meta uniquement. Tu écris un JavaScript qui souscrit aux événements Shopify (checkout_started, payment_info_submitted, checkout_completed) et qui appelle directement le Pixel Meta via fbq('track', 'Purchase', {...}).

Procédure

  1. Aller dans Paramètres > Événements client, créer un Custom Pixel nommé Meta Pixel - DMB.
  2. Coller un script JavaScript qui charge fbq, puis souscrit aux événements Shopify et déclenche les events Meta correspondants.
  3. Tester en commande test, vérifier dans Events Manager Meta.

Squelette du code

// Custom Pixel Shopify - Meta Pixel !function(f,b,e,v,n,t,s){...}(window, document,'script',...); fbq('init', 'TON_PIXEL_ID'); analytics.subscribe('checkout_completed', (event) => { fbq('track', 'Purchase', { value: event.data.checkout.totalPrice.amount, currency: event.data.checkout.currencyCode, content_ids: event.data.checkout.lineItems.map(i => i.variant.id) }); });
✅ Avantages
  • Contrôle complet du code
  • Possibilité d'ajouter des paramètres custom
  • Indépendant des apps tierces
⚠️ Limites
  • Pas de CAPI, donc plus de pertes sur Safari ITP
  • Maintenance à ta charge si Shopify change l'API
  • Pas de dédoublonnage natif si tu combines avec une autre source
Option C : App tierce dédiée (Trackify, Aramex Pixel, etc.)
⏱️ 1 heure 💰 Payant (20 à 50€/mois) 🔧 Sans code 📊 Pixel + CAPI

Des apps tierces gèrent Meta Pixel + CAPI avec des fonctionnalités avancées comme le multi-pixel, le dédoublonnage, et la modélisation de données.

✅ Avantages
  • Fonctionnalités avancées (multi-pixel, audiences custom)
  • Support si problème
⚠️ Limites
  • Coût mensuel à valider avec Baptiste
  • Dépendance à un éditeur tiers
  • Pas pertinent vu que Baptiste sort déjà d'un coût Sirdata
Recommandation pour Kapitales : Option A. C'est la solution standard, gratuite, maintenue par Meta, et qui inclut la CAPI dont tu as besoin pour compenser la sandbox checkout. L'Option B reste comme plan B si l'Option A pose un problème de doublons ou de configuration.

🚀 Phase 5 : publication, validation et surveillance

5
Publication coordonnée et tests post-bascule
2 heures de publication, 3 à 5 jours de surveillance

Séquence de publication (ordre critique)

  1. 1
    Vérifier que les apps Google & YouTube et Facebook & Instagram sont actives et fonctionnelles côté Shopify (phases 3 et 4 terminées).
  2. 2
    Retirer le Custom Pixel Sirdata côté Shopify (phase 2). À ce stade, les conversions checkout sont déjà couvertes par les apps natives.
  3. 3
    Insérer le snippet GTM classique dans le theme.liquid (phase 2 étape 3 et 4). C'est l'étape critique : sans ce snippet, le retrait des 2 lignes Sirdata coupe TOUT le tracking.
  4. 4
    Retirer les 2 lignes Sirdata du theme.liquid (phase 2 étape 5). Le GTM continue à se charger via le snippet classique.
  5. 5
    Tester immédiatement : ouvrir kapitales.fr en navigation privée, F12, vérifier que dataLayer existe dans la console et que les requêtes gtm.js partent vers www.googletagmanager.com et plus vers le sous-domaine Sirdata.
  6. 6
    Publier le workspace GTM web avec la version Bascule-client-side-mai-2026 (phase 1). Les balises se chargent désormais sans server_container_url.
  7. 7
    Attendre 30 minutes que la nouvelle config GTM se propage sur tous les navigateurs et les caches CDN.

Tests immédiats (J-Day, dans l'heure)

Passer une commande test complète (carte ou Bogus Gateway). Vérifier dans Google Ads > Conversions (15 min de délai) que le purchase remonte.
Vérifier dans GA4 DebugView le funnel complet : view_item, add_to_cart, begin_checkout, add_payment_info, purchase.
Vérifier dans Meta Events Manager > Test Events que les événements Meta arrivent bien (Purchase, AddToCart, ViewContent).
Vérifier l'absence de doublons sur le purchase (Google Ads ne doit pas avoir 2x la même transaction).
Vérifier qu'aucune balise GTM ne pointe encore vers mjqrsgprru.kapitales.fr (Tag Assistant doit être propre).
Vérifier le Consent Mode V2 : utiliser le Tag Assistant pour confirmer que les paramètres ad_storage, analytics_storage, ad_user_data, ad_personalization sont bien transmis.

Surveillance J+1 à J+5

J+1 (lendemain matin)
Vérifier les volumes Google Ads et GA4
Comparer les sessions et conversions des 24 dernières heures avec la baseline J-7. Une baisse de 20 à 30% sur GA4 est attendue. Une hausse du CPA Google Ads de 10 à 30% est attendue. Si la baisse dépasse 40% ou si zéro conversion ne remonte, déclencher le rollback (section dédiée).
J+2 à J+3
Surveiller Meta Events Manager
Vérifier le statut du Pixel et de la CAPI : Event Match Quality (cible : 6+/10), volume d'événements stable, pas d'erreurs de paramètres dans le diagnostic.
J+3 à J+5
Stabilisation et ajustements
Les algos Google Ads et Meta entrent en phase de réapprentissage. Ne pas modifier les budgets et les enchères pendant cette période. Si les volumes sont stables, valider la bascule comme réussie.
J+7
Décision finale sur la désactivation Sirdata
Si tout est stable et que les conversions remontent correctement, lancer la phase 6 (désactivation du conteneur sGTM Sirdata). Avant cela, le sGTM reste actif comme filet de sécurité pour rollback.

🛑 Phase 6 : désactivation Sirdata

6
Coupure définitive du server-side
15 minutes, à J+7 minimum après bascule réussie
  1. 1
    Vérifier que les hits Sirdata sont à zéro : dans la plateforme Sirdata, vérifier le volume de hits sur le conteneur GTM-TCTBSLPT. Il doit être à zéro depuis 3 à 5 jours.
  2. 2
    Envoyer un mail à Melchior : "Bonjour Melchior, la bascule client-side de Kapitales est finalisée depuis le [date]. Les hits server-side sont à zéro. Tu peux procéder à la désactivation du conteneur sGTM de ton côté. Confirme-moi quand c'est fait."
  3. 3
    Procédure de désactivation côté Sirdata : Melchior se connecte à https://sgtm.sirdata.io/containers. Onglet Server-Side > Mes Conteneurs. Accéder au conteneur Kapitales. Cliquer sur Désactiver. Tu peux faire cette manipulation toi-même si tu as les accès Sirdata, ou la laisser à Melchior.
  4. 4
    Confirmation de la désactivation : dès la désactivation effective, plus aucun hit n'est facturé. La facturation s'arrête automatiquement (pas de préavis contractuel).
  5. 5
    Communiquer à Baptiste : mail récapitulatif avec la date de bascule, la date de désactivation Sirdata, et les chiffres comparés baseline vs post-bascule.
Pas de préavis contractuel Sirdata : Melchior a confirmé que la facturation s'arrête dès que les hits tombent à zéro. Pas de délai de résiliation à respecter, c'est purement opérationnel.

🔙 Plan de rollback en cas de problème

Si à J+1 ou J+2 tu constates une baisse de conversions supérieure à 40%, ou si les conversions ne remontent plus du tout dans Google Ads / Meta, tu peux revenir en arrière tant que Sirdata n'a pas été désactivé.

Élément à restaurer Procédure Durée
GTM web GTM-TN92TCN Aller dans Versions, sélectionner Pre-bascule-Sirdata-mai-2026, cliquer sur Publier en tant que version active 5 minutes
theme.liquid Shopify Aller dans Thèmes > Anciennes versions, restaurer la version d'avant ton intervention 5 minutes
Custom Pixel Sirdata Recréer manuellement le Custom Pixel à partir de la capture d'écran de la phase 0. Demander de l'aide à Melchior si besoin 30 minutes
App Google & YouTube Désactiver le suivi des conversions dans l'app pour éviter les doublons. Ne pas désinstaller l'app, juste désactiver le tracking 5 minutes
App Facebook & Instagram Désactiver le Pixel et la CAPI dans l'app. Idem, ne pas désinstaller 5 minutes
Fenêtre de rollback : tant que Melchior n'a pas désactivé le conteneur sGTM Sirdata (phase 6), le rollback complet reste possible en 1 heure. Une fois Sirdata désactivé, il faudrait redéployer un nouveau conteneur, ce qui prend plusieurs jours.

✅ Récapitulatif : par où commencer maintenant

Si tu lis ce guide pour la première fois et que tu te demandes par où démarrer, voici l'ordre :

  1. 1
    Aujourd'hui ou demain : faire la phase 0 complète (sauvegardes GTM, captures Shopify, baselines GA4 et Google Ads). 30 minutes.
  2. 2
    Lire le mail de Melchior pour confirmer la transport URL exacte et les 2 lignes theme.liquid. Le mail contient peut-être des nuances que ce guide n'a pas.
  3. 3
    Choisir le J-Day : un mardi ou mercredi matin. Bloquer 4 à 6 heures en continu.
  4. 4
    J-Day matin : phase 1 (GTM web en workspace, sans publier). 1 à 2 heures.
  5. 5
    J-Day milieu : phase 3 (app Google & YouTube) puis phase 4 option A (app Facebook & Instagram avec CAPI). 1 à 2 heures.
  6. 6
    J-Day après-midi : phase 2 (retrait Custom Pixel et theme.liquid) puis publication GTM web. Tests immédiats. 1 heure.
  7. 7
    J+1 à J+7 : surveillance quotidienne, ajustements si besoin.
  8. 8
    J+7 : phase 6, mail à Melchior pour la désactivation Sirdata.
Le seul vrai risque : publier GTM web avant d'avoir installé les apps Google et Meta. Tant que les apps natives Shopify ne sont pas actives, le checkout sandboxé n'envoie rien aux plateformes, et tu perds 100% des conversions purchase pendant cette fenêtre. La séquence dans l'ordre est essentielle.