Why ChatGPT Traffic Shows as Direct in GA4 (2026)
Show article contentsHide article contents
- How GA4 actually classifies ChatGPT traffic today
- The four mechanisms that strip the referrer
- Free tier, paid tier, and the referrer signal
- Mobile is the dark half
- When UTMs survive and when they don't
- The compound math: referrer stripping times consent rejection
- The custom channel group, and what it cannot fix
- Measure what is in your Direct bucket
- What Clickport catches that default GA4 does not
- Frequently asked questions
Your ChatGPT traffic isn't invisible in GA4. It's hiding in two places. Across Clickport customer sites in April 2026, about two-thirds sat in Referral, mixed in with every blog link and directory mention. The other third landed in Direct: visits with no referrer and no UTM. Both buckets hide AI. Each hides it differently.
- GA4's default channel group has no AI channel as of April 2026. ChatGPT with a referrer lands in Referral, alongside blog links. ChatGPT with no referrer and no UTM lands in Direct. Neither bucket says it's AI.
- Four mechanisms strip the referrer from ChatGPT clicks: the strict-origin-when-cross-origin policy on chatgpt.com, rel=noreferrer on paid-tier inline links, mobile-app WKWebView (iOS) and Custom Tabs (Android), and clipboard copy-paste. Only the first preserves the origin.
- Across 371,847 sessions on Clickport customer sites in April 2026, 35.7% of AI-classified traffic arrived UTM-only, with no HTTP referrer. ChatGPT accounted for 76% of all AI Search sessions in that dataset.
- Google's custom channel group documentation added an AI Assistants regex example in July 2025, but it is user-configured, not default. Applied retroactively, it pulls the referrer-bearing two-thirds out of Referral. It cannot recover the no-signal third from Direct.
- On EU sites, consent rejection stacks on top of referrer stripping. Google's 2021 Consent Mode announcement claimed modeled recovery of 'more than 70%' of lost ad-click-to-conversion journeys. etracker's 2025 consent benchmark puts compliant-banner rejection around 60%. The compound effect for illustrative 100 ChatGPT visits on an EU site is roughly one in six fully attributed.
How GA4 actually classifies ChatGPT traffic today
GA4's default channel group has 18 channels. None of them are AI. The rules aren't hidden or broken. They're doing exactly what Google documents. The problem is simpler: no rule treats AI as a separate source.
A ChatGPT visit with a referrer header lands in Referral with source chatgpt.com and medium referral. It sits next to directory listings, blog posts, the occasional forum link. A visit carrying only a UTM parameter (utm_source=chatgpt.com, no utm_medium) falls through the Referral and Organic rules into Unassigned. A visit with neither signal goes to Direct. That's the largest category.
Here's the Direct rule, verbatim from Google's help center: "Source exactly matches '(direct)' AND Medium is one of ('(not set)', '(none)')." Put another way: if GA4 can't tell where the visit came from, it calls it Direct. The rule doesn't care whether the visitor typed your URL, clicked a bookmark, or tapped a link in the ChatGPT iOS app. No signal, no distinction.
Google did add a custom-channel example for AI assistants to its documentation in July 2025. The example is a user-configurable regex, not a default channel group. Out of the box, GA4 still has no AI category. PPC Land called it "the first time the platform has officially recognized artificial intelligence tools as distinct traffic sources." That's generous. Adding a regex example to a help page isn't the same as shipping a channel.
What that looks like in a typical GA4 setup: if your Direct bucket has been climbing quarter over quarter, and nothing obvious changed about how people type in your domain, ChatGPT mobile is a reasonable suspect for the new volume. If your Referral bucket has the same traffic under chatgpt.com / referral but it is not broken out in your dashboard, the traffic is there, you just cannot see it without drilling in. Both cases sit on the same underlying cause: no AI channel, so AI traffic spills wherever the default rules send it.
One clean statement from Dana DiTomaso at the Analytics Playbook: "I guarantee you it's already in your GA4. It's just hiding."
The four mechanisms that strip the referrer
ChatGPT doesn't strip referrers through one mechanism. Four separate behaviors delete or truncate the signal at different points in the navigation chain. Three remove it entirely. The fourth preserves only the origin.
The first is chatgpt.com's Referrer-Policy header. Check the response headers and you'll see referrer-policy: strict-origin-when-cross-origin. That's the W3C default since Chrome 85 in August 2020. In plain English: when someone leaves chatgpt.com for your site, the browser sends only the origin (https://chatgpt.com/) with no path. Your analytics can't tell whether the visit came from a chat response, a shared conversation, or a search citation. And if your site is still on HTTP rather than HTTPS, the browser drops the referrer entirely.
The second is rel="noreferrer" on anchor tags. Per the WHATWG HTML standard, this attribute tells the browser to omit the Referer header entirely, regardless of the page-level policy. Ahrefs's investigation found a split by tier: paid ChatGPT accounts apply noreferrer to inline links inside chat responses, free accounts do not. Source-citation links at the bottom of a response get a utm_source=chatgpt.com parameter instead. OpenAI hasn't published why this split exists.
The third is mobile. The ChatGPT iOS app opens external links in WKWebView, Apple's embedded-browser component. When the link opens, the Referer header isn't passed to the destination. It's documented in a GitHub issue on OpenAI's own apps-sdk-examples repo, where the missing Referer broke YouTube embeds. Android does the same through in-app WebView or Chrome Custom Tabs. Both environments drop the Referer during the navigation handoff. As of early 2026, the ChatGPT mobile apps had roughly 68 million combined iOS and Android monthly downloads. That's the volume arriving at your site looking identical to someone who typed your URL by hand.
The fourth is clipboard copy-paste. When a user copies a URL from a ChatGPT response and pastes it into the address bar, the browser sends no Referer. This isn't a configuration choice, it's the HTTP spec: per RFC 9110, the Referer is the "URI of the resource from which the target URI was obtained." Typed or pasted text has no referring URI. The one thing that survives copy-paste is the utm_source parameter on a citation link, because the UTM is part of the URL string itself. That's why UTMs are more robust than Referer headers for tracking ChatGPT.
| Context | Referer header | UTM added | GA4 bucket |
|---|---|---|---|
| Desktop web, citation link | https://chatgpt.com/ | utm_source=chatgpt.com | Referral |
| Desktop web, inline link, free tier | https://chatgpt.com/ | none | Referral |
| Desktop web, inline link, paid tier | none (rel=noreferrer) | none | Direct |
| iOS app tap-through | none (WKWebView) | none | Direct |
| Android app tap-through | none (Custom Tabs) | none | Direct |
| Copy-paste of citation URL | none (clipboard) | utm_source=chatgpt.com | Referral or Unassigned |
| Copy-paste of inline URL | none | none | Direct |
None of these behaviors are unique to ChatGPT. Mobile apps across the board strip referrers. rel="noreferrer" is standard practice. The W3C default policy applies to every HTTPS site. What is specific to ChatGPT is the combination: one platform with very high traffic volume, a paid-tier noreferrer behavior, and a mobile app with tens of millions of monthly users.
Free tier, paid tier, and the referrer signal
Here's a pattern visible in multiple practitioner analyses but not documented by OpenAI: free ChatGPT users have the referrer stripped from inline links in chat responses. Paid Plus and Team subscribers keep the referrer on the same kinds of links. Source citations (the numbered references at the bottom of responses) get UTMs regardless of tier.
The consequence is audience-dependent. A B2B SaaS publisher whose readers skew toward paid ChatGPT subscribers will see meaningful traffic correctly labeled as chatgpt.com / referral in GA4, because inline links carry the Referer header. A consumer site with mostly free users will see almost none of it. Same response, different analytics outcomes for different publishers.
Rand Fishkin put the ceiling on this cleanly in January 2025: "places that no longer like to refer traffic like LinkedIn, like a Reddit, like a ChatGPT, like a Perplexity. They don't send direct visits. What they do is influence people to buy." The attribution gap isn't a glitch OpenAI plans to fix. It's part of how platforms value their own visibility over your ability to measure it.
None of this is OpenAI-specific. Facebook does it with l.facebook.com link shims. LinkedIn does it with lnkd.in. Reddit's mobile app strips referrers through Chrome Custom Tabs. SparkToro's 2023 controlled experiment with 1,113 visits across 16 platforms found 100% of visits from TikTok, Slack, Discord, Mastodon, and WhatsApp were misattributed as Direct in GA4. ChatGPT isn't the first platform to do this. It's the first one most marketers have noticed.
Mobile is the dark half
The ChatGPT mobile apps produce traffic that can't be attributed by any referrer-based method. On iOS, the app uses WKWebView, Apple's embedded-browser engine. On Android, it uses Chrome Custom Tabs or an in-app WebView. Both environments drop the Referer header when the user taps an external link. No UTM is added. Your site receives a naked GET request from an iOS or Android user-agent, indistinguishable from someone who typed the URL in by hand.
Volume matters here. The ChatGPT iOS app has been the top free app on the App Store repeatedly since launch. Combined iOS and Android monthly downloads run in the tens of millions. For most publishers, mobile is the largest share of ChatGPT-driven traffic. It's also the largest share nobody can attribute.
ChatGPT Atlas, OpenAI's Chromium-based browser released October 21, 2025, adds another category. Atlas reports as Chrome 141 in the GA4 Browser dimension, indistinguishable from standalone Chrome. When someone opens a link from inside the ChatGPT interface in Atlas, the referrer is stripped, same as the mobile app. When Atlas is used as a general browser and the user lands on your site from chatgpt.com through Atlas's search surface, the session does show as chatgpt.com / referral. But its cookies are isolated from the user's main Chrome profile, so returning users appear as new visitors in GA4. Dana DiTomaso documented this within days of launch. The result: Atlas traffic inflates your new-user count while leaving a portion of its sessions in Direct.
Dan Taylor's MarTech analysis compared Atlas against Perplexity's Comet browser, which released earlier. Comet passes referrer data cleanly. Sessions from Comet appear as perplexity.ai / referral in GA4. Atlas does not. Two AI browsers, two architectures, two different outcomes at the analytics layer.
The AI browsers arriving now will multiply these edge cases. Every time a new browser ships, analytics teams inherit a new referrer behavior to chase.
When UTMs survive and when they don't
OpenAI has made exactly two meaningful attribution improvements since launch. Both were adding UTM parameters to previously untagged links. Neither covers most ChatGPT traffic.
On October 31, 2024, OpenAI launched ChatGPT Search. Citation links in Search-mode responses started carrying utm_source=chatgpt.com. That was the first time a subset of ChatGPT traffic had a machine-readable attribution tag, independent of the referrer header. The UTM survives mobile apps, paid-tier noreferrer, and clipboard copy-paste, because it's part of the URL string itself, not an HTTP header. UTMs travel. Referrers don't.
On June 13, 2025, OpenAI extended UTM parameters to the "More sources" section of responses. Glenn Gabe flagged it on X within hours: "Heads-up, this should jump the traffic levels in GA4 and other analytics tools for ChatGPT. That's because ChatGPT finally added utm parameters for 'More' sources versus just the citations. Those links used to be standard links without utm parameters." Put another way: everything Gabe's traffic graphs showed before June 13, 2025 understated actual ChatGPT referral volume by the "More" section's share, which was unmeasured.
Still untagged: conversational inline links (the kind embedded in paragraph text) on both free and paid tiers, mobile app link opens on either OS, and anything generated outside Search mode. That's most of the links ChatGPT produces.
In our April 2026 Clickport dataset, 867 out of 2,619 AI Search sessions (33.1%) arrived UTM-only with utm_source=chatgpt.com and no HTTP referrer. In other words: roughly one in three AI Search sessions on our platform had no referrer header at all, and would have landed in GA4's Unassigned bucket without the UTM saving it. That's the clipboard-paste-from-citation pattern. A user copies a cited URL from a ChatGPT response and opens it somewhere the referrer gets lost, but the UTM in the URL survives. Another 67 sessions arrived UTM-only for perplexity. None for Claude, Gemini, Copilot, Kagi, or DeepSeek. Those platforms don't auto-append UTMs.
The practical rule: if you want to trace inbound AI citations, add your own UTMs to URLs you include in prompts. You can't UTM-tag links that ChatGPT generates from its own index. Those carry whatever ChatGPT decided to attach.
The compound math: referrer stripping times consent rejection
On EU sites, the attribution problem stacks. Two independent losses apply to the same traffic. The first is referrer stripping, which is global. The second is cookie-banner rejection, which is heaviest in the EU.
Start with 100 ChatGPT visits to an EU publisher running GA4. About 70 arrive with no referrer header: Loamly's February 2026 analysis of 20,428 AI visits found 14,413 (70.6%) arrived without referrers. Treat this as the order of magnitude, not a precise benchmark. Loamly sells AI-traffic detection and has an incentive to frame the number as large. The 70.6% comes from the AI subset of their own customer base, not a representative sample.
Of the 30 visits that do arrive with a referrer, consent rejection removes a share before GA4 can record them. etracker's 2025 consent benchmark puts average rejection on compliant EU banners at around 60% of visits. If 55% of the 30 referrer-bearing ChatGPT visitors accept cookies, GA4 sees about 16. Meaning: out of every 100 ChatGPT visits to an EU site, about 16 get fully attributed. The other 84 either sit in Direct or never get counted at all.
Google Consent Mode's modeled conversions claim to recover a share of the rejection loss. The original April 2021 Google announcement said modeling recovers "more than 70% of ad-click-to-conversion journeys lost due to user cookie consent choices." That figure is five years old and Google hasn't updated it with newer data. Modeled conversions also require a minimum of 1,000 daily consent-declined events before modeling kicks in. Most sites outside enterprise traffic volumes never hit that floor. For those sites, the rejection loss is just a rejection loss.
Plausible Analytics published a pointed walkthrough of the practical implication: modeling can reconstruct aggregate conversion counts, but it can't rebuild user journeys, pages visited, or source attribution for non-consenting users. The Direct bucket for a rejected-consent ChatGPT visitor isn't a rescue. It's a dead end.
Outside the EU, consent rejection rates are a fraction of EU levels. CCPA/CPRA opt-out in California runs in the single digits to low-teens. For US-heavy sites, the compound math is dominated by referrer stripping, not consent.
If the attribution gap is real, the next question is what it costs. Our analysis of what AI visitors are actually worth walks through the conversion economics behind these numbers and why the missing share matters to revenue reporting, not just channel reporting. For a rough read on how much GA4 misses overall (AI referrer stripping compounds on top of the four general drivers), try the GA4 Data Loss Estimator.
The custom channel group, and what it cannot fix
GA4 lets you build a custom channel group in Admin → Data settings → Channel groups. Free-tier properties get two custom groups. The group applies retroactively: historical sessions reclassify when you save the rule, so you don't lose past data.
The regex Google suggests in the AI Assistants example, added to the documentation in July 2025:
^.*ai|.*\.openai.*|.*chatgpt.*|.*gemini.*|.*gpt.*|.*copilot.*|.*perplexity.*|.*google.*bard.*|.*bard.*google.*|.*bard.*|.*.*gemini.*google.*$
It's a starting point, not a finished rule. It misses Claude, Phind, Kagi, You.com, DeepSeek, Grok, Andi, Meta AI, and as of October 2025 it misses ChatGPT Atlas as a distinct browser signal. A more complete April 2026 regex:
(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|phind\.com|kagi\.com|you\.com|deepseek\.com|grok\.com|meta\.ai|andi\.ai)
Match condition: Source matches regex. Place the rule above the default Referral rule so AI sessions pull out of Referral before the Referral rule catches them. Don't require a UTM medium. AI platforms that do set UTMs set utm_source only (no utm_medium), and requiring a medium would drop those sessions back into Unassigned.
Because reclassification is retroactive, this is a one-time setup that pays back going backwards as well as forwards. Set it up in April 2026 with 12 months of history and the full year re-buckets cleanly into a new AI channel.
What the custom channel can't fix: the one-third of AI traffic that never produces a referrer and never carries a UTM. That share sits in Direct, permanently. No regex can reach it. There's no signal to match on. Custom channel groups pull high-signal AI traffic out of Referral. They don't pull low-signal AI traffic out of Direct.
One related note about Google's own AI products. Google AI Mode launched with rel="noreferrer" on its outbound citation links, which stripped referrer data entirely and landed those clicks in Direct, same pattern as ChatGPT. Lily Ray at Amsive called it "Not Provided 2.0," a reference to the 2011 keyword-data loss. Google fixed it by May 31, 2025: AI Mode clicks now pass google.com as the referrer and show up in Search Console's web search performance report. In GA4 they're indistinguishable from regular organic search. The signal arrives, just in the wrong bucket.
Measure what is in your Direct bucket
If your Direct channel has been growing disproportionately and nothing about your brand activity explains it, ask how much of the growth tracks your AI visibility. There's no clean way to derive it from GA4 alone. The traffic you want to count is the traffic your analytics can't see. What you can do is triangulate.
Compare three numbers over the same period. First: Direct sessions as a percentage of total, tracked month over month. Second: sessions attributed to any AI platform (ChatGPT, Perplexity, Claude, Gemini) in whatever form your setup catches them, whether that's Referral, a custom channel, or a UTM filter. Third: brand-name organic search impressions from Google Search Console, the closest proxy for the audience that discovers you in AI conversations and then types your brand name into Google.
If the first is climbing and the other two are also climbing, AI discovery is almost certainly a share of what's landing in Direct. If the first is climbing and the other two are flat, look elsewhere: bot traffic, campaign URL tagging failures, a mobile app deployment that lost its tracking.
Treat the output as a thinking tool. The actual share of your Direct bucket that is AI depends on audience composition, mobile share, and whether your brand already shows up in ChatGPT responses at all.
What Clickport catches that default GA4 does not
Clickport classifies every visit into one of 16 channels, including a dedicated AI Search channel. The classifier recognizes 13 AI platforms on referrer or utm_source match, runs before the Organic Search rule so AI traffic pulls out cleanly, and applies consistently across all sites. No regex to maintain.
In our April 2026 data across 371,847 sessions on Clickport customer sites, AI Search accounted for 2,619 sessions, or 0.7% of total. ChatGPT drove 1,994 of those, which is 76% of all AI traffic we saw. That tracks the direction of Conductor's 2026 benchmark showing ChatGPT at 87.4% of AI referrals across a much larger 13,770-domain sample. Put another way: whatever your AI Search share is, ChatGPT is most of it. Of our 2,619 sessions, 1,684 arrived with a referrer (the subset a custom GA4 channel group would recover) and 935 arrived UTM-only with no referrer (the subset that lands in Unassigned in GA4 unless your utm_medium handling is set up correctly).
On the subset of Clickport customer sites with conversion goals configured (n=87 AI Search sessions, 1,184 Direct sessions over 30 days), AI Search converted at 20.7%, Direct at 11.1%. The sample is small and self-selected, so treat this as a direction, not a benchmark. It tracks Seer Interactive's ChatGPT case study, which measured 15.9% on a single B2B client, and Further's aggregate LLM data of roughly 18% across their client base. Meaning: AI traffic, where you can measure it, converts close to twice as well as Direct. Which makes the fact that most of it hides in Referral and Direct more frustrating, not less.
One thing to watch in parallel: the AI visibility scoring tools. If you're evaluating Profound, Peec, Otterly, or similar products for brand-mention tracking, our critique of AI visibility scores as vanity metrics is worth reading before you buy one. Measuring actual visits to your site beats measuring prompts you wrote yourself.
What Clickport doesn't do: magically see traffic that arrives with no referrer and no UTM. That traffic is still Direct in Clickport. The structural win is on the consent side. Clickport is cookieless: no banner, no rejection, no consent-mode modeling. Every visit gets counted the same way, so the "fully attributed on an EU site" share is closer to 30% of actual visits instead of the compound 16%. We can't unstrip a referrer. We can stop losing traffic to the consent banner on top of it.
If your Direct bucket is growing and you want to see what's actually in it, try Clickport free for 30 days. One script tag, no credit card. Your first AI Search session shows up in the Sources panel the moment someone from ChatGPT visits your site. Start here.
Frequently asked questions
Why doesn't GA4 have a native AI channel in 2026?
Google hasn't said, specifically. The public record: Google folded AI Overviews and AI Mode traffic into Organic Search (because it comes from google.com referrers) and added an AI assistants example to the Custom Channel Groups documentation in July 2025. Building an AI channel into defaults would require either a Google decision about which platforms count, or a match rule built on something more than referrer domain. Neither has shipped.
Can I back-fill historical sessions that were miscategorized as Direct?
Only for the subset that carried a UTM or referrer. GA4's custom channel groups apply retroactively: sessions with chatgpt.com in the referrer or utm_source field get reclassified to your new AI channel back through the property's history. Sessions that arrived with no signal at all stay in Direct permanently. The underlying source/medium data doesn't exist to be reclassified.
Does adding UTMs to links I share in ChatGPT actually help?
Yes, for links you actually share. If you paste a link into a ChatGPT prompt and the response includes it, your UTM travels with the URL and the click gets attributed. This doesn't help for links ChatGPT generates from its own index during a response. Those carry whatever UTM OpenAI decides to attach, which since June 2025 is utm_source=chatgpt.com on citation and "More sources" links, and nothing on inline conversational links.
Will ChatGPT Atlas inflate my new-user count in GA4?
Likely yes, for any returning users who switch to Atlas. Atlas doesn't import Chrome cookies during profile migration, so each existing visitor shows up as a new GA4 client ID the first time they return via Atlas. The distortion resolves over time as Atlas-only cookies accumulate, but the initial months after Atlas adoption will overstate new users and understate returning users.
Is referrer data recoverable server-side?
Not if the browser never sent it. The HTTP Referer header is set by the client. If the browser suppresses it (via Referrer-Policy, rel=noreferrer, or in-app browser behavior), server-side code sees no Referer to log. Server-side tracking solves other problems (consent blocks, ad-blocker interference). It doesn't recover stripped referrers.
Does this problem apply to Plausible, Fathom, and Matomo too?
Yes, for the no-signal share. Any analytics tool that relies on the HTTP Referer header and URL parameters sees the same Direct bucket for referrer-stripped, UTM-less visits. What differs is default channel grouping: some privacy-first tools ship an AI channel in defaults, which separates the high-signal share of AI traffic from regular referrals without a custom regex. On the consent side, cookieless tools sidestep consent rejection, which reduces the compound loss for EU sites. None of them fix the structural problem of traffic that arrives with no signal.
Your Direct bucket will keep growing. Some of the growth is the ordinary kind: type-ins, bookmarks, broken chains. Some is AI traffic that never carried a referrer. The way to tell them apart isn't to fix Direct. It's to catch the signal before it disappears into Direct, and route that traffic to a channel that explains itself.

Comments
Loading comments...
Leave a comment