- Le suivi des conversions CCV Shop est le plus complet quand chaque commande payée est envoyée depuis les données de commande de CCV, sur le serveur, avec un extrait de code sur la page de succès de commande qui associe la commande au clic publicitaire.
- Un clic sur Create webhook fait signaler chaque commande par CCV Shop dès qu’elle est marquée comme payée, et chaque envoi doit porter le jeton privé de votre boutique.
- Les commandes CCV Shop n’incluent pas l’adresse IP de l’acheteur : l’extrait de la page de succès de commande compte donc plus sur CCV Shop que sur la plupart des plateformes.
- Le contrôle toutes les 5 minutes ne regarde que les commandes récemment créées : les commandes payées plusieurs jours plus tard dépendent donc du webhook. Gardez-le actif.
- Meta rejette les événements serveur reçus plus de 7 jours après la création de la commande : un virement bancaire très tardif n’arrive donc pas jusqu’à Meta.
Le suivi des conversions CCV Shop consiste à signaler chaque commande payée de votre boutique en ligne CCV Shop à des plateformes publicitaires comme Meta et TikTok, afin qu’elles attribuent le crédit aux bonnes publicités et optimisent sur de vraies ventes. La méthode la plus complète consiste à envoyer chaque achat depuis les données de commande de CCV, sur le serveur, et à ajouter un court extrait de code à la page de succès de commande pour associer la commande au clic publicitaire.
CCV Shop est une plateforme de boutique en ligne hébergée de la société néerlandaise CCV, qui affirme faire tourner 17,000 boutiques en ligne. Ce guide explique comment ROASaurus s’y connecte, comment les commandes sont associées aux clics publicitaires, ce que reçoivent Meta et TikTok, la configuration, les tests et le fonctionnement des paiements tardifs. Pour l’idée générale, lisez ce qu’est le suivi côté serveur.
Comment ROASaurus se connecte-t-il à CCV Shop ?
ROASaurus utilise trois éléments de CCV Shop, tous décrits dans la documentation de l’API de CCV :
| Élément de CCV Shop | À quoi ROASaurus l’utilise |
|---|---|
| API REST, avec une clé publique et une clé secrète | Lit chaque commande payée et ses lignes de commande |
Webhook pour l’événement orders.updated.ispaid | CCV signale une commande dès que son statut de paiement change |
La page de succès de commande, avec Vertoshop.js | L’extrait de code y lit l’identifiant de commande et associe la commande au visiteur |
Pourquoi les pixels navigateur ratent-ils les achats CCV Shop ?
Un pixel navigateur ne déclare un achat que lorsque le navigateur de l’acheteur charge la page de succès de commande et que le script du pixel s’exécute. Plusieurs situations courantes l’empêchent :
- L’acheteur paie par redirection, par exemple avec iDEAL, et ferme l’onglet avant le chargement de la page de succès.
- Un bloqueur de publicités ou un réglage de confidentialité du navigateur bloque le script du pixel.
- Le visiteur refuse les cookies marketing : le pixel ne doit donc pas se charger.
- La commande est payée plus tard, par virement bancaire ou à la livraison, sans qu’aucun navigateur intervienne.
Dans chaque cas, CCV Shop marque quand même la commande comme payée. ROASaurus envoie cette commande depuis le serveur : l’achat est donc déclaré quoi qu’il se soit passé dans le navigateur. L’extrait sur la page de succès a une autre mission : il indique à ROASaurus à quel visiteur, et donc à quel clic publicitaire, appartient la commande.
Le webhook de commande payée et le contrôle toutes les 5 minutes
Ce que fait Create webhook
Quand vous cliquez sur Create webhook, ROASaurus enregistre un webhook CCV pour l’événement orders.updated.ispaid, que CCV déclenche quand la propriété « payée » d’une commande change. L’adresse est l’URL de webhook de votre boutique dans ROASaurus, qui contient votre clé de boutique et un jeton privé. CCV n’ajoute à un webhook aucun élément identifiant la boutique, et sa documentation conseille de mettre un identifiant dans l’adresse. La clé de boutique remplit ce rôle.
CCV attribue à chaque webhook sa propre clé secrète de 32 caractères. Quand CCV renvoie cette clé, ROASaurus l’enregistre, et dès lors chaque envoi doit porter un en-tête x-hash valide. Chaque envoi doit aussi porter le jeton de votre boutique. Quand ROASaurus reçoit un envoi, il ignore les commandes non payées, lit la commande complète et ses lignes via l’API, et n’envoie la commande que si CCV indique qu’elle est payée.
Appels API signés
CCV exige que chaque appel API soit signé. ROASaurus envoie trois en-têtes : x-public avec votre clé publique, x-date avec l’heure actuelle et x-hash. CCV rejette un horodatage qui s’écarte de plus de 5 minutes de l’heure de son serveur. Votre clé secrète elle-même n’est jamais envoyée.
API call (ROASaurus → CCV) x-hash = HMAC-SHA512( public_key|METHOD|uri|body|timestamp , secret_key ) Webhook (CCV → ROASaurus) x-hash = HMAC-SHA512( address|payload , webhook_key )
La vérification toutes les 5 minutes
Toutes les 5 minutes, ROASaurus demande aussi à CCV les commandes payées créées depuis son dernier contrôle, avec 30 minutes de chevauchement, et enregistre celles qu’il n’a pas encore. CCV filtre les commandes uniquement par date de création. Le contrôle trouve donc les commandes payées peu après avoir été passées, et une commande payée des jours plus tard n’arrive à ROASaurus que par le webhook.
CCV considère une réponse 200, 201, 202 ou 204 comme un succès. Il garde un envoi ouvert et le retente à l’occurrence suivante après une réponse 307, 408, 503 ou 504, et marque toute autre réponse comme échec. Il attend 2 secondes pour une connexion et 5 secondes pour la réponse.
Comment une commande CCV Shop est-elle associée au clic publicitaire ?
Pour attribuer une publicité, la plateforme a besoin des identifiants de clic du visiteur qui a commandé, comme l’identifiant de clic Meta (fbc) et l’identifiant de clic TikTok (ttclid). Le script ROASaurus les enregistre pour chaque visiteur quand il arrive depuis une publicité. ROASaurus n’obtient pas cet identifiant visiteur à partir de la commande CCV : il associe donc les commandes aux visiteurs par d’autres moyens :
| Méthode | Sur CCV Shop | Comment ça marche |
|---|---|---|
| 1. Extrait de la page de succès de commande | Oui | Il lit l’identifiant de commande avec Vertoshop.getOrder().getId(), ainsi que le total de la commande et la devise, et déclenche un achat ROASaurus avec l’identifiant d’événement order-58213 |
| 2. E-mail antérieur | Oui | Un e-mail haché que le visiteur a donné plus tôt sur votre site, dans un formulaire pop-up ou via un appel Identify |
| 3. Adresse IP et navigateur | Non | Les commandes CCV Shop n’incluent ni l’adresse IP ni le navigateur de l’acheteur : ce repli n’a donc rien à comparer |
ROASaurus attend brièvement avant d’envoyer chaque achat, afin que l’événement de la page de succès puisse arriver en premier, et il retente l’association au moment de l’envoi. La page Orders affiche le résultat par commande dans la colonne Matched by : thank_you, email ou not matched.
Une commande non associée part quand même vers vos plateformes publicitaires avec les données clients hachées de la commande. Elle n’a aucun identifiant de clic et, comme les commandes CCV ne contiennent ni adresse IP ni navigateur, rien de tout cela non plus. Cela réduit la part d’événements que Meta peut rattacher à une personne ; Event Match Quality explique comment Meta évalue ce point. Dans l’attribution de ROASaurus, une commande non associée apparaît comme directe ou inconnue.
Que reçoivent Meta et TikTok d’une commande CCV ?
| Données de commande CCV | Envoyé comme |
|---|---|
id | L’identifiant d’événement order-58213 et l’identifiant de commande |
total_price, currency | Valeur et devise (EUR quand CCV ne donne aucune devise) |
create_date | L’heure de l’événement |
| E-mail du client, numéro de mobile ou de téléphone, prénom et nom | Haché avec SHA-256 |
| Ville de facturation, code postal et code pays | Haché avec SHA-256 |
| Identifiant client | Identifiant externe haché |
| Lignes de commande : numéro de produit, identifiant de produit, quantité, prix et nom | Produits avec identifiant, quantité et prix |
| Adresse IP et navigateur | Absents des commandes CCV : repris de l’événement de la page de succès ou du visiteur associé |
Meta reçoit un Purchase via sa Conversions API, et TikTok un CompletePayment via l’Events API, tous deux avec l’identifiant d’événement order-58213. TikTok affiche désormais CompletePayment comme Purchase dans ses rapports. Quand vous cochez l’option de charger aussi le pixel navigateur, l’extrait de la page de succès déclenche les mêmes événements dans le navigateur avec le même identifiant d’événement, et Meta et TikTok n’en gardent qu’un seul exemplaire. Les mêmes commandes partent vers Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn et les autres plateformes publicitaires lorsque vous les connectez. Les conversions d’achat Google Ads ne sont envoyées que depuis le checkout Shopify : ROASaurus ne les envoie donc pas depuis CCV Shop.
Comment configurer le suivi des conversions CCV Shop
- Ajoutez la boutique dans ROASaurus
Allez dans Add a store, choisissez CCV Shop et saisissez l’adresse de votre boutique. L’onglet Connection affiche alors votre balise de script et l’extrait de la page de succès.
- Trouvez vos clés API
Dans CCV Shop, allez dans My webshop › Settings › General › API settings et cliquez sur New API key. Si vous ne le voyez pas, installez d’abord l’application API depuis le CCV App Store.
- Ajoutez le script à chaque page
Collez la balise de script dans le Header HTML de votre boutique. Le centre d’aide de CCV le place sous Mijn webshop › Instellingen › Lay-out › Layout, en bas de la page. Un bloc de code d’application dans l’en-tête fonctionne aussi.
- Ajoutez l’extrait à la page de succès
Allez dans Mijn webshop › Instellingen › Algemeen › Teksten, ouvrez le texte affiché après une commande, passez sur Source et collez-y l’extrait. CCV Shop l’exécute ensuite sur la page de remerciement de la commande.
- Connectez l’API
Dans l’onglet Connection, saisissez la clé publique et la clé secrète. Ne renseignez Shop URL que si votre API tourne sur un autre domaine que votre boutique. Enregistrez, cliquez sur Test connection, puis sur Create webhook.
- Connectez vos plateformes publicitaires
Sur Tracking & platforms, utilisez Connect with Facebook ou Add pixel pour Meta, et Add pixel pour TikTok. Cochez l’option de charger aussi le pixel navigateur.
Consentement
En dehors de Shopify, le script ROASaurus lit le choix du visiteur dans les outils de consentement courants : Cookiebot, OneTrust, les bandeaux IAB TCF et Google consent mode. Avec un autre bandeau de cookies, appelez tlq('consent', true) quand le visiteur accepte les cookies marketing et tlq('consent', false) quand il les refuse. Tant que le visiteur n’a pas accepté, il n’a ni identifiant visiteur ni identifiants de clic, et aucun pixel navigateur ne se déclenche. La commande payée est tout de même envoyée depuis le serveur, avec les données client hachées issues de la commande. La page d’aide sur le consentement explique les détails.
Comment tester le suivi des conversions CCV Shop ?
- Ouvrez votre boutique avec
?roasaurus=connecteddans l’adresse. Une alerte confirme que le script s’exécute.?roasaurus=debugconsigne 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 et payez-la, ou marquez-la comme payée. Sous Collected events, l’Event log doit afficher un Purchase avec l’identifiant de commande CCV dans ses données. S’il manque, l’extrait de la page de succès ne s’est pas exécuté.
- Dans l’onglet Connection, Last order received affiche la commande et Last sync le dernier contrôle de 5 minutes, avec toute erreur renvoyée par CCV.
- Sous Server deliveries dans l’Event log, chaque plateforme connectée reçoit une ligne avec le statut sent et la réponse de la plateforme.
PageView visitor 51c0e9a7Script sur chaque pagePurchase order-58213Extrait de la page de succès de commandewebhook orders.updated.ispaidSignature vérifiée, commande payéeMeta Purchase sentMatched by thank_youTikTok 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, et retirez-le quand vous avez terminé.
Paiements tardifs et autres limites
Les virements bancaires et les paiements à la livraison sont payés après la passation de la commande. Voici ce qui arrive à un exemple de commande par virement bancaire, à partir du jour où elle est passée :
| Quand | Ce qui se passe | Résultat |
|---|---|---|
| Jour 0, au checkout | La commande est créée, pas payée | Non envoyée : le contrôle de 5 minutes ne demande que les commandes payées |
| Jour 0, environ 35 minutes plus tard | L’heure de création de la commande sort de la fenêtre de contrôle | Désormais, seul le webhook peut la signaler |
| Jour 3 | Vous marquez la commande comme payée | Le webhook arrive, ROASaurus l’envoie. L’heure de l’événement (jour 0) date de 3 jours : Meta l’accepte |
| Au lieu de cela, jour 9 | Vous marquez la commande comme payée | Le webhook arrive, ROASaurus l’envoie. 9 jours, c’est plus de 7 : Meta le rejette |
- Paiement à la livraison. ROASaurus envoie ces commandes quand CCV les marque comme payées, en général après la livraison. Voir le suivi du paiement à la livraison pour savoir quand compter de telles commandes.
- Achats navigateur avant le paiement. L’extrait de la page de succès s’exécute quand la commande est passée : les pixels navigateur déclarent donc une commande par virement bancaire avant qu’elle soit payée. Si le paiement arrive plus de 48 heures plus tard, Meta et TikTok ne peuvent pas fusionner les copies navigateur et serveur.
- Pas de repli par IP. Ajoutez l’extrait de la page de succès et capturez les e-mails plus tôt sur votre site quand vous le pouvez.
- Les annulations et les remboursements ne sont pas envoyés. Une fois un achat envoyé, il reste dans la plateforme publicitaire.
- Seulement les vues de page, sans code. Les vues de produit et les ajouts au panier ne sont détectés automatiquement que sur Shopify. Sur CCV Shop, un développeur peut les envoyer avec un appel de suivi
tlq.
La page d’intégration CCV Shop rassemble les informations de connexion au même endroit, et la page d’aide pour les autres boutiques en ligne compare CCV Shop aux autres plateformes auxquelles ROASaurus se connecte, comme Lightspeed.
Sources
- CCV Shop: API Documentatie
- CCV: Webshop API
- Meta for Developers: Server Event Parameters
- Meta for Developers: Handling Duplicate Pixel and Conversions API Events
- TikTok Ads Manager: About Event Deduplication
Dans ROASaurus
- Intégration CCV Shop
- Aide : Wix, Lightspeed et autres boutiques en ligne
- Suivi côté serveur
- Intégration Meta