Plateformes publicitaires et boutiques en ligne

Suivi des conversions en paiement à la livraison et checkouts externes

Suivi des conversions en paiement à la livraison : pourquoi les pixels ratent les commandes COD et celles des checkouts externes, quand envoyer l’achat et comment gérer les commandes refusées.

·Mis à jour le ·11 min de lecture·Par l’équipe ROASaurus

À retenir
  • Les pixels navigateur ratent les commandes qui se terminent en dehors du checkout habituel, comme les formulaires de paiement à la livraison, les checkouts externes, les formulaires de commande et les tunnels de vente.
  • Une commande en paiement à la livraison reste impayée tant que le livreur n’a pas encaissé l’argent : une configuration qui envoie les achats au paiement les déclare donc en retard, voire jamais.
  • Meta rejette les événements dont l’heure date de plus de 7 jours : la plupart des boutiques en paiement à la livraison devraient donc envoyer l’achat à la création ou à la confirmation de la commande.
  • Les commandes refusées restent dans Ads Manager : divisez donc votre ROAS d’équilibre par la part de commandes qui sont payées.
  • Dans ROASaurus, choisissez External / COD checkout dans Store settings pour envoyer les achats Shopify à la création de la commande.

Le suivi des conversions en paiement à la livraison consiste à envoyer chaque achat à vos plateformes publicitaires à partir de la commande elle-même, sur le serveur, plutôt que de compter sur un pixel navigateur placé sur une page de remerciement. Les commandes issues d’applications de paiement à la livraison, de checkouts externes, de formulaires de commande et de tunnels de vente se terminent souvent en dehors du checkout habituel : le pixel les rate donc ou les déclare au mauvais moment.

Ce guide explique pourquoi ces commandes disparaissent et pourquoi le statut de paiement compte. Il compare trois moments pour envoyer l’achat : à la création de la commande, à sa confirmation et à son paiement. Il aborde aussi les commandes refusées et les remboursements, ainsi que la façon dont ROASaurus gère les checkouts externes.

Pourquoi les pixels ratent-ils les commandes en paiement à la livraison ?

Un pixel navigateur déclare un achat quand l’acheteur arrive sur une page qui l’exécute. C’est en général la page de remerciement de votre checkout. Tout parcours de commande qui saute cette page, ou l’exécute sur un autre domaine, perd l’événement d’achat ou le clic publicitaire qui lui correspond.

Parcours de commandeOù la commande est finaliséeCe qui cloche avec un pixel navigateur
Application de formulaire de paiement à la livraisonUn formulaire sur la page produit ; l’application crée la commandeLe checkout de la boutique ne s’exécute jamais, donc son événement d’achat ne se déclenche jamais
Checkout externeUn checkout géré par une autre application, souvent sur un autre domaineVotre pixel peut ne pas s’y charger, et les cookies de clic publicitaire restent sur le domaine de votre boutique
Formulaire de commande ou commande manuelleUn formulaire, un chat ou un appel téléphonique ; l’équipe saisit la commandeIl n’y a pas de session navigateur que le pixel puisse voir
Tunnel de vente avec son propre checkoutUn constructeur de landing pages sur son propre domaineLe clic publicitaire est sur un domaine et l’achat sur un autre
Chaque parcours crée une vraie commande, mais aucun n’exécute la page de remerciement habituelle avec le clic publicitaire attaché.

La commande elle-même n’est jamais perdue. Elle arrive dans votre boutique en ligne ou votre outil de tunnel de vente avec un identifiant de commande, un montant, une adresse e-mail et souvent un numéro de téléphone. C’est pourquoi la solution fiable consiste à envoyer l’achat à partir des données de commande, côté serveur, et à transporter le clic publicitaire jusqu’à la commande. Le suivi côté serveur sur Shopify explique la méthode générale. Cet article traite des commandes qui demandent une attention particulière.

Certaines applications de paiement à la livraison déclenchent aussi leurs propres événements de pixel. Si elles utilisent le même pixel que votre suivi côté serveur mais un identifiant d’événement différent, la plateforme compte la commande deux fois. Désactivez ces événements d’application, ou suivez les étapes pour éviter le double comptage.

Pourquoi le statut de paiement compte

