Shopify
Guide technique complet : la plateforme e-commerce source de toutes les donnees. Architecture store, nettoyage pre-installation, checkout, pixels, Privacy API, markets multi-devises et verification.
1Role / Objectif
Shopify est la source de toutes les donnees e-commerce. Le store genere les events utilisateur que le reste du stack (Addingwell, GTM, sGTM) collecte et distribue.
- Source des events e-commerce (page_view, add_to_cart, purchase...)
- Checkout proprietaire avec Custom Pixel API
- Shopify Privacy API pour le controle du consentement pixels
- Markets pour le multi-devises et multi-langues
- Customer Events pour les web pixels et custom pixels
Shopify ne gere aucun tag marketing directement. Tout passe par Addingwell (DataLayer + GTM injection) puis GTM (tags + consent).
2Architecture du Store
Couches du stack sur Shopify
Shopify Store
├── Theme (Storefront)
│ └── Pages publiques (home, collection, product, cart)
│
├── Checkout (iframe isole)
│ └── Extensible via Custom Pixels
│
├── Customer Events (Settings)
│ ├── Web Pixels (JS sandbox)
│ └── Custom Pixels (code libre)
│
├── Apps installees
│ ├── Addingwell (DataLayer + GTM + sGTM)
│ ├── Cookiebot (CMP via GTM)
│ └── Klaviyo (natif Shopify)
│
└── Privacy API
└── Consent management pour les pixelsPoints cles
- Le theme n'a aucun role dans le tracking (pas de code Liquid custom)
- Le checkout est isole — seuls les Custom Pixels y accedent
- Addingwell gere toute la couche DataLayer et GTM automatiquement
- La Privacy API controle uniquement les web/custom pixels Shopify
3Nettoyage Pre-installation
Avant d'installer le stack de tracking, il est indispensable de nettoyer les systemes existants. Deux systemes de tracking actifs en parallele = doublons d'events = donnees corrompues.
Regle absolue
Nettoyer avant d'installer le stack. Un ancien pixel ou une app tracking oubliee peut corrompre toutes les donnees.
Apps a supprimer
| App | Raison |
|---|---|
| Facebook & Instagram (Meta natif) | Pixel Meta integre, conflit avec Meta CAPI via GTM |
| Google & YouTube (Google natif) | Tracking Google integre, conflit avec GA4 + Google Ads via GTM |
| Trackify, Pixel Perfect, Elevar, etc. | Apps tracking tierces, doublons garantis |
| Scripts tracking en dur dans le theme | <script> injectes manuellement dans theme.liquid |
Ou verifier
- 1Shopify Admin > Settings > Apps and sales channels — desinstaller les apps tracking listees ci-dessus
- 2Shopify Admin > Settings > Customer events (custom pixels) — supprimer les anciens custom pixels
- 3theme.liquid — chercher et supprimer les patterns fbq('init', ...), gtag('config', ...) et tout script tracking injecte manuellement
Desactiver la confidentialite native Shopify
Conflit consent
Le consent est gere par Cookiebot via GTM, pas par Shopify. La banniere et la page d'opposition natives doivent etre desactivees pour eviter les conflits (double banniere, signaux contradictoires).
Aller dans Shopify Admin > Settings > Confidentialite des clients :
| Parametre | Valeur requise |
|---|---|
| Banniere cookies — Parametres automatises | OFF |
| Banniere cookies — Regions | Non visible dans aucune region (decocher toutes les regions) |
| Page opposition — Parametres automatises | OFF |
| Page opposition — Regions | Non active dans aucune region (decocher toutes les regions) |
| Politique de confidentialite | Peut rester "Automatisee" (contenu legal, n'interfere pas) |
| Hebergement des donnees | Union europeenne (coherent avec CDS Region .eu dans Cookiebot) |
4DataLayer Events
Le DataLayer est genere automatiquement par Addingwell. Aucun code custom n'est necessaire dans le theme.
Events par page
| Page | Events | Donnees cles |
|---|---|---|
| Toutes | page_view | URL, titre, referrer |
| Collection | view_item_list, select_item | Liste produits, position |
| Produit | view_item | SKU, prix, variante |
| Produit / Collection | add_to_cart | Item, quantite, valeur |
| Panier | view_cart, remove_from_cart | Items, valeur totale |
| Checkout | begin_checkout | Items, valeur (Custom Pixel) |
| Checkout | add_shipping_info, add_payment_info | Methode livraison/paiement |
| Thank you | purchase | Transaction ID, revenue, items (Custom Pixel) |
Source unique
Tous les events passent par le meme DataLayer. Il n'y a pas de double source. Addingwell est le seul injecteur.
5Checkout Extensibility
Le checkout Shopify est un iframe isole. Le JavaScript du theme ne peut pas y acceder directement. Shopify propose deux mecanismes pour le tracking checkout :
| Mecanisme | Acces | Usage |
|---|---|---|
| Web Pixels | Sandbox JS (limite) | Pixels standards (Meta) |
| Custom Pixels | Code libre (complet) | DataLayer custom, GTM events |
Custom Pixel Addingwell
Addingwell utilise un Custom Pixel pour capturer begin_checkout et purchase dans le checkout, puis les envoie au DataLayer GTM.
Permission : Not required
Le Custom Pixel Addingwell utilise "Not required". C'est intentionnel : le consent est gere par Cookiebot dans GTM (Consent Mode v2), pas par la Shopify Privacy API.
Checkout sandbox — limitation de test
GTM Preview ne fonctionne pas sur le checkout
Le checkout Shopify est un environnement sandbox isole. GTM Preview n'y fonctionne pas. Verifier les events begin_checkout et purchase uniquement via DevTools > Network et la console JavaScript.
6Web Pixels vs Custom Pixels
| Web Pixels | Custom Pixels | |
|---|---|---|
| Environnement | Sandbox JS (worker) | Sandbox JS (iframe) |
| Acces DOM | Non | Non |
| Acces cookies | Non | Non |
| Code custom | Non (config uniquement) | Oui (code libre) |
| Consent | Shopify Privacy API | Configurable (Required / Not required) |
| Exemple | Klaviyo, Meta nativ | Addingwell DataLayer |
Les web pixels sont geres par les apps Shopify (Klaviyo, etc.). Les custom pixels sont configures manuellement dans Settings → Customer Events.
7Shopify Privacy API
Role
La Shopify Customer Privacy API controle quels web pixels et custom pixels sont autorises a fire. Elle est synchronisee avec Cookiebot via le bridge.
Flux de consentement
Cookiebot (CMP dans GTM)
↓
Bridge cookie-consent_boostecom.liquid
↓
Shopify.customerPrivacy.setTrackingConsent({
marketing: true/false
})
↓
Web pixels fires / bloquesCe que la Privacy API controle
| Element | Controle par Privacy API | Controle par Consent Mode GTM |
|---|---|---|
| Web pixels (Klaviyo, Meta natif) | Oui | Non |
| Custom pixels | Si permission = Required | Non |
| Tags GTM (GA4, Meta CAPI, etc.) | Non | Oui |
| Scripts theme | Non | Non |
Banniere Shopify native
La banniere cookies et la page d'opposition Shopify doivent etre desactivees (aucune region cochee) pour eviter les conflits avec Cookiebot. Voir la section Nettoyage Pre-installation pour le detail.
8Markets & Multi-devises
Shopify Markets gere le multi-devises et multi-langues. Le tracking doit supporter les conversions dans la devise locale.
Impact sur le tracking
- Addingwell inclut la devise (currency) dans chaque event e-commerce
- Les valeurs (value, price) sont en devise locale du visiteur
- GA4 supporte nativement le multi-devises
- Meta CAPI recoit la devise correcte via sGTM
- Pas de configuration supplementaire necessaire
Le DataLayer Addingwell gere automatiquement la devise locale. Aucune configuration supplementaire n'est necessaire pour les markets.
9Configuration
Pre-requis
- Store Shopify actif (plan Basic ou superieur)
- Acces admin avec permission Apps et Customer Events
- Domaine custom configure
- Nettoyage pre-installation effectue (voir section 3)
Apps a installer
- 1Addingwell — DataLayer GA4, injection GTM, bypass adblockers, cookie restore
- 2Cookiebot — CMP RGPD (banniere consent, configure via GTM)
Features Addingwell a activer
| Feature | Role |
|---|---|
| DataLayer GA4 | 11+ events e-commerce automatiques |
| GTM injection | GTM sur toutes les pages du store |
| Custom Pixel checkout | Events checkout (begin_checkout, purchase) |
| Bypass adblockers | CDN proxy, contourne les bloqueurs |
| Cookie restore | Bypass ITP Safari, attribution longue duree |
Custom Pixel checkout
- 1Aller dans Shopify Admin > Settings > Customer Events
- 2Add custom pixel > coller le code fourni par Addingwell
- 3Permission : "Not required" (pas "Required") — le consent est gere par GTM, pas la Privacy API
Serveur sGTM
- 1Creer le serveur dans Addingwell
- 2Configurer le custom domain (ex: tags.ma-boutique.com)
- 3Region recommandee : Europe multi-region
- 4DNS : CNAME fourni par Addingwell > Server > Custom Domain
Verifications post-install
- 1Addingwell connecte et actif dans le dashboard
- 2Custom Pixel Addingwell present dans Settings → Customer Events
- 3Permission Custom Pixel = "Not required"
- 4Banniere Shopify native desactivee (Settings → Customer Privacy)
- 5Bridge consent present dans theme.liquid (cookie-consent_boostecom.liquid)
- 6DataLayer Monitor custom pixel installe dans Customer Events
- 7Custom domain sGTM repond avec statut 200
10Verification
Verifier le DataLayer
- 1Ouvrir la console navigateur sur le store
- 2Taper dataLayer et verifier la presence des events
- 3Naviguer : home → collection → produit → panier
- 4Verifier page_view, view_item_list, view_item, add_to_cart, view_cart
- 5Completer un checkout test → verifier begin_checkout, purchase
Verifier les Custom Pixels
- 1Admin Shopify → Settings → Customer Events
- 2Verifier que le Custom Pixel Addingwell est present et actif
- 3Verifier la permission = "Not required"
- 4Verifier que le DataLayer Monitor est present et actif
- 5Pas d'autre custom pixel en conflit
Verifier la Privacy API
- 1Console navigateur → Shopify.customerPrivacy.getTrackingConsent()
- 2Avant consent : marketing = "no_interaction"
- 3Apres acceptation Cookiebot : marketing = "yes"
- 4Apres refus Cookiebot : marketing = "no"
Test pre-consent (navigation privee)
- 1Ouvrir le site en navigation privee
- 2Cliquer "Tout refuser" dans la banniere Cookiebot
- 3GTM Preview : verifier que seuls les tags Necessary se declenchent
- 4Network : aucune requete vers GA4, Meta, Google Ads
Test post-consent
- 1Ouvrir le site en navigation privee
- 2Cliquer "Tout accepter" dans la banniere
- 3GTM Preview : tags analytics et marketing doivent se declencher
- 4GA4 DebugView : events visibles en temps reel
Test purchase — commande test
Effectuer un achat test, puis executer dans la console :
dataLayer.filter(e => e.event === 'purchase')
- transaction_id unique (aucun doublon)
- value correcte (prix total avec taxes et livraison)
- currency valide (ISO 4217 — ex : EUR, USD)
- items array complet avec tous les produits
Nettoyage final
Apres verification du stack, confirmer le nettoyage des elements qui peuvent interferer :
- App "Facebook & Instagram" supprimee (pixel Meta natif)
- App "Google & YouTube" supprimee (tracking Google natif)
- Anciennes apps tracking supprimees (Trackify, Pixel Perfect, Elevar, etc.)
- Aucun script tracking manuel dans le theme (liquid)
- Banniere cookies + page opposition Shopify desactivees (aucune region cochee)
11Troubleshooting
Verifier :
- 1App Addingwell installee et active
- 2Store connecte dans le dashboard Addingwell
- 3Pas de conflit avec un autre script DataLayer
Verifier :
- Custom Pixel actif dans Settings → Customer Events
- Permission = "Not required"
- Pas d'erreur JS dans la console du checkout
- DataLayer Monitor actif pour diagnostiquer (?awdebug=1)
Verifier :
- Bridge cookie-consent_boostecom.liquid dans theme.liquid
- Position : apres {{ content_for_header }}
- Shopify.loadFeatures ok dans la console
- Event CookiebotOnConsentReady fire
Verifier :
- Pixels natifs encore actifs (Facebook & Instagram, Google & YouTube)
- event_id non transmis dans le DataLayer
- Containers GTM importes plusieurs fois
- Supprimer les apps tracking natives et verifier l'event_id
Verifier :
- Custom pixel checkout Addingwell non actif
- Trigger purchase absent dans GTM
- Requete sGTM non envoyee (verifier Network)
- Verifier via la console : dataLayer.filter(e => ['begin_checkout','purchase'].includes(e.event))
Verifier :
- Activation manquante dans Addingwell > Settings
- DNS du custom domain sGTM incorrect
- Verifier le champ shopify_y dans le DataLayer
- Verifier les enregistrements DNS (CNAME)
Verifier :
- CBID incorrect dans la variable GTM
- Domaine non valide dans Cookiebot > Settings > Domain Groups
- Tag Cookiebot desactive dans GTM
Verifier :
- Comportement normal — l'app embed Klaviyo se charge au premier rendu
- Le bridge Cookiebot → Shopify Privacy API controle le consent pour les web pixels Klaviyo
- Verifier que cookie-consent_boostecom.liquid est installe
- setTrackingConsent doit etre appele apres CookiebotOnConsentReady