GrowthHasten

How to See AI Referral Traffic in GA4, and How Much It Is Allowed to Tell You

Ask GA4 how much traffic ChatGPT sends you and it will answer with a number that is wrong in a predictable direction. Here is how to build the report properly, and the sentence to put next to it so nobody reads it as the size of the channel.

Anshuman Sinha

Written by Anshuman Sinha

Published September 14, 2026
Updated September 14, 2026
14 min read
Close-up of a web analytics dashboard showing user retention cohort data

AI referral traffic is the set of sessions your site receives when someone clicks a link inside an AI assistant such as ChatGPT, Gemini or Perplexity and lands on your page. Google Analytics 4 will give you a number for it. That number is wrong in a predictable direction, and the expensive mistake is not the setup: it is what gets concluded from the figure once it exists. This guide is for anyone who has been asked "how much traffic are we getting from ChatGPT?" and wants to answer honestly. It covers what GA4 now does by default, how to extend it, which hostnames you can actually trust, and what the resulting number is allowed to prove.

The short version

  • GA4's default channel group now includes an AI Assistant channel. Before you build anything, check whether you already have it.
  • That channel is driven by the referrer. When no referrer arrives, the session never reaches the channel, and no amount of configuration recovers it.
  • A session carrying utm_source=chatgpt.com with no medium meets the condition for neither Direct, Referral nor the AI Assistant channel, so expect it in Unassigned rather than in your AI line. That is a reading of the published definitions, not a documented statement.
  • Traffic from Google's AI Overviews and AI Mode is not in this number at all. Google reports it inside ordinary web search.
  • The figure is a floor, not a measurement. Report it with a sentence that states what it excludes, or it quietly becomes the definition of the channel.

Why does traffic from ChatGPT show up as direct in GA4?

Because the referrer never arrived. Analytics tools infer where a visit came from by reading the HTTP Referer header, which, as MDN's reference on the Referer header puts it, "contains the absolute or partial address from which a resource has been requested". No header, no source. GA4 files the session under direct because direct is what it calls a visit with no discoverable origin.

The header is not guaranteed. A page controls it through the Referrer-Policy response header, and under the no-referrer value MDN's Referrer-Policy reference is explicit: the Referer header "will be omitted: sent requests do not include any referrer information". A native mobile app opening a link in an embedded browser has similar latitude over what it sends.

So the loss is real and its mechanism is well documented. Its size is not. Searching for a published statement from the major assistant vendors about what referrer their apps send turned up nothing I could cite, and none of the percentages I found circulating for this named the measurement behind it. A meaningful share of these sessions arrives anonymous, and I found no published figure for how large that share is. That is as far as the evidence goes.

This is the channel-level version of an argument worth reading in full before you spend a week on the report: why AI assistants are a visibility channel before they are a traffic channel.

Does GA4 already have an AI channel?

Quite possibly, and checking is the step to take before you configure anything. Google's documentation on the default channel group lists an AI Assistant channel and describes it as "the channel by which users arrive at your site from sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok".

Its definition is worth reading closely, because the mechanism is the whole story:

"The medium exactly matches 'ai-assistant'. The medium is set to 'ai-assistant' and the campaign is set to '(ai-assistant)' if the referrer matches a list of AI Assistants."

Three things follow from that sentence, and they matter more than any regex.

  • It is referrer-driven: GA4 sets the medium itself, but only when a referrer arrives and matches Google's list. The sessions that lost their referrer are not reclassified. They are still direct.
  • It gives you a marker to search for: sessions in this channel carry medium ai-assistant and campaign (ai-assistant). That is how you confirm the channel is populating in your own property rather than assuming it.
  • Google publishes examples, not the list: the documentation names five assistants "like" ChatGPT, Gemini, Deepseek, Copilot and Grok. It does not publish the full matching list on that page, so whether a given assistant is included is a question for your own data, not for the docs.

Check this first. The Traffic acquisition report is already grouped by sessionDefaultChannelGroup, so if the channel is populating it will be sitting there under its own name. If it is, most of the configuration work below is already done for you, and what remains is the interpretation problem.

