- Le suivi côté serveur WooCommerce envoie chaque commande payée, à partir des propres données de commande de la boutique, à Meta, TikTok et d’autres plateformes publicitaires : un achat est donc compté même quand le pixel navigateur ne se déclenche jamais.
- ROASaurus considère une commande WooCommerce comme payée quand son statut est processing ou completed, ce qui inclut les commandes en paiement à la livraison et les virements bancaires une fois que vous les confirmez.
- Le plugin ROASaurus enregistre l’identifiant de visiteur et les cookies de clic publicitaire sur chaque commande au checkout : la commande est ainsi rattachée précisément à son clic publicitaire.
- Sans le plugin, les webhooks livrent quand même chaque commande payée, mais il n’y a pas de rapprochement via la page de remerciement : les commandes ne sont rattachées que par une adresse e-mail donnée plus tôt sur le site ou par une adresse IP et un navigateur uniques.
- Sur WooCommerce, le script ROASaurus suit les plugins de consentement qui utilisent la WP Consent API, comme Complianz et CookieYes, ainsi que les bandeaux Cookiebot, OneTrust et IAB TCF.
Le suivi côté serveur WooCommerce envoie chaque commande payée, à partir des données de commande de votre boutique, à Meta, TikTok et d’autres plateformes publicitaires, au lieu de s’appuyer uniquement sur un pixel dans le navigateur de l’acheteur. L’achat est remonté même quand un bloqueur de publicités arrête le pixel ou que l’acheteur n’atteint jamais la page de remerciement.
Ce guide explique pourquoi les boutiques WooCommerce perdent des conversions, quelles données de commande WooCommerce vous fournit, et les deux façons de connecter ROASaurus : le plugin WordPress ou les webhooks. Il aborde ensuite le rapprochement, le consentement, la configuration et les tests. Pour comprendre le principe général, lisez ce qu’est le suivi côté serveur.
Pourquoi les boutiques WooCommerce perdent-elles des conversions ?
Un pixel navigateur ne remonte un achat que si le script du pixel se charge, que l’acheteur atteint la page de remerciement et que le navigateur envoie l’événement. Chaque étape peut échouer. La commande elle-même reste dans votre base de données, car WooCommerce l’enregistre sur le serveur.
| Ce qui se passe | Pixel navigateur | Les données de commande dans WooCommerce |
|---|---|---|
| L’acheteur paie par redirection (par exemple PayPal ou une application bancaire) et ferme l’onglet | Pas de page de remerciement, pas d’événement d’achat | Commande payée, statut processing |
| Un bloqueur de publicités ou un réglage de confidentialité bloque le script du pixel | Pas d’événement d’achat | Commande payée |
| Le visiteur refuse les cookies marketing | Le pixel ne doit pas se charger | Commande payée |
| Un virement bancaire est confirmé trois jours plus tard | Aucun navigateur n’est ouvert à ce moment-là | Le statut passe de on hold à processing |
| Un plugin de cache ou d’optimisation des scripts retarde le pixel | L’événement peut arriver en retard ou manquer | Commande payée |
Les achats manquants font deux types de dégâts. La plateforme publicitaire optimise sur moins de conversions, et vos rapports montrent un rendement plus faible que celui que vous obtenez réellement. Voici le second effet en chiffres, pour une boutique d’exemple dont le ROAS d’équilibre est de 2.2 :
| Boutique d’exemple, un mois | Pixel seul | Toutes les commandes payées |
|---|---|---|
| Dépenses publicitaires Meta | $8,000 | $8,000 |
| Achats issus de clics Meta | 260 | 320 |
| Chiffre d’affaires à $60 par commande | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Par rapport à l’équilibre (2.2) | On dirait une perte | Rentable |
Ce que WooCommerce vous fournit : commandes, webhooks et API REST
Quels statuts de commande comptent comme payés ?
WooCommerce décrit processing comme un paiement reçu, avec la commande en attente d’expédition. ROASaurus envoie les commandes au statut processing ou completed et ignore les commandes pending payment, on hold, failed, cancelled et refunded. Deux moyens de paiement demandent de l’attention :
- Paiement à la livraison. WooCommerce place ces commandes en processing jusqu’à l’encaissement du paiement : ROASaurus les envoie donc dès qu’elles sont passées. Les commandes contenant un produit téléchargeable font exception : elles passent en on hold. Voir le suivi des commandes en paiement à la livraison pour comprendre ce que cela implique pour les retours et les refus.
- Virement bancaire. WooCommerce place ces commandes en on hold pendant que vous vérifiez le paiement. ROASaurus les envoie quand vous les passez en processing.
Webhooks
Un webhook est un message que WooCommerce envoie à un autre système quand quelque chose change. Vous le créez sous WooCommerce › Settings › Advanced › Webhooks. Pour un topic de commande, la charge utile est le même objet commande que renvoie l’API REST. Chaque envoi comporte un en-tête X-WC-Webhook-Signature : un hachage HMAC-SHA256 en base64 de la charge utile, calculé avec le secret que vous choisissez. ROASaurus vérifie cette signature avant d’accepter une commande.
Deux détails comptent en pratique. WooCommerce livre les webhooks en arrière-plan, par défaut avec WP-Cron : un envoi peut donc être retardé quand cette file prend du retard. Et WooCommerce désactive un webhook après plus de cinq échecs d’envoi consécutifs.
API REST
L’API REST permet à ROASaurus de demander lui-même les commandes. Avec une clé d’API en lecture seule, ROASaurus demande toutes les 5 minutes les commandes processing et completed modifiées depuis sa dernière vérification, avec 30 minutes de chevauchement. Les commandes qu’il possède déjà sont ignorées. Cela rattrape toute commande qu’un webhook aurait manquée.
| Champ de la commande | Ce que ROASaurus en fait |
|---|---|
id | Devient l’identifiant d’événement order-1042, partagé par les événements serveur et navigateur |
total | La valeur de l’achat : le total général, taxes et frais d’expédition inclus |
| E-mail, téléphone, nom, ville, région, code postal et pays de facturation | Hachés avec SHA-256 et envoyés comme données client |
customer_ip_address, customer_user_agent | Envoyés avec l’événement et utilisés pour associer la commande à un visiteur |
line_items | Identifiants de produit (l’identifiant de variation quand il y en a un), quantités et prix |
date_paid_gmt | L’heure de l’événement pour les commandes issues d’un webhook ou de l’API REST (la date de création quand il n’y a pas de date de paiement) |
meta_data | Avec le plugin : l’identifiant de visiteur et les cookies Meta et TikTok |
Plugin ou webhooks : deux façons de se connecter
Les deux connexions envoient chaque commande payée. Elles diffèrent par la qualité du lien entre chaque commande et le clic publicitaire qui a amené l’acheteur.
| Plugin ROASaurus | Webhooks uniquement | |
|---|---|---|
| Ce que vous installez | Un plugin WordPress (PHP 7.4 et WooCommerce 6.0 ou plus récent) | Rien : un webhook dans les réglages WooCommerce |
| Comment les commandes arrivent | Le plugin envoie chaque commande payée à l’API de commandes de ROASaurus | WooCommerce envoie Order updated ; vérification facultative via l’API REST toutes les 5 minutes |
| Script de suivi | Chargé par le plugin sur chaque page | Vous l’ajoutez vous-même, par exemple avec le plugin WPCode ou dans votre thème |
| Identifiant de visiteur et cookies de clic sur la commande | Oui, enregistrés au checkout (checkout classique et par blocs) | Non |
| Achat navigateur sur la page de remerciement | Oui, avec le même identifiant d’événement que l’événement serveur | Non |
| Rapprochement via la page de remerciement | Oui | Non |
Vous pouvez utiliser les deux en même temps. Le plugin enregistre l’identifiant de visiteur sur la commande sous forme de métadonnée de commande, et la charge utile du webhook le transporte. ROASaurus enregistre chaque commande une seule fois, selon son identifiant de commande WooCommerce : le plugin et le webhook ne créent donc jamais deux achats. Le plugin déclare aussi la prise en charge du stockage des commandes haute performance (High-Performance Order Storage) de WooCommerce.
Comment une commande WooCommerce est-elle associée au clic publicitaire ?
Une plateforme publicitaire ne peut attribuer un achat à une publicité que si elle peut relier les deux. ROASaurus y parvient en reliant la commande au visiteur qui a cliqué sur la publicité, et ce visiteur porte les identifiants de clic (comme fbclid et ttclid) et les paramètres UTM de l’arrivée. Il essaie ces méthodes dans l’ordre et s’arrête à la première qui fonctionne :
- L’identifiant de visiteur enregistré sur la commande. Uniquement avec le plugin. C’est un lien exact.
- L’achat navigateur sur la page de remerciement, qui porte le même identifiant de commande. Uniquement avec le plugin.
- Une adresse e-mail hachée que le visiteur a donnée plus tôt sur votre site, par exemple dans un formulaire de popup Klaviyo, Attentive ou Wisepops, ou via un appel Identify.
- La même adresse IP et le même navigateur, vus de 3 heures avant à 15 minutes après la commande, mais seulement quand un seul visiteur correspond. Sur les réseaux partagés, comme les bureaux et les opérateurs mobiles, plusieurs visiteurs partagent souvent la même adresse IP, et ROASaurus ne devine alors pas.
ROASaurus attend brièvement avant d’envoyer chaque achat, afin que l’événement de la page de remerciement puisse arriver en premier. Si la commande n’est toujours pas rapprochée, il réessaie au moment de l’envoi. La page Orders affiche le résultat de chaque commande dans la colonne Matched by. Les commandes rattachées grâce à l’identifiant de visiteur du plugin affichent cart, le même libellé que les commandes Shopify.
| Envoyé à Meta pour la commande 1042 | Rapprochée (plugin) | Non rapprochée (webhooks uniquement) |
|---|---|---|
Identifiant d’événement order-1042 | Oui | Oui |
| E-mail, téléphone, nom et adresse hachés | Oui | Oui |
| Adresse IP et navigateur de la commande | Oui | Oui |
Identifiant de clic Meta et identifiant navigateur (fbc, fbp) | Oui | Non |
Identifiant de visiteur haché (external_id) | Oui | Non |
| Le clic publicitaire dans l’attribution ROASaurus | Campagne et publicité du clic | Affichée comme directe ou inconnue |
Ces identifiants de clic améliorent le taux de correspondance de Meta pour l’événement. Event Match Quality explique comment Meta les note.
Le consentement sur WooCommerce
Chaque boutique dans ROASaurus dispose du réglage Respect visitor consent, activé par défaut. Sur WooCommerce, le script ROASaurus lit le choix du visiteur dans la WP Consent API, que renseignent les plugins de consentement comme Complianz et CookieYes. Il lit aussi Cookiebot, OneTrust, les bandeaux IAB TCF et Google consent mode. Tant que le visiteur n’a pas accepté les cookies marketing, le script ne définit aucun identifiant visiteur et ne charge aucun pixel navigateur.
Quand un visiteur refuse, le script ne définit aucun identifiant visiteur, ne conserve aucun identifiant de clic et ne déclenche aucun pixel navigateur, et le plugin n’enregistre aucun cookie de suivi sur la commande. La commande payée est tout de même envoyée depuis le serveur à vos plateformes publicitaires connectées, avec les données client hachées issues de la commande ainsi que l’adresse IP et le navigateur de la commande. Si votre conseil juridique estime que les événements d’achat nécessitent aussi un consentement préalable, contactez ROASaurus avant d’activer les achats côté serveur. La page d’aide sur le consentement donne les détails, et l’article sur Consent Mode v2 et le RGPD couvre le contexte juridique.
Comment configurer le suivi côté serveur WooCommerce
Voici les étapes pour la voie du plugin :
- Ajoutez la boutique
Dans ROASaurus, allez dans Add a store, choisissez WooCommerce et saisissez le domaine que vos clients visitent.
- Créez une clé API
Ouvrez Store settings et, sous Orders API, cliquez sur Create API key. Copiez la clé tout de suite : elle ne s’affiche qu’une seule fois, à côté de votre clé de boutique. Le point de terminaison est l’adresse qui précède
/api/v1/orderssur cette page. - Installez le plugin
Téléchargez le plugin et envoyez le fichier zip dans WordPress sous Plugins › Add New Plugin › Upload Plugin, puis activez-le.
- Saisissez les clés
Sous WooCommerce › ROASaurus, saisissez le point de terminaison, la clé de boutique et la clé d’API, puis enregistrez.
- Connectez vos plateformes publicitaires
Dans Tracking & platforms, utilisez Connect with Facebook ou Add pixel pour Meta, TikTok et les autres. Cochez l’option qui charge aussi le pixel navigateur, afin que l’achat de la page de remerciement soit dédupliqué avec l’événement serveur.
- Configurez le consentement et testez
Bloquez le script dans votre outil de consentement jusqu’à ce que le visiteur accepte les cookies marketing, puis passez une commande de test.
Sans le plugin, ajoutez la balise de script de Tracking & platforms à chaque page, puis créez le webhook. L’onglet Connection de votre boutique affiche l’URL de votre webhook. Gardez-la privée : toute personne qui possède l’URL peut envoyer des commandes à votre boutique.
WooCommerce › Settings › Advanced › Webhooks › Add webhook Status Active Topic Order updated Delivery URL (your webhook URL from the Connection tab) Secret (a secret of your choice; paste the same one in ROASaurus) API version WP REST API Integration v3
Pour la sauvegarde, créez une clé sous WooCommerce › Settings › Advanced › REST API avec un accès en lecture. Collez la clé et le secret client dans l’onglet Connection, enregistrez, puis cliquez sur Test connection. Fetch orders now récupère immédiatement les commandes payées récentes. La page de l’intégration WooCommerce liste toutes les options au même endroit.
Comment tester le suivi côté serveur WooCommerce ?
Testez d’abord le côté navigateur, puis passez une commande et suivez-la jusqu’aux plateformes publicitaires.
- Ouvrez votre boutique avec
?roasaurus=connecteddans l’adresse. Une alerte confirme que le script fonctionne. Avec?roasaurus=debug, le script écrit dans la console du navigateur ce qu’il envoie. - Dans l’Event log, sous Collected events, les vues de page doivent afficher un identifiant visiteur.
- Passez une commande de test. Le paiement à la livraison est le plus rapide, car la commande passe tout de suite en processing.
- Dans l’onglet Connection, Last order received affiche l’heure de la dernière commande.
- Dans l’Event log, sous Server deliveries, chaque plateforme connectée a une ligne avec le statut sent et la réponse de la plateforme.
PageView visitor 3f9c2a1eScript chargé avec consentementPurchase order-1042Page de remerciement, pixels navigateur déclenchésorder 1042 processingReçu du pluginMeta Purchase sentMême identifiant d’événement, dédupliquéTikTok CompletePayment sentMême identifiant d’événement, dédupliquéPour voir l’événement dans Meta, collez le code d’Events Manager › Test events dans le champ Test event code de votre pixel Meta dans ROASaurus. Retirez-le quand vous avez terminé, car ce code est destiné uniquement aux tests. Si le plugin ne parvient pas à livrer une commande, il ajoute une note de commande dans WooCommerce qui commence par « ROASaurus: order not sent », suivie de l’erreur.
Erreurs à éviter
- Utiliser le topic Order created. Les commandes payées par redirection sont créées avec le statut pending payment. ROASaurus ignore les commandes impayées, et aucun second message « created » ne suit quand le paiement arrive. Utilisez Order updated.
- Un secret qui ne correspond pas. ROASaurus rejette un envoi dont la signature ne correspond pas au secret qu’il possède. Après plus de cinq échecs consécutifs, WooCommerce désactive le webhook. Corrigez le secret, remettez le webhook sur Active et ajoutez la clé d’API REST, afin que les commandes de la période manquante soient récupérées.
- Deux outils qui envoient le même pixel. Si un autre plugin envoie aussi votre pixel Meta ou TikTok, il utilise ses propres identifiants d’événement et la plateforme compte chaque vente deux fois. Désactivez-le pour ce pixel. Voir la prévention du double comptage et les événements d’achat en double.
- Attendre des événements d’ajout au panier. Sur WooCommerce, le script suit seulement les vues de page. Les vues de produit et les ajouts au panier ne sont détectés automatiquement que sur Shopify. Un développeur peut les envoyer avec un appel de suivi
tlq. - Attendre des conversions Google Ads. ROASaurus n’envoie les conversions d’achat Google Ads que depuis le checkout Shopify. Depuis WooCommerce, il envoie les achats à Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn et aux autres plateformes publicitaires que vous connectez.
- Les virements bancaires tardifs. Meta accepte les événements serveur jusqu’à 7 jours après l’heure de l’événement. Le plugin envoie la commande avec sa date de création : Meta rejette donc un virement confirmé plus de 7 jours après le checkout. Les commandes qui arrivent par webhook ou par l’API REST utilisent la date de paiement à la place. Notez aussi que la page de remerciement déclenche l’achat navigateur au checkout, avant que le virement ne soit payé. Si le paiement est confirmé plus de 48 heures plus tard, Meta et TikTok ne peuvent pas fusionner les copies navigateur et serveur, et un virement qui n’est jamais payé conserve son achat navigateur.
Une fois les commandes en circulation, les rapports d’attribution montrent de quelles campagnes et de quelles publicités elles viennent.
Sources
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters