Plateformes publicitaires et boutiques en ligne

Suivi côté serveur WooCommerce : guide de configuration

Configurez le suivi côté serveur WooCommerce : envoyez les commandes payées à Meta et TikTok avec le plugin ROASaurus ou des webhooks, associez-les aux clics publicitaires et testez.

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

À retenir
  • 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 passePixel navigateurLes données de commande dans WooCommerce
L’acheteur paie par redirection (par exemple PayPal ou une application bancaire) et ferme l’ongletPas de page de remerciement, pas d’événement d’achatCommande payée, statut processing
Un bloqueur de publicités ou un réglage de confidentialité bloque le script du pixelPas d’événement d’achatCommande payée
Le visiteur refuse les cookies marketingLe pixel ne doit pas se chargerCommande payée
Un virement bancaire est confirmé trois jours plus tardAucun 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 pixelL’événement peut arriver en retard ou manquerCommande payée
Dans tous les cas, la commande payée existe dans WooCommerce. Le suivi côté serveur envoie cette commande, quoi qu’il se soit passé dans le navigateur.

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 moisPixel seulToutes les commandes payées
Dépenses publicitaires Meta$8,000$8,000
Achats issus de clics Meta260320
Chiffre d’affaires à $60 par commande$15,600$19,200
ROAS15,600 ÷ 8,000 = 1.9519,200 ÷ 8,000 = 2.40
Par rapport à l’équilibre (2.2)On dirait une perteRentable
Chiffres illustratifs. La même campagne semble perdre de l’argent d’après les données du pixel, et en gagne d’après les données de commande.

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 commandeCe que ROASaurus en fait
idDevient l’identifiant d’événement order-1042, partagé par les événements serveur et navigateur
totalLa 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 facturationHachés avec SHA-256 et envoyés comme données client
customer_ip_address, customer_user_agentEnvoyés avec l’événement et utilisés pour associer la commande à un visiteur
line_itemsIdentifiants de produit (l’identifiant de variation quand il y en a un), quantités et prix
date_paid_gmtL’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_dataAvec le plugin : l’identifiant de visiteur et les cookies Meta et TikTok
Ce que ROASaurus lit dans une commande WooCommerce. Le webhook et l’API REST renvoient les mêmes champs.

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.

CheckoutLe plugin enregistre l’identifiant de visiteur et les cookies de clic sur la commande
Commande payéeStatut processing ou completed
ROASaurusReçoit la commande depuis le plugin ou un webhook
Plateformes publicitairesMeta, TikTok et les autres reçoivent un Purchase avec l’identifiant d’événement order-1042
Le chemin des données avec le plugin. Sans lui, l’étape de checkout n’enregistre rien de plus et la commande n’arrive que par webhook.
Plugin ROASaurusWebhooks uniquement
Ce que vous installezUn plugin WordPress (PHP 7.4 et WooCommerce 6.0 ou plus récent)Rien : un webhook dans les réglages WooCommerce
Comment les commandes arriventLe plugin envoie chaque commande payée à l’API de commandes de ROASaurusWooCommerce envoie Order updated ; vérification facultative via l’API REST toutes les 5 minutes
Script de suiviChargé par le plugin sur chaque pageVous 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 commandeOui, enregistrés au checkout (checkout classique et par blocs)Non
Achat navigateur sur la page de remerciementOui, avec le même identifiant d’événement que l’événement serveurNon
Rapprochement via la page de remerciementOuiNon
Les deux connexions envoient chaque commande payée. Seul le plugin relie chaque commande à son visiteur au checkout.

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 :

  1. L’identifiant de visiteur enregistré sur la commande. Uniquement avec le plugin. C’est un lien exact.
  2. L’achat navigateur sur la page de remerciement, qui porte le même identifiant de commande. Uniquement avec le plugin.
  3. 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.
  4. 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 1042Rapprochée (plugin)Non rapprochée (webhooks uniquement)
