Why ChatGPT Ads Traffic Lands in Referral in GA4, and How to Fix It
By Keshav Parsai 9 min read
In brief
Fix ChatGPT Ads visits classified as Referral in GA4 with manual UTMs, source conventions, and a custom paid-AI channel group.
Last verified: 12 September 2026 | Version: 1.0 | Next scheduled review: 12 October 2026
The symptom: you are spending on ChatGPT Ads, Ads Manager reports clicks, and GA4 shows no paid traffic at all. Instead there is a row called chatgpt.com under Referral, or under a channel called AI Assistant, with a session count that roughly tracks your click count.
Nothing is broken. GA4 is classifying correctly given what it received, which was a referral from chatgpt.com and no paid parameters. OpenAI does not auto-tag. Google Ads gets a free pass in GA4 because of the account link and the gclid parameter; there is no equivalent for ChatGPT Ads. If you did not put UTMs on the destination URL yourself, GA4 has nothing to work from.
Below is the diagnosis in order, then the two settings that fix it.
Step one: confirm this is a tagging problem and not a tracking problem
Open a real ad and look at the URL you land on. It should contain both your UTM parameters and OpenAI's click reference, which arrives as oppref:
https://example.com/lp/reconciliation?utm_source=chatgpt&utm_medium=cpc&utm_campaign=recon_q3&oppref=gAAAAAb123
Three things can be wrong here.
If the UTMs are absent, you never set them, and this article's fix applies.
If the UTMs are present in the ad but absent on the landing page, a redirect is stripping the query string. That breaks GA4 and the OpenAI pixel at the same time, because oppref disappears with them. Fix the redirect before anything else; our pixel setup post covers what the pixel needs from that parameter.
If both are present and GA4 still shows Referral, check that the UTM medium is spelled in a way GA4 recognises as paid. chat, ai, chatgpt and openai are all mediums GA4 will treat as Referral-adjacent, not paid.
Step two: the UTM convention that works
Set these on the ad group default destination URL, and on any ad-level destination URL that overrides it.
| Parameter | Value | Why |
|---|---|---|
utm_source |
chatgpt |
Keep it consistent with whatever you already use for organic ChatGPT referrals, or deliberately different if you want them separable |
utm_medium |
cpc |
This is the value that makes GA4 classify the session as paid. Anything not matching GA4's paid medium pattern will not |
utm_campaign |
your campaign name | Match the Ads Manager campaign name exactly so joins are possible later |
utm_content |
ad group and ad identifier | ChatGPT Ads passes no equivalent of {adgroupid}, so this is hand-maintained |
utm_term |
leave empty | There are no keywords and no search terms report, so there is nothing truthful to put here |
The medium value is the one that carries the whole fix. GA4's Paid Other channel is defined by medium matching the regular expression ^(.*cp.*|ppc|retargeting|paid.*)$. cpc matches. paid_chat matches. chatgpt does not, and neither does ai-assistant.
Note what you get after this: Paid Other, not Paid Search. GA4's Paid Search rule requires the source to appear in Google's own list of recognised search sites, and chatgpt is not on it. Correct UTMs move you out of Referral. They do not get you into Paid Search, and no UTM value will, short of lying about the source.
Our full UTM conventions post covers the naming discipline that keeps these joinable to a CRM. This article assumes you have it.
Step three: the custom channel group
Paid Other is a bin, not a channel. If you also run LinkedIn, Reddit or any display buying, they land in it too, and you are back to not being able to read your ChatGPT spend.
Create a custom channel group. In GA4: Admin > Data display > Channel groups > Create new channel group. Start from a copy of the default grouping rather than from scratch, so you keep every existing definition.
Add a new channel, and place it above Paid Other in the ordering. GA4 evaluates channel rules top down and assigns the first match, so ordering is the part people get wrong.
Channel name: ChatGPT Ads
Conditions, all of which must be true:
- Source matches regex
^(chatgpt|chatgpt\.com|openai|openai\.com)$ - Medium matches regex
^(cpc|paid.*|.*cp.*)$
If you want organic ChatGPT referrals separated in the same grouping, add a second channel immediately below it, named ChatGPT Organic, with Source matching the same regex and Medium exactly matches referral, and place it above the Referral channel.
Two things worth knowing about custom channel groups. They apply retroactively across the data GA4 holds, so you will see historical sessions reclassified rather than only new ones. And they do not change the session_default_channel_group dimension, which keeps reporting the default grouping; your new channel appears under its own dimension, so any looker or exploration you build has to be pointed at it explicitly.
The AI Assistant channel, and why it makes this worse
Since May 2026 GA4 has a default channel called AI Assistant that captures referrals from ChatGPT, Gemini and Claude, with a medium value of ai-assistant. It was reported as rolling out broadly by early June 2026.
For organic AI referrals this is an improvement. For ads it is a new way to lose your paid traffic, because an untagged ad click and an organic ChatGPT citation now land in the same channel, and the channel name looks plausible enough that people stop investigating. If your ChatGPT Ads clicks are appearing under AI Assistant, they are untagged. The fix is the same: UTMs first, then the custom channel group above it.
The change is also forward-only as reported, which means your data series splits at the rollout date. Untagged ChatGPT sessions before it sit in Referral, and after it sit in AI Assistant, so any year-on-year comparison you run across that boundary is comparing two different classifications.
Two settings not to use
Unwanted referrals. In Admin > Data streams > Configure tag settings there is a list for excluding referral domains. Adding chatgpt.com there does not move the traffic into paid. It moves it into Direct, which is strictly worse, because Direct is unattributable and you lose even the referral evidence.
Cross-domain measurement. Also not this. Cross-domain is for your own properties. ChatGPT is not one.
What this fix does not give you
Cost. GA4 imports cost data from linked Google Ads accounts and, through manual data import, from anything else. There is no ChatGPT Ads account link. Until you build a cost import or a connector, GA4 will show you sessions, engagement and conversions from ChatGPT Ads, and no spend beside them, so ROAS has to be calculated outside GA4 or the cost side has to be uploaded.
It also does not reconcile your two conversion counts. GA4 counts what it saw, on its own attribution model and lookback. Ads Manager counts what the OpenAI pixel attributed, on the configured click-through window plus a fixed one-day view-through window. Those two numbers will differ and neither is wrong. Treat Ads Manager as the optimisation signal and GA4 as the session and behaviour record, and do not spend a week trying to make them match.
What we cannot tell you
- Whether OpenAI will ever add auto-tagging or a GA4 account link. Nothing announced. Absent.
- Whether
opprefvalues are stable enough to use as a session key. OpenAI documents the parameter and the first-party cookie but not the value's format or lifetime. Undocumented. - What share of ChatGPT Ads clicks arrive with the referrer intact. Not published by OpenAI and not measurable from your own property alone.
- Whether Google will add ChatGPT to its Paid Search source category list. Not announced. Until it does, correct tagging still lands in Paid Other.
- Any first-party GA4 figures from our own account. InPromptAds runs no campaigns and has no property of its own carrying ChatGPT Ads traffic.
Quick answers
Why does ChatGPT Ads traffic show as Referral in GA4? Because OpenAI does not auto-tag and GA4 received only a referrer from chatgpt.com. Without UTM parameters on your destination URL, GA4 has no paid signal to classify on.
What UTM medium should I use for ChatGPT Ads?
cpc. GA4's paid channel rules match medium against ^(.*cp.*|ppc|retargeting|paid.*)$, so cpc and paid_chat work while chatgpt, ai and chat do not.
Will correct UTMs put ChatGPT Ads in Paid Search? No. Paid Search additionally requires the source to be on Google's recognised search sites list, and chatgpt is not. Correct UTMs get you Paid Other, which is why the custom channel group is the second half of the fix.
Where do I create a custom channel group in GA4? Admin > Data display > Channel groups > Create new channel group. Copy the default grouping, add a ChatGPT Ads channel, and order it above Paid Other, because GA4 assigns the first matching rule.
Should I add chatgpt.com to unwanted referrals? No. That reclassifies the sessions as Direct, which removes the only evidence you had. Fix it with tagging, not exclusion.
Why do GA4 and Ads Manager conversion counts differ? Different models and different windows. Ads Manager attributes on the OpenAI pixel with a configured click-through window and a fixed one-day view-through window. GA4 uses its own model and lookback. Expect a gap and do not try to close it.
Sources
| Claim | Source | Tier |
|---|---|---|
oppref is appended to the destination URL on every ad click and stored in a first-party cookie |
OpenAI Help Center, Conversion Measurement, 2026 | Confirmed, primary |
| No auto-tagging and no GA4 account link for ChatGPT Ads | OpenAI documentation, by absence | Absent |
| GA4 Paid Other is defined by medium matching `^(.cp. | ppc | retargeting |
| GA4 Paid Search additionally requires a source on Google's recognised search sites list | Google Analytics Help, default channel group definitions, 2026 | Confirmed, primary |
| Custom channel groups are created in Admin > Data display > Channel groups and evaluate rules in order | Google Analytics Help, custom channel groups, 2026 | Confirmed, primary |
GA4 added an AI Assistant default channel with medium ai-assistant in May 2026, rolled out broadly by early June 2026, forward-only |
Zenda, GA4 Source Group and AI Assistant channel write-up, 2026 | Reported, third party |
| Configurable click-through attribution window plus a fixed one-day view-through window in Ads Manager | OpenAI documentation updates, August 2026, as reported by PPC Land | Confirmed, primary for the mechanism; Reported for the dates |
| Unwanted referral exclusion reclassifies sessions as Direct | Google Analytics Help, data stream tag settings, 2026 | Confirmed, primary |
Related reading
- UTM Conventions for ChatGPT Ads That Survive Contact With a CRM
- How to Install the OpenAI Ads Pixel, Directly or Through GTM
- How to Measure ChatGPT Ads, and What You Cannot Measure Yet
- What OpenAI's Attribution Windows Actually Count
- ChatGPT Ads Troubleshooting
Changelog
12 September 2026, v1.0. First publication. Documents the Referral and AI Assistant misfiling, the medium value GA4's paid rules actually match, and the custom channel group ordering that separates ChatGPT Ads from Paid Other.
Field kit
Tools
Site
OpenAI (primary)
Keshav studies how AI systems retrieve, verify, and cite brand information. At InPromptAds, he leads source research and turns platform documentation into practical guidance for advertisers.