Vous avez activé le Conversions API (CAPI) Meta et l'Events API TikTok. Events Manager affiche des achats en hausse. L'algorithme scale. Puis Shopify vous montre moins de commandes que Meta ne compte de conversions — ou l'inverse.
Dans la majorité des cas, le problème n'est pas « iOS 14 » mais trois détails techniques mal implémentés : event_id, identifiants de matching, et absence de tests avant de scaler.
Architecture recommandée pour une boutique Shopify
Le flux fiable pour un achat :
- Le client paie → Shopify émet un webhook
orders/paid(ouorders/createselon votre logique) - Votre serveur (ou un connecteur) reçoit la commande avec email, montant, devise,
fbp/fbc/ttclidcapturés au checkout - Le serveur envoie un événement Purchase à Meta CAPI et TikTok Events API avec le même
event_id - Le pixel navigateur envoie le même Purchase avec le même
event_id(dedup Meta/TikTok côté plateforme)
Ne déclenchez pas le Purchase CAPI uniquement depuis le pixel client : un ad-blocker ou une fermeture d'onglet avant la page de remerciement = achat invisible côté serveur si vous n'avez pas le webhook.
Meta CAPI : les champs qui font monter l'Event Match Quality
Meta affiche un score Event Match Quality (EMQ) par type d'événement. Un EMQ faible = matching probabiliste = optimisations instables.
Priorité des identifiants (achat Shopify)
| Champ | Source typique | Impact matching |
|---|---|---|
fbc | Cookie _fbc ou fbclid de l'URL au clic | Très élevé pour l'attribution clic |
fbp | Cookie _fbp posé par le pixel | Élevé |
em | Email checkout, SHA-256 normalisé (minuscules, trim) | Élevé |
ph | Téléphone E.164 hashé | Moyen à élevé |
client_ip_address + client_user_agent | Requête HTTP au moment de l'achat | Secours utile |
Erreurs courantes :
- Envoyer l'email en clair — Meta exige le hash SHA-256
- Oublier de normaliser (espaces, majuscules, +33 vs 0…)
- Ne pas transmettre
fbcparce que le checkout est sur un domaine Shopify sans persistence du cookie — solution : passerfbcliden note d'attribut ou cookie first-party avant checkout - Utiliser l'email de facturation différent de celui saisi au checkout Meta
event_id et dedup Meta
Pour chaque achat, générez un identifiant stable partagé entre pixel et CAPI. Bonnes pratiques :
event_id = shopify_order_idouorder_id + "_purchase"— unique, reproductible, traçable dans les logs- Même
event_name(Purchase) des deux côtés - Même
event_time(timestamp Unix) à quelques secondes près — un écart de plusieurs heures peut empêcher la dedup - Même
valueetcurrency— un pixel à 49,90 € et un CAPI à 39,92 € après remise = deux événements distincts aux yeux de Meta
Dans Events Manager → Diagnostics, vérifiez la ligne Deduplication : un taux élevé d'événements « browser + server » dedupliqués est sain. Si seuls les événements server remontent, votre pixel est probablement bloqué — ce n'est pas grave si le CAPI est complet, mais l'EMQ peut baisser sans fbp.
TikTok Events API : spécificités vs Meta
TikTok utilise la même logique de dedup via event_id. Identifiants clés :
ttclid— équivalent du fbclid, à capturer sur la landing et persister jusqu'à l'achat- Email et téléphone hashés (mêmes règles de normalisation)
external_id— ID client Shopify hashé, utile pour les achats récurrents
TikTok Events Manager expose un indicateur de qualité des événements (libellé variable selon l'interface). Les mêmes principes s'appliquent : sans ttclid ni email, TikTok devine — et votre CPA optimisé sur du bruit.
Multi-plateforme : un webhook, plusieurs destinations
Une commande Shopify ne doit pas déclencher deux fois le CAPI par erreur de retry webhook. Pattern sûr :
- Idempotence : avant envoi, vérifier en base ou cache « order X déjà forwardé »
- Répondre 200 au webhook Shopify même si Meta timeout — puis retry avec backoff côté worker
- Logger
event_id, statut HTTP Meta/TikTok et payload hashé pour debug sans stocker de PII en clair
Checklist de validation avant de scaler le budget
1. Test Events (Meta)
Utilisez le code de test Events Manager. Passez une commande réelle ou sandbox. Confirmez :
- Événement Purchase reçu en Browser et Server
- Paramètres
em,fbc,fbpprésents côté server - Message de dedup OK pour le même
event_id
2. TikTok Test Event
Même procédure dans TikTok Events Manager. Vérifiez ttclid sur une commande issue d'un clic TikTok Ads (pas du trafic direct).
3. Réconciliation Shopify (7 jours glissants)
Comparez :
- Commandes payées Shopify (filtre date paiement)
- Conversions Purchase Meta (fenêtre 7j click, 1j view — ou votre config)
- Conversions TikTok
Un écart de ±15 à 25 % peut être normal (attribution vs commandes réelles). Un écart de ×2 signale dedup cassée ou double envoi serveur. Un écart massif côté « moins que Shopify » signale EMQ faible ou CAPI incomplet.
4. Valeur et remboursements
Envoyez le montant net payé (après remise, hors shipping si vous ne l'incluez pas dans votre définition de ROAS). Quand une commande est remboursée, certaines stacks envoient un événement d'annulation — si vous ne le faites pas, Meta continue d'optimiser sur du CA fantôme.
Erreurs qui coûtent cher (vue terrain)
- Double Purchase server — webhook + cron + pixel server-side sans idempotence → ROAS gonflé, algo scale dans le rouge
- event_id aléatoire à chaque retry — dedup impossible, conversions multipliées
- CAPI seul sans pixel — acceptable pour l'achat, mais perte des micro-événements funnel (ViewContent, AddToCart) pour le retargeting
- Ignorer Consent Mode / bandeau cookies — risque compliance + données partielles en UE ; le server-side n'exempte pas du consentement marketing
- Tester uniquement en navigation privée sans fbclid — fausse impression d'un EMQ « cassé »
Ce qu'une stack clé en main doit gérer pour vous
Si vous implémentez à la main, comptez maintenance continue (rotations token, changements API, monitoring). Une solution intégrée au stack Shopify + pub doit au minimum :
- Capturer
fbp,fbc,ttclidau parcours checkout - Forwarder
orders/paidavec hash PII conforme - Dedupliquer pixel + server via
event_idstable - Exposer un statut de santé (dernier envoi OK, EMQ indicatif, erreurs API)
ProfitPilotPro inclut ce forwarding Meta CAPI + TikTok Events API depuis votre boutique Shopify, avec dedup et hashing gérés côté serveur — en complément du calcul profit net sur les mêmes commandes.
Pour aller plus loin sur le contexte iOS et le comparatif client vs server, lisez nos guides tracking server-side et iOS 14 et ROAS Meta.
Liste d'attente si vous n'avez pas encore accès — ou activez le module tracking depuis votre dashboard ProfitPilotPro.