Guide
Envoyer les achats WooCommerce à ChatGPT Ads via la Conversions API
L'OpenAI Conversions API (API de conversions) permet à une boutique WooCommerce d'envoyer ses conversions ChatGPT Ads depuis son propre serveur plutôt que depuis le navigateur de l'acheteur. Pour une boutique, la conversion qui compte le plus est l'achat : dès que WooCommerce passe une commande au statut payé, elle existe, qu'un script du navigateur l'ait signalée ou non. Ce guide explique comment fonctionne le tracking server-side des achats, ce qu'une implémentation correcte doit gérer et ce qu'elle ne peut pas corriger.
Mis à jour le
Sur cette page
En un paragraphe : envoyez order_created depuis WooCommerce quand la commande atteint un statut payé, avec le même ID d'événement que celui utilisé par le pixel du navigateur pour cette commande, l'heure d'achat d'origine, et une clé d'API qui reste sur le serveur. Relancez les échecs temporaires avec le même ID, et gardez une trace de ce qui est arrivé à chaque commande.
Architecture
Le suivi des achats côté serveur en un coup d'œil
Deux canaux partent de la boutique. Celui du navigateur couvre tout le parcours d'achat ; celui du serveur transporte la commande payée.
Dans le navigateur, le Measurement Pixel envoie les vues produit, les ajouts au panier, les débuts de commande et l'achat. Quand WooCommerce confirme qu'une commande est payée, l'achat part aussi de votre serveur via l'OpenAI Conversions API, avec le même ID d'événement, pour qu'OpenAI ne le compte qu'une fois.
Navigateur du client
Consulte les produits, remplit son panier, commande
Boutique WooCommerce
Produits, panier, validation de commande et commandes
Dans le navigateur
Measurement Pixel
contents_viewed, items_added, checkout_started, order_created
OpenAI
Reçoit les événements du navigateur
Sur votre serveur
Commande payée
Changement de statut dans WooCommerce
L'extension envoie order_created
Même ID d'événement · relances · diagnostic
Conversions API
Authentifiée par votre clé d'API
Un seul achat comptabilisé
OpenAI rapproche Pixel ID, nom d'événement et ID d'événement, puis ignore le doublon arrivé ensuite.
Ce que la mesure navigateur laisse échapper
Le Measurement Pixel s'exécute dans le navigateur de l'acheteur. C'est le seul endroit où l'on voit les vues produit et l'activité du panier, mais cela signifie aussi qu'un événement est perdu chaque fois que la page ou le script ne va pas jusqu'au bout :
- Un bloqueur de contenu ou un outil de protection de la vie privée empêche le chargement du script du pixel.
- Le client ferme l'onglet après avoir payé, avant l'affichage de la page « Commande reçue ».
- Le paiement est confirmé plus tard (virement bancaire, certaines passerelles avec redirection), alors que le client a quitté le site.
- Un chargement de page lent ou interrompu fait échouer la requête.
Dans chacun de ces cas, WooCommerce enregistre bien la commande. Un événement d'achat côté serveur part de cette commande : aucune de ces situations ne l'empêche d'être envoyé.
Comment fonctionne la Conversions API
Votre serveur envoie à OpenAI une requête HTTPS authentifiée contenant un ou plusieurs événements. La requête est adressée à votre Pixel ID et autorisée par une clé Conversions API, tous deux générés dans l'onglet des conversions d'Ads Manager (documentation de l'OpenAI Conversions API, en anglais).
| Champ | Contenu pour un achat WooCommerce |
|---|---|
event_name | order_created : un achat finalisé |
id | L'ID d'événement. Il doit correspondre à celui de l'événement navigateur de la même commande. |
timestamp_ms | Le moment de l'achat, en millisecondes. |
action_source | web pour une boutique en ligne |
Côté serveur uniquement
OpenAI demande d'envoyer les événements à la Conversions API exclusivement depuis votre serveur, et la documentation du pixel précise qu'il ne faut pas appeler l'API serveur directement depuis le code de la page. La clé d'API ne doit jamais parvenir au navigateur.
Quand envoyer l'achat
Envoyez-le quand WooCommerce marque la commande comme payée, et non quand la page « Commande reçue » s'affiche. Lier l'événement au statut de la commande plutôt qu'à une page vue signifie que :
- Il se déclenche une seule fois par commande, quel que soit le nombre de rechargements de la page de remerciement.
- Avec les moyens de paiement différés, l'achat part au moment où le paiement est réellement confirmé.
- Les commandes non payées, échouées ou abandonnées ne sont pas remontées comme des achats.
Commande validée
Commande créée dans WooCommerce
Paiement confirmé
La commande atteint un statut payé
Achat envoyé
order_created depuis votre serveur
Résultat enregistré
Accepté, relancé ou en échec
ID d'événement et déduplication
Si un achat est envoyé à la fois par le navigateur et par le serveur, OpenAI doit pouvoir savoir qu'il s'agit d'un seul et même achat. D'après sa documentation, OpenAI déduplique à partir de votre Pixel ID, du champ event_name et du champ id : il retient le premier événement reçu pour une même clé et ignore les doublons qui arrivent ensuite.
L'ID d'événement doit donc être identique sur les deux canaux. Sur WooCommerce, la méthode fiable consiste à le dériver de la commande, que connaissent à la fois la page « Commande reçue » et le serveur, plutôt que de générer dans le navigateur un ID aléatoire que le serveur ne verra jamais. Le guide Pixel vs Conversions API explique comment les deux canaux s'articulent.
Navigateur · Pixel
Achat
ID d'événement partagé, dérivé de la commande WooCommerce
Serveur · Conversions API
Achat
ID d'événement partagé, dérivé de la commande WooCommerce
Une seule conversion
Même Pixel ID, même nom d'événement, même ID : OpenAI garde le premier et ignore le doublon.
La règle des 7 jours
OpenAI refuse les événements situés hors d'une fenêtre de temps donnée : selon sa documentation, l'horodatage doit se situer dans les 7 derniers jours et au plus 10 minutes dans le futur. Deux conséquences pour une boutique :
7 jours
ancienneté maximale de l'heure d'achat
10 minutes
au maximum dans le futur
- Envoyez l'heure d'achat d'origine, et non l'heure de la tentative ; sinon, un événement relancé indique un achat plus tardif qu'en réalité.
- Corrigez rapidement les envois en échec. Une commande dont l'heure d'achat remonte à plus de 7 jours ne peut plus être envoyée.
L'API accepte aussi des lots de 1 000 événements au maximum, et si un seul événement du lot échoue, c'est tout le lot qui échoue : une commande mal formée peut en bloquer d'autres si l'implémentation regroupe les envois sans précaution.
Relances et échecs
La documentation d'OpenAI demande de réutiliser le même ID lorsqu'on relance une conversion ou qu'on l'envoie par une autre intégration. Elle ne publie en revanche aucun calendrier de relance : la politique de relance relève de l'implémentation. Une politique raisonnable distingue :
| Échec | Exemple | Traitement |
|---|---|---|
| Temporaire | Délai dépassé, limite de débit (429), erreur serveur (5xx) | Relance automatique avec le même ID |
| Configuration | Clé d'API refusée (401) | Corriger le réglage, puis renvoyer |
| Réseau | Le serveur ne joint pas l'API | Corriger le HTTPS sortant ou les règles du pare-feu |
Quelle que soit la politique, un échec doit être visible quelque part. Sans suivi commande par commande, une intégration en panne ressemble à s'y méprendre à une semaine de ventes calme.
Consentement
L'envoi côté serveur ne permet pas de contourner le consentement. Le pixel lui-même n'envoie aucun signal de mesure lorsque le consentement est refusé (documentation du Measurement Pixel), et un achat côté serveur doit respecter l'état de consentement enregistré pour la commande concernée. Sous WordPress, la WordPress Consent API est le moyen le plus courant pour une bannière de consentement de partager cet état avec les autres extensions.
Comment Pixel for ChatGPT Ads le met en œuvre
Pixel for ChatGPT Ads est un plugin WooCommerce qui n'envoie que l'achat côté serveur. Voici ce qu'il fait à chacune des étapes ci-dessus :
| Aspect | Comportement |
|---|---|
| Événement envoyé côté serveur | order_created uniquement |
| Déclencheur | La commande atteint un statut payé dans WooCommerce |
| ID d'événement | Dérivé de la commande ; identique à celui de l'achat navigateur |
| Heure d'achat | L'heure d'achat d'origine est transmise |
| Échecs temporaires | Relancés automatiquement |
| Visibilité | État d'envoi, tentatives et code HTTP pour chaque commande |
| Renvoi manuel | Possible pour les commandes éligibles une fois la cause corrigée |
| Clé d'API | Enregistrée pour un usage côté serveur ; jamais écrite dans la page |
| Consentement | Utilise l'état de consentement enregistré pour la commande (WordPress Consent API) |
| Stockage des commandes | HPOS et ancien stockage des commandes pris en charge |
Le canal d'envoi de l'achat côté serveur, tel que l'extension le met en œuvre (illustration en anglais).
- 1Tout part de la commande WooCommerce payée, et non du navigateur de l'acheteur.
- 2L'achat va de votre boutique jusqu'à l'OpenAI Conversions API.
- 3Scripts bloqués, onglets fermés et bloqueurs de contenu n'interrompent pas ce canal.
Vues produit, ajouts au panier et débuts de commande restent des événements navigateur. La page Pixel ChatGPT Ads pour WooCommerce liste chaque événement et d'où il part.
Attentes
Ce que le suivi côté serveur améliore, et ce qu'il ne résout pas
L'envoi côté serveur fiabilise l'achat. Il ne règle pas tout pour autant.
Ce que le suivi côté serveur améliore
- Les achats dont l'événement navigateur a été bloqué par un bloqueur de contenu.
- Les clients qui ferment l'onglet après avoir payé.
- Les paiements confirmés plus tard, alors que le client a quitté le site.
- La visibilité, la relance et le renvoi des envois en échec, commande par commande.
Ce qu'il ne résout pas
- Il ne décide pas de l'attribution. C'est OpenAI qui détermine si un achat est attribué à une publicité ChatGPT, quel que soit le mode d'envoi de l'événement.
- Il ne récupère pas les événements propres au navigateur. Vues produit et activité du panier ont toujours besoin du navigateur.
- Il ne passe pas outre le consentement. Les commandes sans consentement marketing ne sont pas envoyées.
- Il ne corrige pas un second pixel non maîtrisé. Des copies en double sans ID partagé comptent toujours les achats deux fois.
- Il ne garantit pas chaque conversion. Il évite simplement que le navigateur soit le seul point de défaillance possible pour l'achat.
Questions
La Conversions API est-elle obligatoire pour ChatGPT Ads ?
OpenAI permet de mesurer les conversions avec le pixel, la Conversions API ou les deux (présentation du suivi des conversions). Pour une boutique, envoyer l'achat par les deux canaux avec un ID partagé lui donne un canal qui ne dépend pas du navigateur.
Puis-je appeler la Conversions API en JavaScript depuis la page de remerciement ?
Non. Cela exposerait votre clé d'API et dépendrait toujours du navigateur. OpenAI recommande le pixel dans le navigateur et la Conversions API depuis le serveur.
Le suivi côté serveur nécessite-t-il un conteneur serveur Google Tag Manager ?
Non. WooCommerce tourne déjà sur un serveur : un plugin peut envoyer l'achat directement depuis WordPress.
Ce plugin envoie-t-il l'ajout au panier côté serveur ?
Non. Seul l'achat est envoyé côté serveur. Les trois autres événements sont des événements navigateur.
L'achat côté serveur, sans développer l'intégration
Pixel for ChatGPT Ads gère pour WooCommerce le déclenchement, les ID d'événement, les relances et le diagnostic par commande. Les mêmes fonctionnalités dans chaque formule.
Guides associés
- Pixel ChatGPT Ads pour WooCommerceCe que le plugin envoie à ChatGPT Ads depuis une boutique WooCommerce, comment le configurer et ce qu'il ne fait pas.
- Pixel ChatGPT Ads ou Conversions API : lequel utiliser ?Mesure navigateur et mesure serveur comparées pour ChatGPT Ads, et pourquoi une boutique utilise les deux.
- Comment installer le pixel ChatGPT Ads sur WooCommercePrérequis, où trouver le Pixel ID et la clé d'API, configuration et vérification de la première commande.