What happens to a session with a UTM tag but no referrer?

It goes to Unassigned, not to direct. The distinction matters because a session sitting in Unassigned is excluded from every channel line you are likely to report on, including your AI one. This is a derivation from Google's own published channel definitions rather than a documented statement, so treat it as a thing to verify in your property, but the logic is short enough to check by hand.

Some assistants append a campaign parameter such as utm_source=chatgpt.com to outbound links. If that parameter arrives without a utm_medium, GA4 records a session source of chatgpt.com and a medium of (not set). Now walk the three default channels a session like this could plausibly land in:

Default channelPublished conditionDoes the session match?
DirectSource exactly matches (direct) AND medium is (not set) or (none)No. The source is chatgpt.com, not (direct).
ReferralMedium is one of referral, app or linkNo. The medium is (not set).
AI AssistantMedium exactly matches ai-assistantNo. A UTM tag does not set that medium.

None of those three matches. The remaining default channels all require a medium this session does not have, so expect Unassigned, and confirm it against the full definition list on the same page before you build on it. Google's Analytics Help article on avoiding unassigned, (not set) and direct traffic issues describes exactly this shape: the row appears when "a traffic source doesn't fit the definition of one of the channels in a channel group".

One thing the documentation does not settle: which wins when a matching referrer and a utm_source arrive together. Test that in your own property before you build a report on the assumption.

How do you build a custom AI channel group in GA4?

Only build one if the default channel leaves a gap you can name. Two gaps are worth the effort: UTM-tagged sessions stranded in Unassigned, and assistants that are not matching Google's list. Every step below is taken from Google's documentation on custom channel groups.

  1. Check your access: you need to be "an Editor or above on the Google Analytics account at the property level to create and edit channel groups".
  2. Open the editor: in Admin, under Data display, click Channel groups.
  3. Start from the default: click Create new channel group, which starts you with a copy of the default group. Give it a name and, optionally, a description.
  4. Add your channel: build a condition on the Source field. This is worth being precise about, because the fields a channel condition accepts are Campaign id, Campaign name, Default channel group, Manual ad content, Medium, Source and Source platform. There is no session-scoped variant to choose here.
  5. Use one pattern: set the condition to matches regex. This same page carries a worked AI assistants example with a starting pattern on this field, which is the honest place to begin. Because the condition reads Source, a single pattern catches both paths: the hostname arriving from a referrer, and the same hostname arriving from utm_source.
  6. Fix the order: click Reorder and drag your channel above Referral. Google's rule is unambiguous: "Traffic is included in the first channel whose definition it matches given the current order of channels in the group." Leave your channel below Referral and it will stay empty while looking correctly configured.
  7. Save: click Save group.

One genuinely useful property: "Custom channel groups can be applied to your reports retroactively." You are not starting a clock, so there is no reason to rush a half-verified pattern into production today.

If you want the wider GA4 reporting conventions this sits inside, our guide to how to isolate organic traffic in GA4 covers the channel and scope dimensions in full.

Which hostnames belong in the pattern?

The ones you can see in your own property, and ideally only those. A hostname list copied from an article is a silent failure waiting to happen: an unconfirmed hostname in a regex returns zero rows, and zero rows look exactly like zero traffic.

Here is what I could and could not confirm on 14 September 2026, across the two places Google names assistants: the AI Assistant channel description, and the worked AI assistants regex example on the custom channel groups page.

AssistantIn the channel description?Has a token in Google's example pattern?
ChatGPTYesYes
GeminiYesYes
CopilotYesYes
DeepseekYesNo
GrokYesNo
PerplexityNoYes
ClaudeNoNo, though it is named beside the example as a popular assistant

Neither column is a hostname. I could not verify a specific referring hostname for any assistant against its vendor's own documentation, so nothing in that table is a hostname confirmed at its source. Absence from the channel description proves nothing either way, because Google's wording there is "sources like", which is a list of examples rather than a boundary.

Google does publish a starting point, though. The custom channel groups page linked earlier carries a worked AI assistants example: a condition on Source, set to matches regex, with a supplied pattern and an instruction to reorder the channel above Referral. Begin there rather than from any article's list, including this one.

