AI search 10 min read

How to track ChatGPT traffic in GA4, and why the number you get is wrong

GA4 can track ChatGPT referral traffic with the right channel group, but the number it reports is a floor, not the real total.

The short answer

To track ChatGPT traffic in GA4, build a custom channel group that captures referral hostnames like chatgpt.com, chat.openai.com, and com.openai.chat, then isolate them from generic referral. This shows sessions where a user clicked a link inside a ChatGPT answer. It will not show the much larger volume of people who read your brand in an AI answer and typed your name into a browser instead of clicking through.

Avishai Sam Bitton

Founder, DemandBox

Most GA4 setups I look at report ChatGPT traffic as zero or close to it, and the team reading the dashboard concludes AI search does not send them anyone. The setup is wrong, not the premise. GA4 does not know what an AI answer engine is, so unless someone tells it, referral traffic from these tools lands in a generic bucket or gets swallowed by direct traffic entirely.

What GA4 actually sees when someone clicks from ChatGPT

When a user clicks a link inside a ChatGPT answer, the browser sends a referrer header identifying the origin as chatgpt.com or chat.openai.com, depending on whether the session started on the web app or was passed through from the mobile app. GA4's default channel grouping does not have a rule for these hostnames, so it falls back to its generic logic. Depending on the exact configuration, that session lands in Referral, or in some cases gets grouped with Organic Search if the domain pattern happens to match an existing rule loosely enough.

The fix is a custom channel group. GA4 lets you define channel rules that run before the default set, so you can catch source equals chatgpt.com or source contains openai and route those sessions into a channel called AI Search or AI Referral. Perplexity, which passes perplexity.ai as a referrer reliably, gets the same treatment. The mobile ChatGPT app is trickier: on iOS and Android it can pass com.openai.chat as the source when the in-app browser hands off to Safari or Chrome, so that string needs its own rule rather than assuming it will match a chatgpt.com pattern.

The hostnames worth segmenting, and the ones that will not show up cleanly

  • chatgpt.com and chat.openai.com: the two web referrers for ChatGPT, both should route into the same channel.
  • com.openai.chat: the mobile app referral string, easy to miss if you only search for chatgpt.com in your raw traffic report.
  • perplexity.ai: reliable and consistent, one of the cleanest AI referrers to track.
  • copilot.microsoft.com and bing.com: Copilot traffic often blends with Bing search traffic and needs a judgment call on whether to split it out.
  • google.com: Google's AI Overviews and AI Mode rarely pass a distinct referrer, the click routes through the same google.com referral as a normal search result, so this traffic is structurally invisible in GA4 without additional tagging on your side.

That last point is the one people miss. Google AI Overviews sit on top of the standard search results page, and a click on a citation inside the overview typically still carries a google.com referrer indistinguishable from a normal blue link click. There is no clean way inside GA4 alone to separate an AI Overview click from a standard organic click. If you need that split, you have to look at Search Console's data, which shows impressions and clicks at the query level and can hint at AI Overview presence through query patterns, or accept that Google's AI surfaces are folded into your organic number.

Why the GA4 number is a floor, not the real total

Even a perfectly configured channel group only captures one behaviour: a user reading an AI answer, seeing a link, and clicking it. That is a small slice of what actually happens when your brand shows up in an AI answer. The much more common path is that someone reads a ChatGPT answer that mentions your company, closes the tab, opens a browser, and types your company name directly into Google or into their address bar. That session lands in GA4 as Organic Search or Direct, with zero attribution back to the AI answer that actually drove it.

This is not a GA4 limitation that a better plugin fixes. It is a structural property of how people use chat interfaces. Clicking out of a conversational answer interrupts a flow that clicking a search result does not. The referral click number will always understate the influence of AI answers on demand, sometimes by a wide margin, and there is no analytics fix for that on your side. The honest move is to report the AI referral channel as a directional floor and pair it with brand search volume trends, which pick up some of the click-avoidant behaviour even though they cannot prove causation either.

