Shopify
Guide technique complet de Shopify, la plateforme e-commerce d'où part chaque donnée : architecture de la boutique, nettoyage avant installation, tunnel de paiement, pixels, Privacy API, Markets multidevise et vérification.
1Rôle et objectif
Shopify est la source de toutes les données e-commerce. La boutique émet les événements utilisateur que le reste du dispositif (Addingwell, GTM, sGTM) collecte puis redistribue.
- Source des événements e-commerce (page_view, add_to_cart, purchase, etc.)
- Tunnel de paiement propriétaire, avec la Custom Pixel API
- Shopify Privacy API pour piloter le consentement des pixels
- Markets pour le multidevise et le multilingue
- Événements clients (Customer Events) pour les web pixels et les pixels personnalisés
Shopify ne gère aucune balise marketing en direct. Tout passe par Addingwell (DataLayer et injection de GTM), puis par GTM (balises et consentement).
2Architecture de la boutique
Les couches du dispositif sur Shopify
Boutique Shopify ├── Thème (vitrine) │ └── Pages publiques (accueil, collection, produit, panier) │ ├── Tunnel de paiement (iframe isolé) │ └── Extensible via les pixels personnalisés │ ├── Événements clients (Paramètres) │ ├── Web pixels (sandbox JS) │ └── Pixels personnalisés (code libre) │ ├── Apps installées │ ├── Addingwell (DataLayer + GTM + sGTM) │ ├── Cookiebot (CMP via GTM) │ └── Klaviyo (natif Shopify) │ └── Privacy API └── Gestion du consentement des pixels
Points clés
- Le thème ne joue aucun rôle dans le tracking (pas de code Liquid sur mesure)
- Le tunnel de paiement est isolé : seuls les pixels personnalisés (custom pixels) y ont accès
- Addingwell prend en charge toute la couche DataLayer et GTM, automatiquement
- La Privacy API ne contrôle que les web pixels et les pixels personnalisés de Shopify
3Nettoyage avant installation
Avant d'installer le dispositif de tracking, faites le ménage dans l'existant. Deux systèmes de tracking actifs en parallèle produisent des événements en double, donc des données faussées.
Règle absolue
Nettoyez avant d'installer le dispositif. Un seul pixel oublié, une seule app de tracking restée en place, et toutes les données peuvent être faussées.
Apps à supprimer
| App | Raison |
|---|---|
| Facebook & Instagram (Meta natif) | Pixel Meta intégré, en conflit avec Meta CAPI via GTM |
| Google & YouTube (Google natif) | Tracking Google intégré, en conflit avec GA4 et Google Ads via GTM |
| Trackify, Pixel Perfect, Elevar, etc. | Apps de tracking tierces : doublons assurés |
| Scripts de tracking codés en dur dans le thème | Balises <script> ajoutées à la main dans theme.liquid |
Où vérifier
- 1Admin Shopify > Paramètres > Applications et canaux de vente : désinstaller les apps de tracking listées ci-dessus
- 2Admin Shopify > Paramètres > Événements clients (pixels personnalisés) : supprimer les anciens pixels personnalisés
- 3theme.liquid : rechercher et supprimer les appels fbq('init', ...), gtag('config', ...) et tout script de tracking ajouté à la main
Désactiver les options de confidentialité natives de Shopify
Conflit de consentement
Le consentement est géré par Cookiebot via GTM, et non par Shopify. La bannière et la page d'opposition natives doivent être désactivées pour éviter les conflits (double bannière, signaux contradictoires).
Rendez-vous dans Admin Shopify > Paramètres > Confidentialité des clients :
| Paramètre | Valeur attendue |
|---|---|
| Bannière de cookies : paramètres automatisés | OFF |
| Bannière de cookies : régions | Visible dans aucune région (décocher toutes les régions) |
| Page d'opposition : paramètres automatisés | OFF |
| Page d'opposition : régions | Active dans aucune région (décocher toutes les régions) |
| Politique de confidentialité | Peut rester « Automatisée » (contenu juridique, sans interférence) |
| Hébergement des données | Union européenne (cohérent avec la CDS Region .eu de Cookiebot) |
4Événements du DataLayer
Addingwell génère le DataLayer automatiquement. Aucun code sur mesure n'est nécessaire dans le thème.
Événements par page
| Page | Événements | Données clés |
|---|---|---|
| Toutes | page_view | URL, titre, référent |
| Collection | view_item_list, select_item | Liste de produits, position |
| Produit | view_item | SKU, prix, variante |
| Produit / Collection | add_to_cart | Article, quantité, valeur |
| Panier | view_cart, remove_from_cart | Articles, valeur totale |
| Paiement | begin_checkout | Articles, valeur (pixel personnalisé) |
| Paiement | add_shipping_info, add_payment_info | Mode de livraison / de paiement |
| Remerciement | purchase | ID de transaction, chiffre d'affaires, articles (pixel personnalisé) |
Source unique
Tous les événements passent par le même DataLayer. Il n'existe pas de seconde source : Addingwell est le seul à y injecter des événements.
5Checkout Extensibility
Le tunnel de paiement Shopify est un iframe isolé : le JavaScript du thème n'y a pas accès. Shopify propose deux mécanismes pour y faire du tracking :
| Mécanisme | Accès | Usage |
|---|---|---|
| Web pixels | Sandbox JS (limité) | Pixels standard (Meta) |
| Pixels personnalisés | Code libre (complet) | DataLayer sur mesure, événements GTM |
Pixel personnalisé Addingwell
Addingwell utilise un pixel personnalisé pour capter begin_checkout et purchase dans le tunnel de paiement, puis les pousse dans le DataLayer GTM.
Autorisation : « Not required » (non requise)
Le pixel personnalisé Addingwell est réglé sur « Not required ». C'est voulu : le consentement est géré par Cookiebot dans GTM (Consent Mode v2), et non par la Shopify Privacy API.
Sandbox du tunnel de paiement : une limite pour les tests
Le mode Preview de GTM ne fonctionne pas dans le tunnel de paiement
Le tunnel de paiement Shopify est une sandbox isolée, où le mode Preview (aperçu) de GTM ne fonctionne pas. Vérifiez les événements begin_checkout et purchase uniquement via DevTools > Network et la console JavaScript.
6Web pixels et pixels personnalisés
| Web pixels | Pixels personnalisés | |
|---|---|---|
| Environnement | Sandbox JS (worker) | Sandbox JS (iframe) |
| Accès au DOM | Non | Non |
| Accès aux cookies | Non | Non |
| Code sur mesure | Non (configuration uniquement) | Oui (code libre) |
| Consentement | Shopify Privacy API | Réglable (Required / Not required) |
| Exemple | Klaviyo, Meta natif | DataLayer Addingwell |
Les web pixels sont gérés par les apps Shopify (Klaviyo, etc.). Les pixels personnalisés se configurent à la main dans Paramètres → Événements clients.
7Shopify Privacy API
Rôle
La Shopify Customer Privacy API décide quels web pixels et pixels personnalisés ont le droit de se déclencher. La passerelle la synchronise avec Cookiebot.
Flux de consentement
Cookiebot (CMP dans GTM)
↓
Passerelle cookie-consent_boostecom.liquid
↓
Shopify.customerPrivacy.setTrackingConsent({
marketing: true/false
})
↓
Web pixels déclenchés / bloquésCe que la Privacy API contrôle
| Élément | Contrôlé par la Privacy API | Contrôlé par le Consent Mode de GTM |
|---|---|---|
| Web pixels (Klaviyo, Meta natif) | Oui | Non |
| Pixels personnalisés | Si autorisation = Required | Non |
| Balises GTM (GA4, Meta CAPI, etc.) | Non | Oui |
| Scripts du thème | Non | Non |
Bannière native de Shopify
La bannière de cookies et la page d'opposition de Shopify doivent être désactivées (aucune région cochée) pour éviter les conflits avec Cookiebot. Le détail se trouve dans la section Nettoyage avant installation.
8Markets et multidevise
Shopify Markets gère le multidevise et le multilingue. Le tracking doit donc prendre en charge les conversions dans la devise locale.
Conséquences pour le tracking
- Addingwell inclut la devise (currency) dans chaque événement e-commerce
- Les montants (value, price) sont exprimés dans la devise locale du visiteur
- GA4 gère nativement le multidevise
- Meta CAPI reçoit la bonne devise via le sGTM
- Aucune configuration supplémentaire nécessaire
Le DataLayer Addingwell gère automatiquement la devise locale. Aucune configuration supplémentaire n'est nécessaire pour Markets.
9Configuration
Prérequis
- Boutique Shopify active (forfait Basic ou supérieur)
- Accès administrateur avec les autorisations Applications et Événements clients
- Domaine personnalisé configuré
- Nettoyage avant installation effectué (voir la section 3)
Apps à installer
- 1Addingwell : DataLayer GA4, injection de GTM, contournement des bloqueurs de publicité, cookie restore
- 2Cookiebot : CMP RGPD (bannière de consentement, configurée via GTM)
Fonctionnalités Addingwell à activer
| Fonctionnalité | Rôle |
|---|---|
| DataLayer GA4 | Au moins 11 événements e-commerce automatiques |
| Injection GTM | GTM sur toutes les pages de la boutique |
| Pixel personnalisé du tunnel de paiement | Événements du tunnel de paiement (begin_checkout, purchase) |
| Contournement des bloqueurs (bypass adblockers) | Proxy CDN qui contourne les bloqueurs de publicité |
| Cookie restore | Contourne l'ITP de Safari, attribution sur une longue durée |
Pixel personnalisé du tunnel de paiement
- 1Aller dans Admin Shopify > Paramètres > Événements clients
- 2Ajouter un pixel personnalisé > coller le code fourni par Addingwell
- 3Autorisation « Not required » (et non « Required »), car le consentement est géré par GTM, pas par la Privacy API
Serveur sGTM
- 1Créer le serveur dans Addingwell
- 2Configurer le domaine personnalisé (p. ex. tags.ma-boutique.com)
- 3Région recommandée : Europe multi-region
- 4DNS : le CNAME fourni dans Addingwell > Server > Custom Domain
Contrôles après installation
- 1Addingwell connecté et actif dans son tableau de bord
- 2Pixel personnalisé Addingwell présent dans Paramètres → Événements clients
- 3Autorisation du pixel personnalisé = « Not required »
- 4Bannière native Shopify désactivée (Paramètres → Confidentialité des clients)
- 5Passerelle de consentement présente dans theme.liquid (cookie-consent_boostecom.liquid)
- 6Pixel personnalisé DataLayer Monitor installé dans Événements clients
- 7Le domaine personnalisé du sGTM répond avec un statut 200
10Vérification
Vérifier le DataLayer
- 1Ouvrir la console du navigateur sur la boutique
- 2Taper dataLayer et vérifier que les événements sont présents
- 3Naviguer : accueil → collection → produit → panier
- 4Vérifier page_view, view_item_list, view_item, add_to_cart, view_cart
- 5Passer une commande test → vérifier begin_checkout et purchase
Vérifier les pixels personnalisés
- 1Admin Shopify → Paramètres → Événements clients
- 2Vérifier que le pixel personnalisé Addingwell est présent et actif
- 3Vérifier que l'autorisation est sur « Not required »
- 4Vérifier que le DataLayer Monitor est présent et actif
- 5Aucun autre pixel personnalisé en conflit
Vérifier la Privacy API
- 1Console du navigateur → Shopify.customerPrivacy.getTrackingConsent()
- 2Avant tout choix : marketing = "no_interaction"
- 3Après acceptation dans Cookiebot : marketing = "yes"
- 4Après refus dans Cookiebot : marketing = "no"
Test avant consentement (navigation privée)
- 1Ouvrir le site en navigation privée
- 2Cliquer sur « Tout refuser » dans la bannière Cookiebot
- 3Preview GTM : vérifier que seules les balises Necessary se déclenchent
- 4Onglet Network : aucune requête vers GA4, Meta ou Google Ads
Test après consentement
- 1Ouvrir le site en navigation privée
- 2Cliquer sur « Tout accepter » dans la bannière
- 3Preview GTM : les balises de mesure d'audience et marketing doivent se déclencher
- 4DebugView de GA4 : les événements apparaissent en temps réel
Test d'achat : commande test
Passez une commande test, puis exécutez ceci dans la console :
dataLayer.filter(e => e.event === 'purchase')- transaction_id unique (aucun doublon)
- value correcte (prix total, taxes et livraison comprises)
- currency valide (ISO 4217, p. ex. EUR, USD)
- Tableau items complet, avec tous les produits
Nettoyage final
Une fois le dispositif vérifié, confirmez qu'il ne reste rien qui puisse interférer :
- App « Facebook & Instagram » supprimée (pixel Meta natif)
- App « Google & YouTube » supprimée (tracking Google natif)
- Anciennes apps de tracking supprimées (Trackify, Pixel Perfect, Elevar, etc.)
- Plus aucun script de tracking ajouté à la main dans le thème (Liquid)
- Bannière de cookies et page d'opposition Shopify désactivées (aucune région cochée)
11Dépannage
Vérifier :
- 1App Addingwell installée et active
- 2Boutique connectée dans le tableau de bord Addingwell
- 3Aucun conflit avec un autre script DataLayer
Vérifier :
- Pixel personnalisé actif dans Paramètres → Événements clients
- Autorisation = « Not required »
- Aucune erreur JS dans la console du tunnel de paiement
- DataLayer Monitor actif pour le diagnostic (?awdebug=1)
Vérifier :
- Passerelle cookie-consent_boostecom.liquid présente dans theme.liquid
- Position : après {{ content_for_header }}
- Shopify.loadFeatures OK dans la console
- L'événement CookiebotOnConsentReady se déclenche
Vérifier :
- Pixels natifs encore actifs (Facebook & Instagram, Google & YouTube)
- event_id absent du DataLayer
- Conteneurs GTM importés plusieurs fois
- Supprimer les apps de tracking natives et vérifier l'event_id
Vérifier :
- Pixel personnalisé Addingwell du tunnel de paiement inactif
- Déclencheur purchase absent dans GTM
- Requête sGTM non envoyée (vérifier l'onglet Network)
- Vérifier dans la console : dataLayer.filter(e => ['begin_checkout','purchase'].includes(e.event))
Vérifier :
- Option non activée dans Addingwell > Settings
- DNS du domaine personnalisé sGTM incorrect
- Vérifier le champ shopify_y dans le DataLayer
- Vérifier les enregistrements DNS (CNAME)
Vérifier :
- CBID incorrect dans la variable GTM
- Domaine non valide dans Cookiebot > Settings > Domain Groups
- Balise Cookiebot désactivée dans GTM
Vérifier :
- Comportement normal : l'app embed Klaviyo (le bloc de l'app intégré au thème) se charge au premier rendu
- La passerelle Cookiebot → Shopify Privacy API contrôle le consentement des web pixels Klaviyo
- Vérifier que cookie-consent_boostecom.liquid est installé
- setTrackingConsent doit être appelé après CookiebotOnConsentReady
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.