ChatGPT Ads Attribution: How OpenAI Counts a Conversion and How Your Orders Count It
ChatGPT ads attribution explained: the oppref click id, OpenAI's pixel and Conversions API, the attribution windows, why paid and free ChatGPT traffic look the same in GA4, what early advertisers found, and how order-based attribution tells a ChatGPT ad click from a free ChatGPT referral.
Tilen Ledic
Written by
ChatGPT started showing ads under its answers in February 2026, opened 31 European countries in August, and by September every furniture store owner we work with had asked the same question: should we be there, and how would we even know if it worked? The second half of that question is the hard one. A ChatGPT ad click and a free ChatGPT recommendation arrive at your store from the same domain, with the same referrer, and most analytics tools file them in the same bucket. The money goes into one, the credit into the other.
This guide is about ChatGPT ads attribution: how OpenAI counts a conversion, why the platform's number and your order count will disagree, why GA4 struggles to separate paid from free ChatGPT traffic at all, what the first advertisers found, and how order-based attribution settles it with one click id. It is written for the owner who has to decide whether the channel pays, with the technical parts kept to what that decision needs.
What are ChatGPT ads and who sees them?
ChatGPT ads are sponsored links OpenAI shows below the end of an answer, labelled as sponsored and visually separated from the answer itself. They appear only for people on the Free and Go plans; Plus, Pro, Business, Enterprise and Edu accounts see none, and neither do accounts identified as under 18. Testing began in the United States on 9 February 2026, the 31 European markets (all EU states plus Iceland, Liechtenstein, Norway and Switzerland) followed on 24 August, and self-service through Ads Manager opened in Europe on 31 August.
Targeting is contextual. OpenAI's system picks an ad from the topic and intent of the current conversation, the ad's landing page, title and copy, and the context hints the advertiser wrote (phrases describing the conversations the ad belongs in). In the European version there is no personalisation from chat history or a profile at launch: the signals are the conversation, approximate location, device, language and time of day. Campaign objectives are Views (paid per thousand impressions), Clicks (paid per valid click) and, since 7 August 2026, Conversions: still paid per click, but delivery is optimised toward one conversion event you choose, which is the mode that needs your conversion data most.
Two things an advertiser used to Google will miss: there are no keywords, only context hints, and there is no report of the conversation that triggered the click. You will never see what the person asked before they clicked your ad.
How does OpenAI count a ChatGPT ad conversion?
OpenAI's measurement has three parts, and the first one is the part that matters for everything that follows.
- The click id. Every click on a ChatGPT ad lands on your page with
oppref=...appended to the URL, the way Google appendsgclidand Meta appendsfbclid. Nothing to configure; it is on the landing URL itself. It is an opaque token that identifies the click, not the person, and it is the only thing that separates a paid ChatGPT visit from a free one. - The measurement pixel. OpenAI's JavaScript tag (the
oaiqpixel) readsoppreffrom the landing URL, stores it in a first-party cookie called__oppreffor 30 days, and sends conversion events you fire (purchase, lead) back to OpenAI with that id attached. - The Conversions API. A server-side channel that sends the same events from your server, with the stored
oppref, so an ad blocker or Safari does not lose them. OpenAI recommends running both, and for Conversions campaigns the server-side path is close to mandatory: the bidding learns only from conversions it can see.
The windows are set per campaign in Ads Manager: a click window of 7, 14 or 30 days, and a view window of 0 or 1 day. The default is 7-day click plus 1-day view. When both a click and an impression qualify, the click gets the credit. Conversions show up in reporting 24 to 48 hours after they happen, and the reporting API returns click-through and view-through conversions as two separate figures, which is a small mercy: at least the platform tells you which of its conversions had no click behind them.