Identifiant d’événement order-1042OuiOui
E-mail, téléphone, nom et adresse hachésOuiOui
Adresse IP et navigateur de la commandeOuiOui
Identifiant de clic Meta et identifiant navigateur (fbc, fbp)OuiNon
Identifiant de visiteur haché (external_id)OuiNon
Le clic publicitaire dans l’attribution ROASaurusCampagne et publicité du clicAffichée comme directe ou inconnue
Une commande non rapprochée parvient quand même à Meta avec les données de commande. Une commande rapprochée ajoute les identifiants de clic que Meta utilise pour attribuer la publicité.

Ces identifiants de clic améliorent le taux de correspondance de Meta pour l’événement. Event Match Quality explique comment Meta les note.

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 :

  1. Ajoutez la boutique

    Dans ROASaurus, allez dans Add a store, choisissez WooCommerce et saisissez le domaine que vos clients visitent.

  2. 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/orders sur cette page.

  3. 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.

  4. Saisissez les clés

    Sous WooCommerce › ROASaurus, saisissez le point de terminaison, la clé de boutique et la clé d’API, puis enregistrez.

  5. 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.

  6. 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.

Réglages du webhook
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=connected dans 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 consentement
Purchase order-1042Page de remerciement, pixels navigateur déclenchés
order 1042 processingReçu du plugin
Meta Purchase sentMême identifiant d’événement, dédupliqué
TikTok CompletePayment sentMême identifiant d’événement, dédupliqué
Exemple d’une commande de test saine avec le plugin. Avec les webhooks seuls, la ligne de la page de remerciement est absente, et c’est normal.

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

  1. WooCommerce: Webhooks Documentation
  2. WooCommerce REST API Documentation - WP REST API v3
  3. WooCommerce: Order Statuses Documentation
  4. WooCommerce: Cash on Delivery Documentation
  5. Meta for Developers: Server Event Parameters

Dans ROASaurus

À lire aussi

Plateformes publicitaires et boutiques en ligneSuivi des conversions en paiement à la livraison et checkouts externesSuivi 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.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.
FAQ

Vos questions, nos réponses

Ai-je besoin du plugin ROASaurus pour WooCommerce ?

Non. Un webhook WooCommerce suffit pour envoyer chaque commande payée. Le plugin ajoute l’identifiant de visiteur et les cookies de clic à chaque commande, ainsi qu’un achat navigateur dédupliqué sur la page de remerciement, ce qui relie précisément les commandes aux clics publicitaires : il est donc recommandé.

Quel topic de webhook WooCommerce dois-je utiliser ?

Order updated, avec la version d’API WP REST API Integration v3. ROASaurus ignore les commandes qui ne sont pas processing ou completed et n’enregistre chaque commande qu’une seule fois : les mises à jour répétées ne créent donc pas d’achats supplémentaires.

Les commandes en paiement à la livraison sont-elles envoyées à Meta et TikTok ?

Oui. WooCommerce donne aux commandes en paiement à la livraison le statut processing quand elles sont passées, et ROASaurus compte les commandes processing comme payées. Les commandes par virement bancaire sont envoyées quand vous les faites passer de on hold à processing.

Que se passe-t-il quand un visiteur refuse les cookies ?

La commande payée est tout de même envoyée depuis le serveur avec les données client hachées ainsi que l’adresse IP et le navigateur de la commande. Le script ne devrait pas s’exécuter sans consentement : il n’y a donc ni identifiant de visiteur ni identifiant de clic pour relier la commande à un clic publicitaire.

Pourquoi mon webhook WooCommerce a-t-il cessé de fonctionner ?

WooCommerce désactive un webhook après plus de cinq échecs d’envoi consécutifs. Vérifiez que le secret dans WooCommerce correspond à celui de ROASaurus, remettez le webhook sur Active, et ajoutez une clé d’API REST afin que les commandes manquées soient récupérées toutes les 5 minutes.

ROASaurus envoie-t-il des conversions Google Ads depuis WooCommerce ?

Pas pour les achats. Les conversions d’achat Google Ads ne sont envoyées que depuis le checkout Shopify. Depuis WooCommerce, ROASaurus envoie les achats à Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn et aux autres plateformes publicitaires que vous connectez.

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 →