Then read it closely. It matches on substrings of the source value rather than on exact hostnames, which is more forgiving than a hostname list and also looser: a source value that merely contains the letters ai can satisfy it. And as the table shows, Google's example pattern and Google's own roster of assistants do not line up in either direction. Google attaches the caveat itself: "You should update your regex expression if URLs or the list of assistants you wish to measure change." A starting pattern, then, not a finished one.

Derive the list instead: in the Traffic acquisition report, change the primary dimension from sessionDefaultChannelGroup to sessionSource, widen the date range, and read the hostnames your own property has recorded. Those are true for your site. A list from anywhere else is a hypothesis you have not tested.

What does a custom channel group cost you?

Enough that the default channel is worth checking first. Google documents four constraints, and none of them is obvious from the setup screen.

  • You get very few: "Standard properties: 2 custom groups; 360 properties: 5 custom groups." On a standard property, an AI channel group spends half your allowance permanently.
  • Deletion is final: "Custom Channel Group deletions are irreversible", and deleting one affects the reports and audiences built on it.
  • Complexity has a price: "Creating a custom channel group with a large number of fields may negatively impact your reports." A sprawling pattern built to catch every possible assistant is not free.
  • It does not reach everywhere: "It's not currently possible to use custom channel groups in the Key events paths report."

When not to build one: if you need the answer once, for one meeting, use an exploration with a filter on session source instead. It answers the same question, costs you nothing permanent, and leaves both custom group slots free for something that earns them.

Where does traffic from AI Overviews and AI Mode actually land?

In your organic search line, not your AI line. This is the exclusion that is easiest to miss, because nothing in the interface flags it.

Google treats a click from one of its own AI surfaces as an ordinary Search click. Its documentation on AI features in Search folds those appearances into the standard Web search type rather than separating them out. For your purposes that means no distinct referrer, no separate hostname, and therefore nothing a channel condition could ever match on. The session lands as google / organic alongside every other search visit.

The visibility side is where Google has started splitting things out. Search Console's generative AI performance report for Search counts impressions, which the Help page for that report defines as "how many times links to your site were shown to a user in a generative AI feature on Google Search", across both AI Overviews and AI Mode. Google documents a separate equivalent report for Discover. Google's documentation dates the worldwide rollout of those insights to 31 August 2026, with access still gated on a property clearing an impressions threshold. Impressions, though. Not clicks, and not sessions.

So this is a structural boundary rather than a configuration gap. A GA4 AI channel measures assistants that sit outside Google Search. Google's own AI surfaces are counted somewhere else entirely, and no channel group pulls them across.

How wrong is the number, and in which direction?

Always down. AI referral traffic in GA4 undercounts, and it undercounts for reasons that stack rather than cancel. There is no mechanism in the list below that inflates the figure, which is why "floor" is the accurate word and "estimate" is not.

CauseWhere the session goes insteadCan configuration recover it?
Referrer omitted by policy or by an appDirectNo. The data never reached you.
Campaign parameter with no mediumUnassignedYes, with a Source condition.
Assistant not matching Google's listReferral, or UnassignedYes, once you confirm the hostname.
Click from AI Overviews or AI ModeOrganic searchNo. Google reports it as web search.

Two of those four are fixable and two are not, and the two that are not are the ones that move the number most. That asymmetry is the entire reason this metric needs a label rather than a target.

What is this number allowed to prove?

It can prove movement. It cannot prove size. Those two sentences are the decision rule, and holding the line on them is harder than any configuration step in this article.

From my experience, the moment a referral figure lands in a stakeholder deck without a label, it becomes the working definition of the channel, and every later argument has to fight it. The label is cheaper to add on day one than to retrofit in quarter three.

What the figure supports: a direction of travel. If your AI channel doubles across two comparable months with no tracking changes, something real improved. Trend it against itself.

What the figure does not support: a statement about how visible you are in AI answers, a share-of-channel calculation, a comparison against a competitor's published number, or a decision to stop investing because the sessions look small.

Put this next to the figure, or a version of it in your own words:

