Un acheteur atteint votre boutique depuis ChatGPT de deux façons : par un résultat produit organique tiré de votre flux, ou par une publicité dont le clic atterrit avec un identifiant oppref. Seule la seconde coûte de l’argent ; les deux doivent être rapportées séparément, avec un ROAS calculé sur la seule moitié publicitaire. La séparation est une règle fixe sur l’URL d’atterrissage et le référent de chaque commande.
Deux portes vers la même boutique
Du côté de l’acheteur, l’expérience est continue : une question, une réponse, un produit, un clic. Du côté du marchand, il y a deux mécanismes distincts, avec des logiques économiques différentes, et tout l’enjeu de l’attribution est de les garder séparés.
La porte organique est le flux produit. La spécification de flux produit d’OpenAI décrit un instantané de votre catalogue, avec neuf champs obligatoires par article (item_id, title, description, url, brand, seller_name, image_url, availability, price), livré par SFTP au moins une fois par jour. Les articles sont éligibles aux résultats organiques par défaut : le champ is_eligible_search, quand il est omis, vaut true. Rien n’est facturé quand un acheteur clique sur l’un de ces résultats. Le même flux porte aussi un drapeau is_ads_eligible, que la spécification indique comme obligatoire pour le traitement Ads ; un seul fichier alimente donc les deux portes.
La porte payante est ChatGPT Ads. La référence Campaigns documente des campagnes avec un bidding_type valant "impressions", "clicks" ou "conversions" et un budget total. Quel que soit le type d’enchère, un clic publicitaire conduit l’acheteur vers votre url avec quelque chose qu’un clic organique n’a jamais : le paramètre oppref. La référence Measurement Pixel indique que le pixel « captures oppref from the landing page URL » et « stores oppref in a first-party __oppref cookie so later page views can reuse it », et la référence Conversions API décrit le champ comme « An opaque, OpenAI-provided attribution identifier. »
| ChatGPT organique | ChatGPT Ads | |
|---|---|---|
| Comment le produit apparaît | Résultat produit tiré de votre flux | Placement payant |
| Coût par clic | Aucun | Facturé au clic valide (ou à l’impression, selon le type de campagne) |
| Identifiant dans l’URL d’atterrissage | Aucun émis par OpenAI ; vos propres UTM si vous les avez ajoutés à l’url du flux | oppref |
| Où OpenAI le mesure | Non rapporté comme conversions dans l’Ads Manager | Ads Manager et Insights (conversions post-clic) |
| Ce dont le ROAS a besoin | Rien ; il n’y a pas de dépense | Revenu attribué et dépense importée |
Pourquoi les deux canaux ne doivent jamais être additionnés
Les fusionner produit deux nombres chacun faux dans une direction différente.
Si les commandes organiques sont comptées comme revenu publicitaire, le ROAS est gonflé par un revenu que la campagne n’a pas acheté. Une campagne qui paraît rentable peut vivre sur des résultats que le flux aurait produits de toute façon. Les décisions suivent : hausses de budget, enchères relevées, seconde campagne, toutes justifiées par un ratio dont le numérateur a été rembourré.
Si les commandes publicitaires sont comptées comme organiques, la campagne semble n’avoir rien produit, et elle est coupée. Le flux reçoit alors le crédit d’un revenu qu’il n’a pas gagné, ce qui fausse aussi tout l’effort que vous mettez dans l’optimisation du flux.
Les canaux se comportent aussi différemment dans le temps. L’exposition organique dépend de la complétude et de la fraîcheur de votre flux. L’exposition payante dépend du budget et de l’enchère, et s’arrête dès que l’un ou l’autre s’épuise. Les lire comme une seule ligne masque la seule comparaison qui compte commercialement : ce que le canal payant ajoute par-dessus ce que le canal gratuit livre déjà.
La méthodologie, en entier
La séparation repose sur trois signaux enregistrés sur chaque commande, appliqués dans un ordre fixe. Convrail utilise exactement la table suivante et enregistre sur chaque commande la ligne qui a correspondu, avec la valeur correspondante.
| Signal sur la commande | Verdict | Medium |
|---|---|---|
L’URL d’atterrissage contient oppref=<id> | ChatGPT | ads |
utm_source vaut chatgpt, openai ou chatgpt.com, et utm_medium vaut cpc, ppc, paid ou ads | ChatGPT | ads |
utm_source vaut chatgpt, openai ou chatgpt.com, tout autre medium | ChatGPT | organic |
| Le référent est chatgpt.com, chat.openai.com ou openai.com (ou un sous-domaine) | ChatGPT | organic |
| Aucun des cas ci-dessus | Autre canal | non attribué |
Pourquoi oppref signifie ads
Parce qu’OpenAI ne l’émet que sur les clics publicitaires, et parce qu’il se trouve dans l’URL plutôt que dans un en-tête. Un paramètre d’URL est enregistré par le landingPage de Shopify (« URL of the first page the customer landed on for the session. », selon l’objet CustomerVisit) et par les données d’attribution de commande de WooCommerce, que le navigateur ait envoyé un référent ou non. C’est le seul signal qui survit à un référent retiré ; il est donc vérifié en premier, et une commande payante ne peut jamais retomber dans les lignes organiques.
Pourquoi un utm_medium payant signifie ads
Parce que si vous avez construit un lien de suivi vers une destination ChatGPT Ads avec utm_medium=cpc ou équivalent, vous l’avez déclaré payant. Convrail respecte la déclaration. Cette ligne existe pour les marchands qui construisent leurs URL publicitaires à partir d’un modèle ; elle n’est pas nécessaire au fonctionnement d’oppref.
Pourquoi un référent, ou un UTM non payant, signifie organique
Parce qu’un clic depuis chatgpt.com qui ne porte ni oppref ni medium payant est exactement ce à quoi ressemble un résultat produit organique. Shopify définit referrerUrl comme « Webpage where the customer clicked a link that sent them to the online store. » Si vous avez suivi les bonnes pratiques de flux et ajouté à l’url de votre flux un paramètre propre au flux tel que utm_medium=feed, la ligne UTM le capte comme organique même quand le référent a disparu. Nous n’avons trouvé aucune page officielle d’OpenAI documentant un jeu fixe de paramètres UTM ajoutés aux liens organiques de ChatGPT ; la règle du référent est donc le filet de sécurité et vos propres UTM de flux la version fiable.
Ce que « la première correspondance l’emporte » vous apporte
Le déterminisme. Deux personnes qui regardent la même commande, avec les mêmes champs bruts, arrivent au même verdict. La preuve enregistrée (la valeur oppref, la paire UTM ou l’hôte du référent) rend chaque ligne redérivable depuis un export CSV, ce qui est la seule façon honnête de laisser un marchand ou une agence vérifier le travail. La manière dont cette preuve apparaît spécifiquement dans Shopify est traitée dans Commandes Shopify avec ChatGPT comme source.
La définition du ROAS, énoncée une fois
Le ROAS dans Convrail est le revenu ads attribué divisé par la dépense publicitaire importée, sur la période que vous sélectionnez.
- Le revenu ads attribué est la somme des totaux des commandes dont le medium est ads. Les commandes organiques ne sont pas dans le numérateur.
- La dépense est importée une fois par jour depuis l’Advertiser API d’OpenAI avec les impressions, clics, CTR, CPC, CPM et conversions, et stockée par campagne et par jour. La référence Insights liste
impressions, clicks, spend, ctr, cpc, cpmcomme métriques de diffusion etconversions,click_through_conversionsetview_through_conversionscomme métriques de conversion. - Les imports sont idempotents : relancer une journée ne compte jamais la dépense deux fois.
- Quand aucune dépense n’a été importée pour la période, le ROAS est affiché vide plutôt que sous la forme d’un chiffre trompeur.
L’attribution organique n’a besoin de rien de tout cela. Elle fonctionne à partir de vos seuls webhooks de commande. La clé Advertiser API n’ajoute que le côté dépense, ce qui explique qu’elle soit facultative et qu’une boutique puisse faire tourner l’attribution organique dès le premier jour.
Les limites, énoncées sans détour
Chaque attribution ci-dessus est une preuve first-party au dernier contact. Cette description emporte trois conséquences.
Dernier contact signifie que la commande est créditée à la session qui l’a passée. Un acheteur qui a demandé conseil à ChatGPT le lundi et acheté le jeudi après une recherche Google est une commande Google selon cette règle, et l’influence de ChatGPT est invisible. Nous ne la modélisons pas, parce qu’un chiffre modélisé sans preuve ne peut pas être audité.
First-party signifie que les règles ne voient que ce que votre propre boutique a enregistré : l’URL d’atterrissage et le référent sur la commande. Si une chaîne de redirections, un outil de consentement ou une application a réécrit l’URL avant que votre plateforme la voie, la preuve est ce qui a survécu. Le cookie __oppref que le pixel conserve 7 jours aide les événements de conversion envoyés à OpenAI, de sorte que l’Ads Manager et votre tableau de bord décrivent le même clic, mais il ne peut pas retrouver un paramètre que la plateforme n’a jamais stocké.
Preuve seulement signifie que « non attribué » est une vraie catégorie. Une commande avec un référent quelconque et aucun paramètre est « non attribuée », pas « organique par défaut ». L’arrondir vers le haut gonflerait la ligne organique exactement de la façon dont cet article met en garde pour la publicité.
Une asymétrie de plus : l’Ads Manager et votre tableau de bord ne s’accorderont pas à la commande près, et il ne faut pas l’attendre. La référence Insights indique que « conversions is always equal to click_through_conversions » et que « Click-through attribution follows the applicable configured click window. » L’Ads Manager compte les événements qu’il a reçus dans une fenêtre ; le tableau de bord compte les commandes dont l’URL d’atterrissage portait l’identifiant, qu’un événement ait été envoyé ou non (un refus de consentement, par exemple, retient l’événement mais laisse l’URL). Comparez sur une semaine, pas sur un jour, et attendez-vous à ce que le décompte ads du tableau de bord soit égal ou légèrement supérieur à celui de l’Ads Manager.
Une lecture commentée du tableau de bord
Les chiffres ci-dessous sont inventés pour l’illustration. Ce ne sont pas des mesures issues d’une boutique, et ils ne sont typiques de rien ; ils n’existent que pour montrer comment les colonnes s’articulent.
Supposons qu’une boutique enregistre 200 commandes sur une période hypothétique de 7 jours, et que Convrail les attribue ainsi :
| Ligne | Commandes | Revenu (hypothétique, EUR) | Type de preuve |
|---|---|---|---|
oppref dans l’URL d’atterrissage | 12 | 1 140 | ads |
UTM payant (utm_medium=cpc) | 2 | 210 | ads |
UTM non payant (utm_medium=feed) | 9 | 630 | organic |
| Référent chatgpt.com seul | 6 | 390 | organic |
| Non attribué | 171 | 14 200 | autres canaux |
Supposons encore que l’import Advertiser API des mêmes sept jours montre 600 € de dépense sur deux campagnes.
Lecture :
- Le revenu ads attribué est 1 140 + 210 = 1 350 € pour 14 commandes.
- Le revenu organique attribué est 630 + 390 = 1 020 € pour 15 commandes.
- Le ROAS est 1 350 / 600 = 2,25. Les 1 020 € organiques ne sont pas dans le numérateur.
- Le canal ChatGPT dans son ensemble a produit 29 commandes sur 200, mais 14 seulement ont coûté quelque chose.
Voici maintenant la comparaison que la vue fusionnée aurait cachée. Si les 15 commandes organiques avaient été comptées comme ads, le ROAS aurait affiché (1 350 + 1 020) / 600 = 3,95, et la campagne aurait paru presque deux fois plus efficace qu’elle ne l’était. Si les 14 commandes ads avaient été fondues dans l’organique, la campagne aurait montré 600 € de dépense contre zéro revenu.
Deux vérifications de plus que le tableau de bord permet. La liste des meilleurs produits, construite à partir des lignes des commandes attribuées, vous dit si les produits que les publicités remportent sont les mêmes que ceux que l’organique remporte déjà ; si c’est le cas, le canal payant achète peut-être des clics que le flux aurait obtenus. Et la tendance quotidienne, qui trace le revenu, les commandes et la dépense par jour, vous dit si le revenu organique s’est maintenu pendant une pause de dépense, ce qui est le plus près qu’une vue au dernier contact s’approche de l’incrémentalité sans prétendre la mesurer.
Puis, toujours dans cette hypothèse, supposons que l’Ads Manager montre 11 conversions pour la même semaine contre 14 commandes ads dans Convrail. Selon la réconciliation ci-dessus, ce n’est pas une erreur : deux des 14 ont pu être passées après la fenêtre de clic, et une a pu être retenue pour cause de consentement. La commande à examiner serait celle avec oppref dans l’URL d’atterrissage, dans la fenêtre, avec un événement order_created accepté, et aucune conversion côté OpenAI.
Erreurs fréquentes
- Rapporter un seul chiffre de « revenu ChatGPT » et le diviser par la dépense publicitaire. La moitié du numérateur était gratuite.
- Traiter un référent chatgpt.com comme un clic payant. Sans
opprefni medium payant, c’est de l’organique. - Classer par défaut les commandes non attribuées en organique parce qu’« elles viennent probablement de quelque part ». Non attribué est une catégorie, pas une erreur d’arrondi.
- Omettre les UTM sur l’
urldu flux. Le référent est fragile ; un medium propre au flux est le signal organique durable que vous contrôlez. - Attendre que l’Ads Manager et le tableau de bord concordent à la commande près. Ils comptent des choses différentes sur des fenêtres différentes.
- Lire le ROAS d’une seule journée. La dépense et les commandes ne tombent pas le même jour, et des imports quotidiens idempotents signifient que le chiffre d’hier peut encore se stabiliser.
Et maintenant
Si vous voulez ChatGPT organique et ChatGPT Ads sur des lignes séparées, avec la règle et la preuve enregistrées sur chaque commande et un ROAS calculé uniquement sur ce que vous avez payé, commencez par l’attribution Convrail.
Sources
Questions fréquentes
Quelle différence entre le trafic ChatGPT organique et le trafic ChatGPT Ads ?
Le trafic organique vient des résultats produit que ChatGPT tire de votre flux produit, sans coût par clic. Le trafic Ads vient de placements payants, dont les clics atterrissent avec un identifiant oppref et sont facturés au clic valide.
Comment distinguer une commande ChatGPT Ads d'une commande organique ?
Par l'URL d'atterrissage d'abord : un paramètre oppref ou un utm_medium payant signifie ads. Un référent chatgpt.com ou un utm_source=chatgpt non payant, sans ces signaux, signifie organique. La règle qui a correspondu est enregistrée sur chaque commande.
Comment le ROAS ChatGPT est-il calculé ?
Revenu ads attribué divisé par la dépense publicitaire importée sur la même période. Le revenu organique est exclu du numérateur parce qu'aucune dépense ne l'a produit.
Ai-je besoin de l'Advertiser API pour voir le revenu ChatGPT organique ?
Non. L'attribution organique et l'attribution ads fonctionnent toutes deux à partir de vos seules données de commande. L'Advertiser API ajoute la dépense, les clics et les impressions, nécessaires uniquement au ROAS.
Pourquoi mes commandes ChatGPT Ads diffèrent-elles des conversions de l'Ads Manager ?
Ils comptent des choses différentes. L'Ads Manager compte les conversions post-clic dans sa fenêtre de clic à partir des événements reçus ; le tableau de bord compte les commandes dont l'URL d'atterrissage portait l'identifiant publicitaire, qu'un événement ait été envoyé ou non.