ChatGPT Ads can spend money. They still cannot, on their own, tell you whether that money produced a purchase, a demo, or a lead you already count in GA4, Meta, and Google Ads.
OpenAI's own crawler docs split the work into separate user agents: OAI-SearchBot for ChatGPT search, GPTBot for training, ChatGPT-User for live fetches, and OAI-AdsBot only for pages you submitted as ads. Those are not interchangeable, and none of them is a complete ads attribution system. See Overview of OpenAI Crawlers.
Hardal already ships the conversion leg: the OpenAI Ads destination sends first-party web events server-side, and the OpenAI Measurement Pixel covers the browser SDK when you need it. What follows is the layer around both: why platform CSVs are not enough, what to instrument before you scale spend, and why bot traffic on your origin is a separate job.
What advertisers actually get from the channel
Early ChatGPT Ads reporting has been clicks, impressions, and a lot of waiting. Search Engine Land covered the same gap: agencies in the pilot could not prove business results even when the ads ran. OpenAI has been adding Ads Manager conversion tools, including the Measurement Pixel and Conversions API. Those help. They still sit next to every other failure mode you already know: Safari ITP, ad blockers, stripped referrers, and journeys that do not look like a Google click.
If you only trust the weekly export, you are measuring the channel the way the channel wants to be measured. If you also send the same conversion you already send to Meta CAPI and Google Ads, from your own first-party pipeline, you can compare ChatGPT spend to the rest of the mix on terms you control.
Why last-click analytics will undercount this
Search and social attribution assume a click, a landing page, and a browser that executes your tags. ChatGPT compresses research into a conversation. The "destination" after an ad is sometimes another prompt, not your site. When a click does land, the referrer may show chatgpt.com, openai.com, or nothing. UTMs on the ad URL should work when the product preserves them. Conversational surfaces do not always pass query strings cleanly.
Client-side pixels make that worse. If JavaScript does not run, the conversion never leaves the laptop. That is the same reason GA4 does not show AI crawler hits: crawlers request HTML and skip the tag. Ad-driven humans can still lose events to blockers and short cookie lifetimes. Server-side collection on a first-party domain is the part that still fires.
Safari still caps JavaScript cookies at seven days. A ChatGPT click today and a purchase three weeks later is a plausible path for a $10k+/month media team. First-party, server-set identifiers keep that window longer than a browser cookie will. That is not unique to ChatGPT. It is why Hardal exists for Meta, Google, and TikTok too.
Two jobs people keep collapsing
| Job | What you are measuring | What it is not |
|---|---|---|
| Ads | A person clicked (or saw) a ChatGPT ad, then converted on your site | GPTBot reading /blog |
| Crawlers | Named bots hitting origin: trainers, search indexers, fetchers, SEO tools | ROAS |
Mixing them produces fake "AI traffic" dashboards. A spike in GPTBot is a content/training signal. A spike in ChatGPT-User on /pricing is closer to live intent. A ChatGPT Ads conversion is oppref plus an order_created or lead_created event. Treat those as three reports, not one.
The rest of this series is the crawler job, bot by bot: GPTBot, ClaudeBot, Google-Extended, PerplexityBot, OAI-SearchBot, ChatGPT-User, Meta-ExternalAgent, Googlebot, Bingbot, SemrushBot, AhrefsBot.
What to set up before you scale ChatGPT Ads
1. Send conversions from your server, not only from the page.
OpenAI documents pixel, Conversions API, or both. The API is the more reliable path when browsers drop the pixel. Hardal maps supported web events to OpenAI conversions without a second client tag. Setup is in Enable ChatGPT Ads Conversion Tracking with Hardal. Event names and oppref are in OpenAI Measurement Pixel.
2. Keep oppref through redirects.
Click-through attribution uses the OpenAI click reference on the landing URL. If your CDN, app router, or payment redirect strips query params, later conversions cannot match. Preserve oppref the same way you already protect gclid and fbclid.
3. Hash user identifiers on the server.
If you send email or phone for matching, hash before the payload leaves your infrastructure. Doing it only in the page source is visible and easier to break.
4. Decide the attribution window before the first campaign.
ChatGPT does not fit a clean last-click story. Pick a window and a conversion definition that already exists for Meta and Google, then add ChatGPT as another destination. Retrofitting the model after spend is how you invent a win.
5. Put ChatGPT next to the rest of the mix.
A new channel that only lives in a CSV is a reporting fragment. The same first-party events you already route to GA4 and CAPI should also go to OpenAI Ads. That is the comparison, not a separate "AI ROAS" slide.
6. Measure bots in logs, not in the ads pixel.
Hardal AI Visibility identifies named crawlers on the same server-side pipeline as Hardal Analytics, with no extra script. It will not replace Ads Manager, but it will stop you from reading GPTBot as campaign traffic.
Pre-launch checklist
- OpenAI Pixel ID and API key in Hardal Destinations → OpenAI Ads, destination Activate
- Validate Only tested, then turned off for production (docs)
- Landing URLs keep
oppref - Purchase / lead events already used for Meta and Google also map to OpenAI (
order_created,lead_created, or the standard event that matches) - Consent: if a CMP is required, the pixel does not init as opted-in before choice
- robots.txt: GPTBot vs OAI-SearchBot vs ChatGPT-User set deliberately, not copied from a generic block-all list
- One report that shows ChatGPT conversions beside Meta and Google, from first-party events
What we are not doing
The sibling posts in this series stay short on purpose. SemrushBot is not an ads platform, and Google-Extended is a Gemini training token rather than Google Ads. Measuring those hits is useful. Giving them a Conversions API they do not have is not.
We are also not asking you to rip out GA4. Hardal is measurement infrastructure. Analysis still happens in GA4, Mixpanel, or the warehouse. The job is to deliver the event when the browser would have dropped it.
Get started
- Request a demo if you want ChatGPT Ads on the same pipeline as Meta CAPI
- OpenAI Ads destination and Measurement Pixel for the implementation
- AI Visibility and the playbook for crawler traffic
- What marketers should do about AI crawler traffic for the decision layer after the logs