Un paiement par carte est capturé dans le checkout : la commande est donc payée dès qu’elle existe. Une commande en paiement à la livraison est différente. Shopify range le paiement à la livraison parmi les modes de paiement manuels, et ces commandes restent en Payment pending jusqu’à ce que vous les marquiez comme payées. En pratique, cela arrive après l’encaissement par le livreur, ce qui peut prendre des jours. Certaines commandes ne sont jamais payées, car l’acheteur refuse le colis ou n’est pas chez lui.

De nombreuses configurations de suivi envoient l’achat quand la commande est payée, car pour les commandes par carte, c’est le moment le plus sûr. Pour une commande en paiement à la livraison, la même règle fait arriver l’achat des jours trop tard, voire jamais. Le journal ci-dessous montre un cas typique sur une boutique qui envoie les achats au paiement.

14 Oct 10:02 orders/create #4821 $50.00Commande passée en paiement à la livraison, paiement en attente
14 Oct 10:02 PurchaseNon envoyé : cette boutique envoie les achats au paiement
16 Oct 09:40 #4821 shippedColis remis au livreur
22 Oct 15:12 orders/paid #4821Marquée comme payée une fois l’argent reversé par le livreur
22 Oct 15:12 Purchase event_time=14 OctRejeté : l’heure de l’événement date de plus de 7 jours
Exemple : un achat qui attend le paiement. Huit jours séparent la commande du statut payé, et Meta n’accepte pas une heure d’événement antérieure de plus de 7 jours.

WooCommerce fonctionne à l’inverse. Il met les commandes en paiement à la livraison en Processing jusqu’à l’encaissement, sauf les commandes contenant un produit téléchargeable, qui passent en On hold. Une configuration qui envoie les commandes en Processing les envoie donc dès qu’elles sont passées. Vérifiez quel statut votre plateforme donne à ces commandes avant de décider quoi que ce soit d’autre.

Créée, confirmée ou payée : quand envoyer l’achat ?

Trois moments sont possibles. Chacun arbitre entre rapidité et exactitude.

Envoyer l’achat quand la commande estDélai typique après la commandeInclut les commandes jamais payéesRisque principal
CrééeQuelques secondesOui : refus et fausses commandesAds Manager affiche plus de chiffre d’affaires que vous n’en encaissez
Confirmée par votre équipe, par téléphone ou par messageDe quelques heures à un jourRefus uniquementNécessite une étape de confirmation capable de déclencher l’événement
Payée ou livréeDe quelques jours à quelques semainesNonTardif ou perdu : le clic publicitaire sort de la fenêtre d’attribution, ou l’événement est rejeté
Envoyer à la création est rapide, mais compte des commandes qui ne seront jamais payées. Envoyer au paiement est exact, mais tardif.

Pourquoi les événements d’achat tardifs posent problème

Les plateformes publicitaires n’attribuent un achat à une publicité que s’il a lieu dans la fenêtre d’attribution suivant le clic. Avec un réglage d’attribution au clic de 7 jours sur Meta, un achat est attribué à une publicité jusqu’à 7 jours après le clic. La Conversions API de Meta refuse aussi les événements dont l’event_time date de plus de 7 jours, et rejette toute la requête dès qu’un événement est trop ancien. Un achat envoyé au paiement n’a donc que deux mauvaises options :

  • L’envoyer avec l’heure de la commande. Si le paiement est arrivé plus de 7 jours après, Meta le rejette.
  • L’envoyer avec l’heure du paiement. Meta l’accepte, mais le clic publicitaire peut alors dater de plus de 7 jours : l’achat n’est donc pas attribué à la publicité.

La rapidité compte aussi pour l’optimisation. Les campagnes qui optimisent pour les achats apprennent à partir des achats que vous envoyez. Un signal qui arrive avec une semaine de retard renseigne l’algorithme sur l’audience de la semaine dernière.

Boutique exemple : part des commandes en paiement à la livraison marquées comme payées
100%0%
02468101214
Jours après la commande, chiffres illustratifs. Environ la moitié des commandes sont payées au jour 4. Après 7 jours, 28% restent impayées, dont les 18% qui ne seront jamais payées.

Quel moment choisir

Pour la plupart des boutiques en paiement à la livraison, envoyer à la création est le meilleur choix par défaut. Le signal est immédiat, le clic est encore dans la fenêtre et rien n’est rejeté. Le prix à payer : les commandes refusées comptent comme des achats dans Ads Manager. Vous le corrigez dans vos objectifs, comme le montre la section suivante.

