L’étiquette de source d’une commande Shopify est déduite, pas déclarée : elle vient du référent et de la page d’atterrissage de la session qui a passé la commande, exposés dans l’API sous referring_site, landing_site et le parcours client. Elle prouve que la session a commencé par un lien ChatGPT. Elle ne dit pas, à elle seule, si ce lien était une publicité, et elle disparaît avec le référent.
D’où vient l’étiquette
Shopify enregistre deux faits sur la visite qui a produit une commande. La ressource Order de l’API REST définit landing_site comme « The URL for the page where the buyer landed when they entered the shop. » et referring_site comme « The website where the customer clicked a link to the shop. » La même page fait correspondre les deux à leurs équivalents GraphQL sur l’objet CustomerVisit, landingPage et referrerUrl, et marque comme obsolètes les anciens champs landingPageUrl et referrerUrl portés directement par l’objet GraphQL Order.
L’objet CustomerVisit est l’endroit où vit le tableau le plus riche. Shopify le décrit comme « A customer’s session on the online store. Tracks how the Customer arrived at the store, including the landing page, referral source, and any associated marketing campaigns. » Ses champs sont la matière première de toute étiquette de source que vous verrez jamais dans l’administration :
| Champ | Définition de Shopify | Ce qu’il vous dit sur ChatGPT |
|---|---|---|
landingPage | « URL of the first page the customer landed on for the session. » | Si l’URL portait oppref ou des paramètres UTM |
referrerUrl | « Webpage where the customer clicked a link that sent them to the online store. » | Si le clic venait de chatgpt.com |
source | « Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, a website domain, QR code, or unknown. » | La classification que Shopify fait lui-même de ce référent |
utmParameters | « A set of UTM parameters gathered from the URL parameters of the referrer. » | Tout ce que vous ou un générateur de liens avez ajouté |
referralCode | « Marketing referral code from the link that the customer clicked to visit the store. Supports the following URL attributes: ref, source, or r. » | Rarement pertinent pour le trafic ChatGPT |
occurredAt | « The date and time when the customer’s session occurred. » | À quelle distance le clic se situe de la commande |
Les visites sont regroupées par commande dans le CustomerJourneySummary, qui « Tracks session data, attribution sources, and the timeline from first visit to purchase conversion. » Il expose un firstVisit (« The customer’s first session going into the shop. »), un lastVisit (« The last session before an order is made. »), un daysToConversion et un momentsCount. L’objet Order résume l’ensemble comme « The customer’s visits and interactions with the online store before placing the order. »
Un champ souvent confondu avec la source est source_name. Il ne parle pas de trafic. Shopify le définit ainsi : « The source channel that the order is attributed to. Set this to the handle of an order attribution definition configured for your sales channel app, such as youtube or channel:amazon-us. » Pour une commande ordinaire de la boutique en ligne, il vaut web, quelle que soit la manière dont l’acheteur est arrivé. Si vous filtrez les commandes par source_name en espérant trouver ChatGPT, vous regardez la mauvaise colonne.
Pourquoi le référent a souvent disparu au moment du passage en caisse
Le référent est un en-tête de navigateur. Il est présent sur la requête qui suit un clic, quand le site d’origine et le navigateur autorisent tous deux son envoi, et il est capturé une fois pour la session. Rien de lui ne survit à un changement de session.
C’est pourquoi le même acheteur peut produire deux commandes très différentes. Quelqu’un qui lit une réponse de ChatGPT, clique sur le lien produit et achète dans la foulée laisse un referrerUrl sur chatgpt.com et une landingPage qui porte peut-être encore des paramètres. Quelqu’un qui lit la même réponse, ferme l’onglet et revient le soir en tapant votre domaine ouvre une nouvelle session dont Shopify ne peut enregistrer la source que comme « direct » ou « unknown », les deux valeurs fourre-tout de sa propre définition de source. La recommandation a eu lieu ; la preuve n’a pas voyagé.
Il y a aussi un détail de synchronisation à connaître si vous consommez les commandes par webhook. Le CustomerJourneySummary possède un champ ready, « Whether the attributed sessions for the order have been created yet. », et son momentsCount « Returns null if the order is still in the process of being attributed. » Shopify assemble le parcours après que la commande existe. Un connecteur qui lit le parcours à l’instant où le webhook orders/paid se déclenche peut voir un tableau inachevé ; lire landing_site et referring_site sur la commande elle-même, et revérifier le parcours plus tard, est le schéma le plus sûr.
Ce que prouvent oppref et les paramètres UTM
Le référent vous dit d’où venait le clic. Les paramètres de l’URL d’atterrissage vous disent de quel type de clic il s’agissait.
Le signal le plus fort est oppref. La référence Measurement Pixel d’OpenAI 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. » La référence Conversions API décrit la même valeur comme « An opaque, OpenAI-provided attribution identifier. » Elle est ajoutée par ChatGPT Ads à l’URL d’atterrissage d’un clic publicitaire, et par rien d’autre. Quand landing_site contient oppref=<id>, la session a commencé par un clic payant, point final. Parce qu’il se trouve dans l’URL, Shopify l’enregistre que l’en-tête referrer soit passé ou non.
Les paramètres UTM sont plus faibles parce que n’importe qui peut les écrire. Ils prouvent qu’un lien portant ces paramètres a été cliqué ; ils ne prouvent rien sur qui a construit le lien. Si les URL de votre flux incluent un medium de votre choix (les bonnes pratiques de flux d’OpenAI recommandent d’ajouter au champ url des paramètres propres au flux tels que utm_medium=feed), un utm_source=chatgpt accompagné de ce medium est une bonne preuve d’un résultat produit organique. Nous n’avons trouvé aucune page officielle d’OpenAI documentant un jeu fixe de paramètres UTM ajoutés aux liens organiques de ChatGPT ; traitez donc tout UTM que vous n’avez pas posé vous-même comme informatif plutôt que comme faisant autorité.
Le référent, enfin, prouve un clic depuis chatgpt.com, chat.openai.com ou openai.com, sans dire si la surface était une publicité ou un résultat organique. À lui seul, il doit se lire comme organique, parce que les clics payants portent oppref et auraient déjà été reconnus sur ce premier critère.
La table de décision de Convrail, et pourquoi l’ordre des lignes compte
Convrail applique une table de décision fixe à chaque commande et enregistre, à côté de l’attribution, la règle qui s’est déclenchée ainsi que la valeur qui a correspondu. La première ligne qui correspond l’emporte.
| 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é |
L’ordre encode la fiabilité. oppref est vérifié en premier parce que c’est le seul signal qui ne peut être produit par rien d’autre qu’un clic ChatGPT Ads ; une commande payante n’est donc jamais rétrogradée en organique quand le référent a été retiré ou que l’acheteur a effacé ses cookies. Les UTM payants viennent en deuxième parce qu’ils sont délibérés, même s’ils sont falsifiables. Le référent vient en dernier parce qu’il est le plus fragile et le moins spécifique.
La preuve est ce qui rend la table auditable. Chaque commande attribuée dans Convrail porte trois choses : le medium (ads ou organic), la méthode (quelle ligne a correspondu) et la preuve (la valeur oppref réelle, la paire UTM ou l’hôte du référent). L’export CSV comprend les mêmes colonnes, si bien qu’un marchand ou une agence peut redériver chaque attribution à partir des champs bruts sans faire confiance à l’étiquette. C’est le même principe que sur la page produit consacrée à l’attribution : un chiffre ne vaut d’être lu que si l’on peut voir la règle qui l’a produit.
Convrail lit ces signaux tels que votre plateforme les a enregistrés sur la commande. Sur Shopify, ce sont landing_site et referring_site issus du webhook de commande ; le web pixel conserve aussi oppref dans le cookie first-party pendant 7 jours pour que l’identifiant atteigne les événements de conversion envoyés à OpenAI, ce qui fait que l’Ads Manager et votre tableau de bord finissent par décrire le même clic.
Réconcilier avec l’Ads Manager
Les marchands qui comparent les commandes étiquetées ChatGPT dans Shopify avec la colonne des conversions de l’Ads Manager trouvent généralement deux nombres qui divergent. Les deux peuvent être justes, parce qu’ils comptent des choses différentes.
L’Ads Manager compte les conversions attribuées à des clics publicitaires. La référence Insights indique que « conversions is always equal to click_through_conversions; view-through conversions are a separate, supplemental metric and are not added to that total », et que « Click-through attribution follows the applicable configured click window. » Une conversion y apparaît quand un événement order_created portant un oppref correspondant a atteint OpenAI, depuis le pixel ou la Conversions API, à l’intérieur de la fenêtre.
L’étiquette de Shopify compte les sessions dont le référent ou la page d’atterrissage pointait vers ChatGPT, payant ou organique, sans aucune fenêtre et sans se soucier qu’un événement ait jamais atteint OpenAI.
La réconciliation est donc une soustraction, pas une chasse au bogue :
- Partez des commandes attribuées par Convrail sur la période, réparties par medium.
- Retirez les lignes organiques. L’Ads Manager ne les a jamais comptées.
- Parmi les lignes ads, attendez-vous à une correspondance pour chaque commande dont l’événement
order_createda été envoyé dans la fenêtre de clic et accepté. Les commandes passées après la fenêtre, celles dont les événements ont été retenus pour cause de consentement, et celles passées sur un appareil où le cookie__opprefétait absent figureront dans Convrail (l’URL d’atterrissage suffit comme preuve) mais pas dans l’Ads Manager. - Ce qui reste inexpliqué mérite une enquête : une commande avec
opprefdans l’URL d’atterrissage, dans la fenêtre, avec un événement accepté, et aucune conversion dans l’Ads Manager, pointe vers un trou de suivi. Les modes de défaillance sont décrits dans Optimisation des conversions ChatGPT Ads.
Deux réserves. Convrail date une commande par son horodatage de commande, tandis que l’Ads Manager rapporte selon ses propres conventions ; les comparaisons au jour dériveront donc aux bords. Comparez sur une semaine plutôt que sur un jour. Et le chiffre de conversions de l’Ads Manager est un décompte d’événements, alors que Shopify compte des commandes ; si votre pipeline a un jour envoyé une commande sous deux identifiants, c’est le côté Ads Manager qui sera gonflé.
Ce que l’attribution ne peut pas prouver
Une étiquette de source, aussi soigneusement déduite soit-elle, est une observation first-party au dernier contact. Elle répond à « de quel lien cette session est-elle partie ? », et à cela seulement.
Elle ne voit pas l’acheteur qui a demandé une comparaison à ChatGPT, s’est laissé convaincre, et a cherché votre marque sur Google une heure plus tard. Cette commande se lira Google, et ce sera exact comme énoncé sur la session tout en manquant la cause. Elle ne voit pas l’acheteur qui a lu la réponse sur un téléphone et acheté sur un ordinateur portable. Elle ne distingue pas un lien ChatGPT transféré dans une discussion de groupe d’un clic à l’intérieur de ChatGPT, sauf si l’URL portait un paramètre.
Elle ne vaut aussi que ce que vaut l’enregistrement de la plateforme. Shopify stocke la page d’atterrissage et le référent envoyés par le navigateur ; si une chaîne de redirections, un outil de consentement ou une application a réécrit l’URL avant que Shopify la voie, la preuve est ce qui a survécu. Convrail ne comble pas ces trous avec des chiffres modélisés. Il rapporte ce qu’il peut prouver, étiquette chaque commande attribuée avec sa méthode, et vous laisse la pondération. La façon de lire ensuite ensemble les moitiés organique et payante, définition du ROAS comprise, fait l’objet de ChatGPT organique ou ChatGPT Ads.
Erreurs fréquentes
- Filtrer les commandes par
source_namepour trouver le trafic ChatGPT. Ce champ nomme le canal de vente (web,pos, une application de canal), jamais le référent. - Lire un référent chatgpt.com comme la preuve d’une publicité. Sans
oppref, la session doit être traitée comme organique. - Lire le parcours au moment du webhook et traiter un
momentsCountnul comme « aucune visite ». Shopify peut encore être en train d’attribuer la commande ; vérifiezready. - Comparer une seule journée de commandes Shopify à une seule journée de conversions Ads Manager et conclure qu’un des deux côtés est cassé.
- Retirer les paramètres de requête des URL d’atterrissage avant de les stocker, par souci de propreté, et perdre
opprefavec eux. - Faire confiance à des UTM que vous n’avez pas créés comme s’il s’agissait d’identifiants émis par la plateforme.
Et maintenant
Si votre administration Shopify affiche des commandes ChatGPT et que vous voulez savoir lesquelles vous avez payées, avec la preuve par commande et un CSV pour la vérifier, commencez par l’attribution Convrail.
Sources
Questions fréquentes
D'où Shopify tire-t-il la source affichée sur une commande ?
Des données de visite attachées à la commande : l'URL de la page d'atterrissage et le référent de la session, exposés dans l'API sous landing_site, referring_site et le customerJourneySummary. Personne ne la saisit ; c'est ce que le navigateur a envoyé.
Pourquoi certaines commandes ChatGPT apparaissent-elles en direct dans Shopify ?
Parce que le référent n'est présent que si le navigateur l'envoie sur la première requête de la session. Un visiteur qui revient plus tard en tapant l'URL, ou dont la session se rompt, ouvre une nouvelle session que Shopify enregistre comme direct ou unknown.
Comment distinguer dans Shopify une commande ChatGPT Ads d'une commande ChatGPT organique ?
Par l'URL d'atterrissage. Un paramètre oppref sur la page d'atterrissage ne provient que d'un clic ChatGPT Ads ; un référent chatgpt.com sans ce paramètre indique l'organique. Shopify enregistre l'URL, Convrail applique la règle et conserve la preuve par commande.
Pourquoi l'Ads Manager compte-t-il moins de conversions que mes commandes ChatGPT dans Shopify ?
L'Ads Manager compte les conversions post-clic dans la fenêtre de clic configurée, à partir de l'identifiant oppref. L'étiquette de Shopify fondée sur le référent capte aussi les visites organiques et les acheteurs qui reviennent, qui ne sont pas des conversions publicitaires.