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: ChatGPT-referred ecommerce traffic converts at 15.9%, against 1.76% for Google organic (Adobe, 2025). 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.
FAQ
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
Continue reading
August 29, 2026
Context Hints, Not Keywords: How ChatGPT Ads Targeting Actually Works
There is no keyword bidding in ChatGPT ads - just a free-text field called context hints. How to write hints that put your ad inside the right conversations, with the framework we use for our own campaigns.
August 29, 2026
Who Is Advertising on ChatGPT? The Named Brands So Far
Target, Williams-Sonoma, Adobe, Ford, Audible, HelloFresh - the confirmed ChatGPT advertisers from the launch pilot, the agencies running them, the India wave, and what the roster tells you about who this channel is for.
August 29, 2026
ChatGPT Ads on Reddit: What Advertisers Actually Report
OpenAI publishes almost no benchmarks, so r/PPC built its own. We read the threads: real CPCs of $2-8, CTRs from 0% to 2.4%, and one recurring complaint that matters more than any number.