ChatGPT ads attribution at a glance
Everything below is set in Ads Manager or fixed by OpenAI; the last column says what an order-based report does with it.
| Setting or fact | What OpenAI offers | Default | What your orders do with it |
|---|---|---|---|
| Click id | oppref appended to every ad click's landing URL | always on | captured on landing, kept 90 days in a first-party cookie, the one proof of a paid click |
| Click attribution window | 7, 14 or 30 days after the click | 7 days | 90 days on the same browser; 30 days across devices through the captured email |
| View-through window | off, or 1 day after an impression | 1 day | never counted: no click, no proof |
| Click vs view | the click wins when both qualify | only clicks exist | |
| Measurement | the oaiq pixel (first-party __oppref cookie, 30 days) and the Conversions API, alone or together | pixel | neither is needed for the count; both are needed for OpenAI's bidding |
| Conversion event | one event per data source: purchase, lead, add to cart, custom | orders for a shop, enquiries for a service, always the real ones | |
| Reporting delay | conversions appear 24 to 48 hours later | an order counts the moment it exists | |
| Reported figures | impressions, clicks, CTR, CPC, CPM, conversions; click-through and view-through separately | spend and clicks per campaign and day, orders split direct and multi-touch, ROAS from direct | |
| Objectives | Views (CPM), Clicks (CPC), Conversions (oCPC, paid per click, optimised to one event) | same count whatever the objective | |
| Minimum budget | 25 dollars a day in the help centre; the European Ads Manager sets its own floor in euros | ||
| Targeting levers | context hints, geography, language, device; negative topics; custom audiences from email lists outside the EEA | ||
| Personalisation in the EU | none at launch: conversation topic, approximate location, device, language, time of day | ||
| Who sees the ads | Free and Go plans, adults only | ||
| What you cannot see | the prompt or conversation behind a click, auction-level data, per-keyword delivery | the landing page and everything after the click |
Why is ChatGPT ads attribution harder than Google's?
On Google Ads you have a click id, a keyword, a search term report and twenty years of tooling. On ChatGPT you have the click id and not much else, and four things work against you.
- Paid and free share a domain. ChatGPT has been sending free referral traffic to stores since 2024, often tagged with
utm_source=chatgpt.comand no medium. A paid click comes from the same chatgpt.com with the same referrer. In GA4 the source alone cannot tell them apart; only a medium you add yourself (utm_medium=cpcon the ad's landing URL) splits them, and the AI traffic guide shows that conversational interfaces sometimes drop those parameters before the click resolves. When that happens, a paid click is counted as a free referral and the ad account looks like it sold nothing. - Apps strip the referrer. A click inside the ChatGPT mobile app often arrives with no referrer at all and lands in Direct. The
opprefparameter survives that; the session data does not. - No keyword, no context. There is no search term to read, no report of the conversation, and OpenAI does not guarantee delivery against particular words or topics. The only feedback loop is what happens after the click.
- Modeled and view-through credit. OpenAI counts one-day view-through conversions by default, so a person who saw your ad and bought through Google the next day is OpenAI's conversion and Google's conversion at once. The conversion counting guide explains why every platform's number is a claim, not a count.
The practical consequence: on ChatGPT the click id is not one signal among many. It is the whole attribution.
What did the first advertisers find?
Seven months in, the honest summary is that nobody has a benchmark. Search Engine Journal's September review found cost per click ranging from 3 to 22 dollars across advertisers, with OpenAI saying it does not yet have performance benchmarks by industry or campaign type, no auction-level reporting to explain the spread, and no way to see the matching decisions that put an ad in front of a conversation. Ads Manager gives impressions, clicks, CTR, average CPC and CPM, and conversions, and that is the whole picture.
The most useful public data comes from a software founder who documented a month of spend in detail at Successful Software. The setup was simpler than Google's, clicks were cheaper than the recommended bid and the click-through rate was 7.9 percent. The conversion rate was 0.46 percent, and in a follow-up 857 clicks produced three installs: 0.35 percent. Instrumenting time on page and mouse movement showed the clicks were mostly human, not bots; they were badly matched to the conversation. The line that matters for this guide: free ChatGPT referrals to the same site converted an order of magnitude better than the paid clicks.
That is one product in one category, and the platform changes monthly. Read it as a warning about two things, not as a verdict on the channel: you cannot judge ChatGPT ads from clicks and CTR, and you cannot judge them at all if paid and free ChatGPT traffic land in one bucket.
How Enalitica counts a ChatGPT ad order
We added ChatGPT Ads to Enalitica in September 2026 as a click-id channel, the same shape as Microsoft Ads, and the design rests on one rule.
The click id outranks the referral. Our tracking script captures oppref from the landing URL, next to gclid, fbclid, msclkid and the others, and keeps it in a first-party cookie for 90 days, three times longer than OpenAI's own cookie and longer than any click window Ads Manager offers. When an order carries oppref, it is a ChatGPT Ads order, whatever the referrer or the UTM said. When it carries a chatgpt.com referrer and no oppref, it is a free AI referral and goes to the AI channel with Perplexity, Gemini and Claude. Without this rule the same order would land in both, the paid revenue would leak into the organic AI bucket, and the influence chart would count one touch twice. The click-id capture guide shows the same capture for WooCommerce and Shopify.
Thirty days of stitching across devices. A customer who clicked the ad on a phone and orders from a laptop two weeks later has no oppref in the order session. If the email on the order matches an identity we captured with the click, the click id is stitched back onto the order, within 30 days of the click and never over a value the order already carries.
Two buckets, one spend. The ChatGPT Ads tab in Poročila shows the month's spend, clicks and impressions synced nightly from OpenAI's reporting API per campaign and day, against two order buckets: direct (ChatGPT was the only channel on the journey) and multi-touch (ChatGPT plus another channel, and the same order also appears under that channel). ROAS is computed from the direct bucket only, the conservative floor; multi-touch ROAS sits beside it and is never added in. Cost per order, average order value and the multi-touch share complete the row. A service business sees the same tab with enquiries instead of orders. The assisted conversions guide explains why we report the two buckets instead of one blended figure.
OpenAI's number beside ours, never merged. The nightly sync also reads OpenAI's own attributed conversions and its view-through share, and the tab shows them next to our count with the gap explained. They never enter our conversions column, because they include views without a click that no click id can prove.

Connected through MCP, the whole tab is one question away: "What did ChatGPT ads bring in September, and what does OpenAI claim?" returns spend, both buckets, ROAS, the campaigns and OpenAI's own figure, and "How much free traffic do we get from ChatGPT?" returns the other side, kept apart on purpose.
Why OpenAI's number and yours will disagree
They will, every month, and the gap has four honest causes. Knowing which one you are looking at is most of the analysis.
- View-through. OpenAI counts a purchase within one day of an impression when no click qualifies. Your orders cannot see an impression. This is usually the largest part of the gap, and OpenAI reports it separately, so you can subtract it.
- Another platform closed. The person clicked your ChatGPT ad on Tuesday, clicked your Google Shopping ad on Thursday and bought. OpenAI counts it (inside its click window), Google counts it, and your order shows it once, under Google as last click and under ChatGPT as multi-touch. The order is real; the two platform claims add up to twice the sale.
- Windows and stitching. OpenAI's default click window is seven days; ours is ninety on the same browser and thirty across devices through identity stitching. An order on day twenty is yours and not OpenAI's. In the other direction, an order where the customer declined cookies and paid with a different email is OpenAI's (through its pixel or Conversions API with hashed data) and not provably yours.
- The event is not a sale. A Conversions campaign optimised to a lead event or an add-to-cart reports those, not purchases. Check what the campaign's event is before comparing it to orders.
The rule for the owner: OpenAI's figure is the ceiling, the direct bucket is the floor, and the truth for budget decisions is the floor plus what multi-touch shows. If the floor alone is above break-even, the channel pays. If only OpenAI's ceiling is, you do not know yet.

How to decide whether ChatGPT ads pay for your store
The channel is young, cheap to test and impossible to judge from the platform's own dashboard. A test that can answer the question looks like this.
- Tag the landing URL yourself. Add
utm_source=chatgptandutm_medium=cpcto every ad's destination, exactly in that spelling, so GA4 has a fighting chance of splitting paid from free even when the click id is all you can rely on. The UTM convention has the full scheme. - One event, one campaign, four weeks. Pick the purchase event for a store or the enquiry event for a service, run a Conversions campaign with both the pixel and the Conversions API feeding it, and hold it for four weeks; the first week is learning and not evidence. OpenAI's help centre names a 25 dollar daily minimum, and the European Ads Manager sets its own floor in euros, so the smallest honest test costs a few hundred euros.
- Judge on the direct bucket against break-even. Profit per euro of ChatGPT spend on direct orders, with your cost prices loaded, against 1.0. The POAS guide is the arithmetic. Clicks and CTR tell you nothing here; the Successful Software case had a 7.9 percent CTR and lost money.
- Compare with the free side of the same domain. Your AI channel shows conversion rate and orders from free ChatGPT referrals in the same month. If free ChatGPT visitors convert at three times the rate of paid ones, your ad is reaching the wrong conversations, and the fix is the context hints and the landing page, not the bid.
- Look at the new-customer share. A channel that sells to people who already know you is expensive insurance; a channel that brings first orders is worth a lower ROAS. The CAC guide covers the arithmetic.
We run a small campaign of our own and measure it exactly this way, with oppref captured on signup, because nothing in this article should be something we would not do ourselves. In our test the clicks cost around 1.5 euros, well under the bid OpenAI recommends, which is exactly why the price of a click is the wrong thing to watch: what the click does afterwards is the whole question. Whether the channel earns its budget is a question your orders answer in a month; the platform's dashboard never will.
Frequently Asked Questions
Does GA4 separate paid ChatGPT traffic from free ChatGPT referrals?
Only if you add utm_medium=cpc to the ad's landing URL and the parameter survives the click; free ChatGPT clicks arrive with utm_source=chatgpt.com and no medium, so the source alone cannot split them. Clicks from the ChatGPT app often lose the referrer entirely and land in Direct. Order-based attribution uses the oppref click id instead, which is on every paid click and on no free one.
Do I need OpenAI's pixel if I already have order-based attribution?
Yes, for the platform's sake, not yours. OpenAI's bidding optimises toward the conversions its pixel and Conversions API report; without them a Conversions campaign learns from nothing and gets worse. Your own attribution answers whether the channel paid; OpenAI's pixel keeps the campaign running. Run both, and read the budget decision from your orders.
Why does OpenAI report more conversions than my orders show?
View-through conversions (a purchase within a day of an impression, no click), orders another platform's click closed after the ChatGPT click, purchases matched through hashed customer data your tracking could not, and campaigns optimised to an event that is not a sale. OpenAI reports view-through separately, so subtract it first; the rest is the normal gap every platform shows, described in how Meta, Google and Enalitica count conversions.
Do I have to add UTM parameters to ChatGPT ads?
OpenAI appends oppref on its own; UTM parameters you add yourself. Add them anyway (utm_source=chatgpt, utm_medium=cpc, a campaign name), because they are the only way GA4 and your email tools can tell the paid visit apart, and because a click that loses its referrer in the app still keeps the URL parameters.
Can I see which conversations triggered my ChatGPT ad?
No. Ads Manager reports impressions, clicks, CTR, CPC, CPM and conversions, and OpenAI does not show the prompt or the conversation behind a click, nor guarantee delivery against particular words. Context hints are the only steering wheel, and the landing pages and orders after the click are the only feedback.
Do ChatGPT ads change how often ChatGPT recommends my store for free?
Nobody can measure that yet, and OpenAI states that ads do not influence its answers. Keep the two apart in your reporting: paid clicks under ChatGPT Ads by their click id, free referrals under the AI channel, and read the AI traffic guide for what the free side can and cannot show. If free ChatGPT referrals rise while you advertise, treat it the way we treat the Meta halo: visible, not measurable.
See your real numbers
Import 30 days of orders or leads during a 5-minute onboarding. Works for e-commerce and service businesses.
See plans and pricing