Si votre équipe confirme chaque commande par téléphone ou par message avant l’expédition, la confirmation est un bon compromis. Elle écarte les fausses commandes et intervient en général dans la journée. Utilisez-la quand votre propre système peut envoyer l’achat à ce moment-là, par exemple via une API. Les fausses commandes comptent plus qu’il n’y paraît : si la plateforme publicitaire apprend à partir d’elles, elle cherche davantage de personnes qui passent commande sans payer.

Comment gérer les commandes refusées, les annulations et les remboursements

Une fois un achat envoyé, il reste dans Ads Manager. Un colis refusé à la livraison ne le supprime pas. ROASaurus n’envoie pas non plus les remboursements ni les annulations à Meta, TikTok et la plupart des autres plateformes publicitaires : le chiffre d’affaires qu’elles affichent inclut donc des commandes que vous n’avez jamais encaissées. Seules les valeurs Google Ads et Microsoft Advertising peuvent être corrigées après un remboursement, lorsque les corrections de valeur sont activées. La solution consiste à mesurer votre taux de refus et à ajuster les chiffres auxquels vous comparez.

Voici un exemple chiffré sur un mois. Pour faire simple, les prix sont hors TVA.

LigneMontant
Commandes envoyées à Meta à la création200 commandes × $50 = $10,000
Refusées à la porte (18%)36 commandes, $1,800
Livrées et payées164 commandes, $8,200
Coût produit des commandes livrées (30%)−$2,460
Expédition des 200 colis à $6−$1,200
Expédition retour des 36 colis refusés à $6−$216
Frais d’encaissement, $1.50 par commande payée−$246
Manutention, $1 par commande−$200
Bénéfice brut$3,878
Les colis refusés ne rapportent aucun chiffre d’affaires mais coûtent quand même l’expédition dans les deux sens. Les produits refusés retournent en stock : leur coût produit n’est donc pas perdu.

Avec $3,000 de dépenses publicitaires, le même mois paraît très différent selon le chiffre d’affaires utilisé :

3.33ROAS dans Ads Manager : $10,000 ÷ $3,000
2.73ROAS sur les commandes livrées : $8,200 ÷ $3,000
1.29POAS : $3,878 de bénéfice brut ÷ $3,000

Le taux de marge brute sur le chiffre d’affaires livré est de $3,878 ÷ $8,200 = 47.3%, donc le ROAS d’équilibre est de 1 ÷ 0.473 = 2.11. Ce seuil s’applique au chiffre d’affaires livré. Ads Manager compte aussi les commandes refusées : il faut donc le convertir avant de comparer. ROAS d’équilibre explique la formule de base.

Seuil d’équilibre dans Ads Manager=ROAS d’équilibre ÷ taux de paiement
ROAS d’équilibre
1 ÷ taux de marge brute, calculé uniquement sur les commandes payées.
Taux de paiement
La part des commandes qui sont payées, par exemple 82% quand 18% sont refusées.

2.114 ÷ 0.82 = 2.58. Une campagne qui affiche moins de 2.58 dans Ads Manager perd de l’argent, même si elle semble bien au-dessus de 2.11.

Vous pouvez vérifier le résultat directement. Les publicités sont à l’équilibre quand les dépenses publicitaires égalent le bénéfice brut de $3,878, et $10,000 de chiffre d’affaires déclaré ÷ $3,878 = 2.58.

Les taux de refus varient souvent selon la région, le produit et la campagne. Calculez-les par campagne quand vous avez assez de commandes, et utilisez le calculateur de POAS pour vérifier le résultat sur le bénéfice brut.

Remboursements et annulations dans vos propres chiffres

Sur Shopify, les annulations et les remboursements parviennent à ROASaurus par webhook : l’analyse du bénéfice déduit donc les remboursements du chiffre d’affaires. Vous choisissez si les commandes annulées qui n’ont jamais été expédiées comptent, et par défaut elles sont exclues. Une commande annulée déjà expédiée reste comptée, car son expédition vous a quand même coûté de l’argent. Pour les commandes récentes qui peuvent encore revenir, le réglage Predicted returns met de côté une part attendue des ventes jusqu’à l’arrivée des vrais remboursements.

Comment ROASaurus gère le paiement à la livraison et les checkouts externes