"This is the floor for AI assistant sessions, not the total. It excludes sessions that arrived without a referrer, and it excludes AI Overviews and AI Mode clicks, which Google counts inside organic search. Read it as a trend, not as the size of the channel."

That sentence is the deliverable. The channel group is just what makes it possible to write one.

What should you measure alongside it?

Citations, and measure them first. Whether an assistant is recommending you is the leading indicator; whether someone clicked is a lagging one that arrives damaged. The prompt-set method for tracking AI search visibility directly is where to start, and for the narrower question of whether ChatGPT is citing you at all there is a simpler check.

Pair three things in one view and the reporting problem mostly solves itself: citation and mention counts as the primary measure, Search Console's generative AI impressions for Google's surfaces, and the GA4 AI channel as a labelled floor. Each one covers a blind spot in the other two. None of them is the whole picture on its own, and any report that presents one as though it were will eventually be wrong in public.

If the visibility side of this is the actual problem, that is an AI search optimization question rather than an analytics one, and it is worth separating the two before you spend another sprint on the report.

One discipline is worth more here than any configuration: never let an AI traffic figure leave your team without the sentence that says what it excludes. Screenshots get forwarded and dashboards get shared, and the caveat is the first thing to fall off in transit.

This week, do one thing. Open Traffic acquisition, look for the AI Assistant channel and the ai-assistant medium, and find out whether you already have the report you were about to spend an afternoon building.

Want to be the answer AI assistants give?

GrowthHasten builds content designed to be cited in AI answers and to rank in Google, then measures both so you can see which one is actually moving.

Talk About AI Search Visibility
FAQ

Frequently Asked Questions

Why does traffic from ChatGPT show up as direct in GA4?

GA4 infers where a session came from by reading the HTTP Referer header. When that header does not arrive, there is nothing to attribute, so the session is filed as direct. A page's referrer policy can omit the header entirely, and an app that opens links in an embedded browser controls what it sends. The mechanism is well documented. I could not find a published measurement of how large the loss is, so treat any precise percentage you are quoted with suspicion until it names its source.

How do I create an AI traffic channel in GA4?

Check before you build, because GA4's default channel group already includes an AI Assistant channel. If you still need a custom one, go to Admin, then Data display, then Channel groups, and click Create new channel group. Add a channel with a condition on the Source field set to matches regex, then use Reorder to drag it above Referral, since traffic joins the first channel whose definition it matches. You need Editor access at property level.

Is AI referral traffic a reliable measure of AI search visibility?

No. It is a floor rather than a measurement, and it understates the channel for reasons that stack rather than cancel. Sessions whose referrer was dropped land in direct, campaign-tagged sessions with no medium can fall into Unassigned, and clicks from Google's AI Overviews and AI Mode are reported inside ordinary web search. Use citation and mention tracking as the primary measure, and read the session figure as a trend only.

Which hostnames do AI assistants send referrals from?

Start from Google's own worked example rather than from a list in an article. Google's custom channel groups documentation includes an AI assistants example built on the Source field with a supplied regex pattern. Treat it as a starting point: its keyword tokens do not cover every assistant Google names elsewhere, and I could not confirm a specific referring hostname for any assistant against vendor documentation. Then read sessionSource in your Traffic acquisition report and narrow the pattern to what your property records.

Why is my AI referral number so much smaller than my citation count?

Because they count different events. A citation means an assistant showed your link. A session means somebody clicked it and the click survived the trip into your analytics. Between those two points sit dropped referrers, sessions misfiled as Unassigned, and Google's AI surfaces reported as organic search. A gap is expected. It is evidence about how the measurement works, not proof that the visibility work is failing.

Share This Article

Anshuman Sinha
Written by

Anshuman Sinha

AI SEO Specialist, GrowthHasten

Anshuman Sinha is an AI SEO Specialist and Computer Science Engineer with over three years of experience in SEO and five years in web development. He specializes in Technical SEO, AI Search Optimization (AEO and GEO), SaaS SEO, and building high-performance websites with modern technologies.

View profile

Stay Ahead Of The Curve

Get the latest SEO insights and growth strategies delivered to your inbox. No spam, just actionable advice.