Worked example

Illustrative model

Illustrative model: a mid-market SaaS site building the channel group

A B2B software company with roughly 40,000 monthly organic sessions wants to know how much of that comes from AI answer engines. This is an illustrative model with assumptions stated, not a reported outcome.

Sessions before custom channel group (AI traffic hidden in Referral/Direct)
reported as 0 identifiable AI sessions
Sessions after custom channel group with ChatGPT, Perplexity, Copilot rules
assume 180 sessions/month surface as AI Referral
Branded search volume change over the same period, assumed increase
assume 9% month over month, unattributed to any channel

Result: The channel group turns an invisible number into a visible 180 sessions, useful for trend tracking. But the branded search increase is likely a bigger signal of AI influence and it cannot be attributed to any single source in GA4, which is why the AI Referral number should be read as a floor.

The strongest case against this

If the number is always an undercount, why bother building the channel group at all instead of just accepting AI traffic is unmeasurable?

Because a directional trend line is still useful even when the absolute number is wrong. If your AI Referral channel goes from 40 sessions a month to 400 over two quarters, that tells you something real is changing even though you cannot say the true total is 400 or 4,000. Refusing to measure at all means you lose the trend along with the precision. Track the floor, be explicit that it is a floor when you present it, and pair it with branded search volume as a second, imperfect signal rather than waiting for a measurement method that does not exist yet.

What a realistic setup looks like end to end

A realistic setup has three parts. First, the custom channel group in GA4 with explicit rules for each AI hostname, checked quarterly against raw referral data so new AI products get caught before they sit misclassified for months. Second, a Search Console cross-check on branded query volume, since a rise in people searching your exact company name is one of the few side effects of AI exposure that leaves a trace outside the AI platforms themselves. Third, a clear internal note attached to any AI Referral number in a report explaining that it excludes AI Overview clicks, excludes anyone who read an answer and typed your name into a browser, and excludes any AI tool that strips its referrer entirely.

None of this requires new tooling beyond GA4's own admin settings. It requires someone to actually build the channel group rules instead of assuming GA4 handles it automatically, and it requires the person presenting the number to say out loud that it undercounts. Skipping either step is how teams end up concluding AI search does not matter to them, based on a dashboard that was never configured to see it in the first place.

Building the channel group step by step in GA4

Inside GA4, custom channel groups live under Admin, in the Data Display section, and the interface makes it easy to build a rule that looks right and behaves wrong. The most common mistake is adding an AI hostname rule after the default channel rules instead of before them. GA4 evaluates channel rules in order and stops at the first match, so if a session matching chatgpt.com already matches a broader Referral rule higher up the list, your new rule never fires and the session stays in the generic bucket even though you configured it correctly on paper.

The fix is to create the custom channel group as a copy of the default channel group, then move the new AI Search rule to the very top of the rule list before saving. Name the channel something specific, such as AI Referral, rather than reusing a name GA4 already uses elsewhere, so nobody confuses it with the built-in Organic Search channel when they are scanning a report quickly. Test the rule against a date range you already know contains AI referral sessions, using the raw referral report as a source of truth, and confirm the session count in the new channel matches what you expect before trusting it for ongoing reporting.

  • Duplicate the default channel group rather than editing it directly, so you keep a fallback view if the new rules misbehave.
  • Place the AI hostname rule first in the rule order, above Referral, Organic Search, and Direct.
  • Use 'contains' matching for openai and perplexity where practical, rather than exact-match strings, to catch minor subdomain variation.
  • Validate the rule against a known date range before publishing it to a shared dashboard.
  • Document the rule logic somewhere outside GA4 itself, since channel group configuration is easy to overwrite by accident during an unrelated cleanup.

Search Console as the second half of the picture