Shopify

Chaque boutique Shopify a un Checkout type dans Store settings, avec deux options :

  • Shopify checkout : l’achat est envoyé quand Shopify signale la commande comme payée, via le webhook orders/paid.
  • External / COD checkout : l’achat est envoyé à la création de la commande, via le webhook orders/create. Utilisez-le pour le paiement à la livraison et pour les checkouts externes, comme CheckoutChamp ou Checkify, qui créent eux-mêmes la commande Shopify.

Le réglage s’applique à toutes les commandes de la boutique. Les commandes par carte, payées dans le checkout, sont créées et payées presque au même moment : le choix change donc surtout le moment où les commandes impayées sont envoyées. Chaque commande n’est envoyée qu’une fois. Quand la mise à jour « payée » d’une commande en paiement à la livraison arrive plus tard, aucun second achat n’est envoyé.

L’achat utilise les données propres à la commande : le montant, la devise, les produits, ainsi que l’e-mail, le téléphone et l’adresse de l’acheteur, hachés avant de partir. ROASaurus associe la commande au clic publicitaire grâce à l’identifiant visiteur que son script enregistre sur le panier. Quand une commande ne le porte pas, ROASaurus essaie, dans cet ordre : les jetons de panier et de checkout, l’événement d’achat du checkout, un e-mail que le visiteur a donné plus tôt sur votre site, et la même adresse IP et le même navigateur peu avant la commande, quand un seul visiteur correspond. La page intégration Shopify détaille la configuration complète.

WooCommerce et les autres boutiques en ligne

Le plugin WooCommerce envoie une commande dès qu’elle passe en Processing ou Completed. Les commandes en paiement à la livraison passent en Processing quand elles sont passées : elles sont donc envoyées immédiatement. Les commandes par virement bancaire sont envoyées quand elles passent en Processing. Les autres connecteurs de boutiques en ligne envoient une commande à ces moments :

  • Wix, Squarespace, Ecwid, Lightspeed, CCV Shop et Shopware : quand le statut de paiement de la commande est payé.
  • BigCommerce : quand la commande atteint un statut tel que Awaiting Fulfillment, Awaiting Shipment, Shipped ou Completed.
  • Magento : quand l’état de la commande est Processing ou Complete.
  • PrestaShop : quand la commande est marquée comme valide.
  • Webhook personnalisé et API de commandes : quand votre propre système envoie la commande.

Vérifiez comment votre plateforme marque les commandes en paiement à la livraison. Si elles restent impayées jusqu’à ce que le livreur reverse l’argent, leurs achats arrivent en retard.

Tunnels de vente et votre propre checkout

  1. Ajoutez le script aux pages du tunnel

    Utilisez la même clé de boutique que pour votre boutique en ligne, afin qu’un visiteur garde un seul identifiant visiteur sur les deux domaines.

  2. Listez vos domaines

    Dans Store settings, ajoutez les domaines du tunnel et de la boutique sous Linked domains. Les liens entre ces domaines transportent alors l’identifiant visiteur et les identifiants de clic.

  3. Envoyez les commandes via l’API de commandes

    Si le tunnel prend lui-même la commande, envoyez chaque commande en POST à /api/v1/orders avec le cookie _tl comme visitor_id. Votre système décide du moment : à la création, à la confirmation ou au paiement.

  4. Vérifiez l’Event log

    Quand les premières vraies commandes arrivent, ouvrez l’Event log et vérifiez que chacune a été envoyée à toutes les plateformes connectées.

Une commande issue d’un checkout de tunnel, envoyée à l’API de commandes
POST /api/v1/orders
X-Roasaurus-Key: <store key>
Authorization: Bearer <API key>
Content-Type: application/json

{
  "order_id": "F-20931",
  "created_at": "2026-10-20T14:05:00Z",
  "total": 50.00,
  "currency": "USD",
  "email": "buyer@example.com",
  "phone": "+15555550123",
  "country": "US",
  "visitor_id": "<value of the _tl cookie>",
  "click_ids": { "fbc": "<_fbc cookie>", "fbp": "<_fbp cookie>" },
  "client_ip": "203.0.113.7",
  "user_agent": "Mozilla/5.0 ...",
  "items": [{ "variant_id": "SKU1", "quantity": 1, "price": 50.00 }]
}

