ChatGPT Ads in GA4: UTMs, Attribution, and the Dark Traffic Trap
Without UTMs, ChatGPT ad clicks land in GA4 as Direct - the same trap that already hides most AI traffic. Here is the exact tagging, channel-grouping, and cross-check setup that keeps your spend measurable.
Viren Inaniyan · August 29, 2026 · ChatGPT Ads

OpenAI will happily bill you for every ChatGPT ad click. GA4, left alone, will file most of those clicks under Direct - the same black hole that already swallows the bulk of AI referral traffic. Before you scale spend, fix the plumbing: UTMs on every ad, a channel group that catches them, and a monthly cross-check against Ads Manager.
The dark traffic trap, now with a bill attached

We have written before about Dark Agentic Commerce Traffic - the pattern Scot Wingo of ReFiBuy named, in which the bulk of AI-referred visits land in GA4 as Direct because the click carries no usable referrer. Our full breakdown of the DACT problem covers the organic side.
Ads make the same problem more expensive. When someone taps a sponsored placement in the ChatGPT app, the click frequently opens your site with no referrer header at all. GA4 sees a session with no source, no medium, no campaign - and files it as Direct. The click you paid for becomes indistinguishable from someone typing your URL from memory.
That matters twice over. First, you cannot compute return on spend for a channel GA4 cannot see. Second, the traffic is worth seeing: AI-referred visits to US retail sites convert 60% better than non-AI traffic (Adobe Analytics via Digital Commerce 360, July 2026 data). Agencies already report measurement gaps as the top complaint about chatbot advertising (eMarketer/Digiday, 2026). Most of that gap is not mysterious. It is untagged URLs.
Fix one: UTMs in the landing-page query parameters field
ChatGPT's Ads Manager (the same self-serve console we walk through in our setup guide) has a landing-page query parameters field on each ad. Whatever you put there is appended to your destination URL at click time. This is where your attribution lives or dies.
Use dynamic macros so you never hand-label an ad again:
utm_source=chatgpt&utm_medium=paid&utm_campaign={campaign_id}&utm_content={ad_group_id}&utm_term={ad_id}At serve time, Ads Manager substitutes the real IDs, so every click arrives in GA4 stamped with exactly which campaign, ad group, and ad produced it.
Keep utm_source lowercase and consistent. GA4 treats chatgpt, ChatGPT, and chat.openai.com as three different sources. Pick chatgpt once and never vary it.
Use utm_medium=paid (or paid_chat). This is what separates ad clicks from organic ChatGPT referrals that happen to carry a referrer - you want those in different rows.
Prefer IDs over names in macros. Campaign names get renamed mid-flight; IDs do not. You can map IDs to names in a lookup table later.
Check your redirects. A 301 chain or a consent-wall redirect that strips query strings will silently delete your tagging. Click your own ad from a phone and confirm the parameters survive to the final URL.
Fix two: understand what __oppref does - and does not do
Install OpenAI's measurement stack alongside your UTMs. The pixel (oaiq.min.js) stores an __oppref click-ID cookie when a visitor lands from a ChatGPT ad, and the server-side Conversions API (bzr.openai.com/v1/events) sends purchase events from your backend; the two deduplicate on a shared event_id, with a default 30-day conversion window (OpenAI docs, 2026).
Here is the division of labor, because it confuses people:
__oppref answers OpenAI's question: did this click convert? It is how Ads Manager reports conversions and how conversion-optimized CPC bidding learns. Without it, OpenAI's conversion columns stay empty and its bid models optimize toward clicks you never valued.
UTMs answer your question: what did this channel contribute relative to every other channel? GA4 never reads __oppref. Only the query parameters you append make ChatGPT Ads visible in your own reporting, your attribution models, and your board deck.
Run both. Neither substitutes for the other, and together they give you two independent counts of the same activity - which becomes useful in fix four.
Fix three: give ChatGPT Ads its own GA4 channel
Even correctly tagged, ChatGPT ad sessions will land in GA4's default "Paid Other" or an unassigned bucket, because Google's default channel definitions do not know what chatgpt / paid means. Build a custom channel group:
- In GA4: Admin → Data settings → Channel groups → create a copy of the default group.
- Add a channel named ChatGPT Ads, matched on
source exactly matches chatgptANDmedium exactly matches paid. - Add a second channel, AI Organic, for referral sessions from
chatgpt.com,perplexity.ai,gemini.google.com, and peers, so the earned layer gets its own row too. - Order both above the default Referral and Direct rules - GA4 assigns the first matching channel.
- Select the new group in your Traffic acquisition reports.
Now paid and organic ChatGPT traffic report side by side, and the comparison is worth watching. In our own US campaigns running since July 2026, paid CTR has averaged around 1.3% (our campaign data), against an industry chatbot-ad benchmark near 0.9% (eMarketer, 2026) - but the organic recommendation next to that ad converts without a media bill. Our ChatGPT Ads hub tracks both layers, and the vs. Google Ads comparison covers where the next dollar goes.
Fix four: cross-check Ads Manager against GA4 to measure the leak
No client-side setup captures everything. Blocked scripts, declined consent banners, in-app browsers, and plain definitional differences (a click is not a session) all bleed sessions. So measure the bleed instead of guessing:
- Pick a clean 30-day window.
- Pull clicks by campaign from Ads Manager.
- Pull sessions for the ChatGPT Ads channel from GA4, segmented by
utm_campaign. - Compute sessions ÷ clicks per campaign. The shortfall is your tracking-loss rate.
- Re-run monthly and watch the trend, not the single number.
Two practical uses. First, a stable loss rate becomes a correction factor: if GA4 sees 80% of billed clicks, gross up GA4-attributed revenue accordingly before judging the channel. Second, a sudden drop in the ratio is an alarm - usually a stripped query string, a broken redirect, or a consent-mode change - that you catch in days instead of quarters. Given that ChatGPT ads only reached $100M in annualized revenue in 2026 (eMarketer, 2026), the platform's measurement tooling is young; your own cross-check is the audit layer.
Where Tru Commerce fits
Ads rent the conversation. Everything above helps you count what the rented placement returns - and honest counting usually reveals the second layer underneath it: the organic recommendation, which ChatGPT gives to the brands its models already trust, and which is the only layer Plus and Pro users ever see. As our founder put it on the record: "Brands cannot buy influence over ChatGPT's answers" (The Hindu BusinessLine, Aug 2026).
We build for that earned layer. Before you scale ad spend against a channel you have just made measurable, find out whether ChatGPT already recommends you when nobody is paying. Run the free Citation Rank scan - work email and brand URL, results in 24 hours - and see where you stand across ChatGPT, Gemini, Perplexity, and the other agent surfaces. Then decide how much of the conversation you want to rent versus own.
Worth checking what this channel already drives for you: for MyMuse, GA4 reported ₹11.5K/mo of AI revenue when the real number was ₹81.2K/mo - read the MyMuse case study. If you want to see where you stand before committing, start with ChatGPT Ads for ecommerce brands.
FAQ
Clicks from the ChatGPT apps often open your site without a referrer header, so GA4 has nothing to classify and defaults the session to Direct. Adding UTM parameters to every ad's landing URL is the only reliable fix you control.
Add UTM parameters in Ads Manager's landing-page query parameters field, using macros like {campaign_id} for automatic labeling. Then build a custom channel group in GA4 so tagged sessions roll into their own ChatGPT Ads channel instead of Direct or Referral.
It is the click identifier OpenAI's pixel (oaiq.min.js) stores as a first-party cookie when someone lands from a ChatGPT ad. It ties on-site conversions back to the click for Ads Manager reporting - but GA4 never sees it, so you still need UTMs.
Some gap is normal: blocked scripts, consent declines, app-to-browser handoffs, and differing definitions of a click versus a session. Compare tagged GA4 sessions to Ads Manager clicks over the same window; the shortfall is your tracking-loss rate.
No. The pixel and Conversions API feed OpenAI's reporting, so Ads Manager can count conversions. UTMs feed your reporting, so GA4 can attribute revenue across channels. Run both - they answer different questions and deduplicate on shared event IDs.
Sources
- 1.Ads in ChatGPT: The Basics - OpenAI Help Center, 2026
- 2.Ads Measurement Pixel documentation - OpenAI Developers, 2026
- 3.Ads Conversions API documentation - OpenAI Developers, 2026
- 4.Conversion measurement - OpenAI Help Center, 2026
- 5.Adobe: AI referral traffic to retail sites converts 60% higher, July 2026 data - Digital Commerce 360, 2026
Continue reading
October 10, 2026
ChatGPT Ads in India: six weeks in, on the record
ChatGPT Ads switched on in India on 27 August 2026. Six weeks on, eight articles in five outlets quoted us and TechTimes cited our benchmarks. Every question the press asked, every answer verbatim and linked, and the numbers behind each one.
September 4, 2026
Criteo Prompt Smart Ads: 2,000 Brands on ChatGPT and a 4x Spend Lift
Criteo was the first ad-tech partner inside OpenAI's ChatGPT ads pilot. Its Prompt Smart Ads product auto-generates creatives and context hints matched to how people actually prompt - here is what it is, the numbers behind it, and what its creative reports teach every advertiser.
September 2, 2026
ChatGPT Ads Conversion Strategies: What the Query-Mix Data Says to Do
Only ~1 in 10 ChatGPT conversations carries commercial intent, 76.4% of shopping answers already show an ad, and market leaders buy almost none of them. Four strategies built on that data - not on search-ads instinct.