GA4 tells you what happened after a click. Search Console tells you something about what happened before one, at least for Google's own AI surfaces. Impressions and clicks reported at the query level can reveal a pattern where impressions rise sharply for a query while click-through rate falls, which is a common signature of an AI Overview appearing above the organic results and absorbing attention without sending a proportional number of clicks. Search Console does not label these impressions as AI Overview impressions explicitly in most account tiers, so the read is inferential rather than a clean report, but the pattern is distinct enough to be useful once you know what to look for.

The practical habit is pulling query-level data for your priority terms every month and watching the relationship between impressions and clicks rather than just the raw numbers. A term that used to convert impressions to clicks at a steady rate and now converts at half that rate, with impressions flat or rising, is a reasonable candidate for AI Overview presence even without a direct label confirming it. This does not replace the GA4 channel group, it complements it by covering the part of the funnel GA4 cannot see at all.

Common mistakes that quietly break the setup

The first common mistake is building the channel group once and never revisiting it. AI products change their domains, launch new apps, and sometimes migrate their referral behaviour entirely when they ship a redesign. A channel group built in January that isn't checked again until the following January will miss six months of a new competitor product's traffic without anyone noticing, because the traffic doesn't disappear, it just silently lands in Referral or Direct where nobody is looking for it.

The second mistake is reporting the AI Referral number without any caveat attached, which trains leadership to treat it as a complete count rather than a floor. Once a number appears in a recurring dashboard without a footnote, people start making decisions as if it were exhaustive, and reversing that assumption later is harder than attaching the caveat from the first report. The third mistake is conflating AI Referral with AI influence generally: a quarter where the AI Referral channel stays flat but branded search volume climbs sharply is not a quarter where AI had no effect, it is a quarter where the effect showed up somewhere GA4's channel group cannot see.

Sites running server-side tagging through a tag management setup sometimes lose the referrer header before it ever reaches GA4, because the server-side container can strip or rewrite headers depending on how the client-side request is proxied. If your AI Referral channel reports suspiciously low numbers even after building the rule correctly, check the raw request payload arriving at the server-side endpoint rather than assuming the GA4 rule itself is broken. This is a common and quiet failure mode: the channel group logic is fine, but the referrer never survives the trip through the tagging infrastructure in the first place, so there is nothing for the rule to match against.

Consent mode introduces a separate wrinkle. When a visitor declines analytics consent, GA4 can still model some behaviour using conversion modelling, but referral-level detail, including the specific AI hostname, is generally not part of what gets modelled back. In markets with high consent-decline rates, this means the AI Referral channel undercounts by an amount roughly proportional to your decline rate, on top of the structural undercount already described. Worth flagging in any report where consent rates are material, since a shrinking AI Referral number in a market where consent-decline rates just increased may reflect a measurement artifact rather than an actual drop in AI-driven traffic.

Reading the trend line without overreading a single month

Once the channel group is live, the temptation is to check it weekly and react to every wiggle. AI referral volume for most sites is still a small absolute number, which means normal statistical noise produces swings of 30 or 40 percent month to month that look dramatic on a chart but carry no real signal. A single spike is often a single piece of content getting cited unusually often in a short window, not evidence of a durable shift in how models treat your brand, and a single dip is often nothing more than a slow week.

The more useful read is a rolling quarterly average compared against the previous quarter, alongside the branded search volume trend from Search Console as a second, independent signal. When both move in the same direction over a full quarter, that is a much stronger basis for a claim about AI-driven demand than either metric alone. When they diverge, for example AI Referral sessions flat while branded search climbs, that divergence is itself informative: it suggests people are being influenced by AI answers but overwhelmingly choosing not to click through, which reinforces the case for treating the referral number as a floor rather than trying to explain away the mismatch.

A quick note on privacy-focused browsers and referrer stripping

Safari's Intelligent Tracking Prevention and several privacy-focused browser extensions strip or downgrade referrer headers by default, which means a portion of AI-driven clicks arrive at your site with no usable referrer at all, regardless of how well your channel group is built. These sessions typically fall into Direct, further inflating a bucket that already absorbs the click-avoidant behaviour described earlier. There is no GA4 setting that recovers this data after the fact; the only mitigation is awareness that your Direct channel contains an unknown mix of genuinely typed-in visits and AI-referred visits whose referrer got stripped in transit, which is one more reason to treat Direct traffic growth as a data point worth investigating rather than dismissing.