L’API de commandes conserve la première copie de chaque identifiant de commande. Si votre système l’appelle à la création puis au paiement, seul le premier appel envoie un achat. Plus de détails dans tunnels de vente et domaines multiples.

Erreurs courantes à éviter

  • Attendre le statut payé sur une boutique en paiement à la livraison. Les achats arrivent avec une semaine de retard ou jamais, et les événements tardifs sont rejetés ou sortent de la fenêtre d’attribution.
  • Comparer le ROAS d’Ads Manager à un seuil d’équilibre calculé pour les commandes payées. Divisez d’abord le seuil d’équilibre par votre taux de paiement.
  • Deux sources pour un même achat. Le pixel propre d’une application de formulaire et vos événements serveur comptent la même commande deux fois. Voir événements d’achat en double.
  • Perdre le clic entre les domaines. Un tunnel sur un autre domaine a besoin du script et des domaines liés, faute de quoi ses commandes arrivent sans clic publicitaire.
  • Laisser de côté les commandes manuelles. Les commandes par téléphone ou par chat n’ont pas de session navigateur, mais elles ont quand même une adresse e-mail ou un numéro de téléphone. Envoyées à partir des données de commande, elles donnent à la plateforme publicitaire de quoi les associer.

Sources

  1. Meta for Developers: Server Event Parameters
  2. Shopify: WebhookSubscriptionTopic (GraphQL Admin API)
  3. Shopify Help Center: Manual payment methods
  4. Shopify Help Center: Understanding your order statuses
  5. WooCommerce: Cash on Delivery documentation

Dans ROASaurus

À lire aussi

Plateformes publicitaires et boutiques en ligneSuivi des conversions CCV Shop : guide de configurationSuivi des conversions CCV Shop : envoyez les commandes payées à Meta et TikTok avec un webhook signé, associez-les aux clics publicitaires, configurez, testez et gérez les paiements tardifs.Plateformes publicitaires et boutiques en ligneConversions améliorées Google Ads sur ShopifyLes conversions améliorées ajoutent des données clients hachées aux achats Google Ads sur Shopify. Comment elles fonctionnent, en quoi elles diffèrent des imports hors ligne, et la configuration.Plateformes publicitaires et boutiques en ligneSuivi des conversions Lightspeed pour les boutiques en ligne eComSuivi des conversions Lightspeed pour eCom (C-Series) : envoyez les commandes payées à Meta et TikTok depuis le serveur, associez-les aux clics publicitaires, configurez et testez.
FAQ

Vos questions, nos réponses

Meta peut-il suivre les commandes en paiement à la livraison ?

Oui, si l’achat est envoyé depuis les données de commande, sur le serveur. Un pixel navigateur rate souvent ces commandes, car de nombreuses applications de paiement à la livraison et de checkouts externes sautent la page de remerciement habituelle.

Dois-je envoyer l’achat à la création ou au paiement de la commande ?

Pour la plupart des boutiques en paiement à la livraison, envoyez-le à la création ou à la confirmation de la commande. Le paiement peut prendre plus d’une semaine, et Meta rejette les événements dont l’heure date de plus de 7 jours. Corrigez plutôt les commandes refusées dans vos objectifs de ROAS.

Les commandes refusées en paiement à la livraison comptent-elles comme des achats dans Ads Manager ?

Oui. Un achat envoyé reste dans Ads Manager quand le colis est refusé. Divisez votre ROAS d’équilibre par la part de commandes payées pour obtenir le seuil d’équilibre en termes d’Ads Manager.

Quel type de checkout choisir dans ROASaurus ?

Sur Shopify, choisissez External / COD checkout pour le paiement à la livraison et pour les checkouts externes, comme CheckoutChamp ou Checkify, qui créent la commande Shopify. Les achats sont alors envoyés à la création de la commande plutôt qu’à son paiement.

Comment suivre les commandes d’un tunnel de vente avec son propre checkout ?

Ajoutez le script ROASaurus aux pages du tunnel, listez les domaines du tunnel et de la boutique sous Linked domains, et envoyez les commandes du tunnel à l’API de commandes avec l’identifiant visiteur.

Chaque vente, rattachée à la publicité qui l’a générée

Suivi côté serveur, bénéfice et valeur vie client dans une seule application. Essai gratuit de 14 jours, sans carte bancaire.

Démarrez votre essai gratuit →