What this measurement setup cannot tell you

Tracking referral traffic answers one question: are people clicking through from AI answers. It does not answer whether your brand is being mentioned at all, how often, or in what context, when a user never clicks. Those questions require a different method: running your own sample of prompts against ChatGPT, Perplexity, and Google's AI Overviews and logging whether your brand appears, which is closer to a visibility audit than a traffic report. GA4 setup and prompt-based visibility tracking answer different questions, and treating the GA4 number as the whole picture of your AI search presence is the same mistake as treating organic click-through rate as the whole picture of your Google presence.

Build the channel group this week

  1. 1Pull the last 90 days of raw referral traffic in GA4 and list every hostname you do not recognise.
  2. 2Build a custom channel group rule that matches chatgpt.com, chat.openai.com, com.openai.chat, and perplexity.ai before the default rules apply.
  3. 3Add a second rule for Bing and Copilot referrers, since they often blend into existing search channels.
  4. 4Set a recurring quarterly review to catch new AI hostnames before they get miscategorised for months.
  5. 5Report the AI referral number as a floor, not a total, in any deck that goes to leadership.

Common questions

Which hostnames should I segment for ChatGPT traffic in GA4?
Start with chatgpt.com and chat.openai.com for web sessions, and com.openai.chat for the mobile app referral string. Perplexity shows up as perplexity.ai, Google's AI Overviews rarely pass a distinct referrer at all because the click still routes through google.com, and Copilot traffic often arrives as bing.com or copilot.microsoft.com. Build the list as a saved segment so it is consistent across reports rather than typed fresh each time.
Does GA4 have a default channel for AI search traffic?
No. GA4's default channel grouping puts most AI referrers into Referral or, worse, Direct if the referrer header is stripped. You need a custom channel group with an explicit rule that matches the AI hostnames before the default rules run, otherwise GA4 sorts them into the generic bucket and you lose the ability to report on them separately.
Why does my ChatGPT traffic number look so much smaller than I expected?
Because GA4 only counts a session when a user clicks a link inside the AI answer and lands on your site with a readable referrer. Most people who see your brand mentioned in a ChatGPT answer do not click anything. They close the app and search your name directly, which GA4 then reports as organic or direct traffic with no link back to the AI exposure that caused it.
Can I use UTM parameters to fix the undercount?
Only partially. You control UTM parameters on links you place, such as a link in your own content that an AI model might cite verbatim. You have no control over how OpenAI, Perplexity, or Google format the outbound link from their answer surface, so you cannot force a UTM tag onto a click you do not generate. UTM parameters help with your own citation links, not with the underlying referral traffic problem.
Should I set up a separate GA4 property just for AI referral traffic?
No, a separate property fragments your reporting and breaks cross channel comparison. Use one property with a dedicated channel group and, if you need more detail, an exploration report filtered to that channel group. The goal is to see AI referral traffic next to organic and paid in the same view, not to isolate it into a report nobody checks.
How often do the AI referral hostnames change?
Often enough that a one-time setup goes stale. New AI products launch, existing ones change their referral string when they update their app, and some browsers or in-app browsers strip the referrer entirely. Review the hostname list quarterly against your raw referral report rather than assuming the list you built in January still covers everything in September.

Last updated

First published
Last updated
Last fact review

Who wrote this

Avishai Sam Bitton

Founder, DemandBox

Avishai runs demand generation programs for B2B SaaS companies across performance marketing, SEO, and answer engine optimization. He works directly with the teams he advises, with no account managers in between.

Connect on LinkedIn

Want this argument applied to your numbers?

No deck, no discovery sequence. Tell us what you are spending and where the pipeline stalls, and we will tell you what we would change first.

See the audit and what it covers

$9,137, credited back against a twelve month engagement.