AI Traffic in GA4: The Native Channel and the One You Build
Last updated · published
GA4 classifies AI assistant traffic for you now. There is a default channel called AI Assistant, it keys off the medium ai-assistant, and GA4 sets that medium itself when the referrer matches its own list of assistants.
The catch is the list. Google’s documentation names ChatGPT, Gemini, Deepseek, Copilot and Grok. Claude and Perplexity are not on it.
So the job in 2026 is no longer “carve AI out of Referral.” It is narrower: check what the native channel catches on your property, then build a custom channel group for the assistants it misses.
TL;DR
- GA4’s default channel group includes AI Assistant. GA4 assigns medium
ai-assistantand campaign(ai-assistant)when the referrer matches its list.- Google’s published list names ChatGPT, Gemini, Deepseek, Copilot and Grok. Claude, Perplexity, Meta AI, You.com and Poe are not named, and land in Referral.
- Build a custom channel group keyed on Source matching AI hostnames to catch the rest. Custom groups apply retroactively, so you see history the day you create one.
- Standard properties get two custom channel groups. Spend them deliberately.
- Exclude
openai.com,anthropic.com,google.comandx.aifrom the regex. They serve docs, marketing and organic search, not citations.- Assistant apps usually send no referrer, so that traffic lands in Direct and no rule of any kind recovers it.
What the Native Channel Catches
The AI Assistant channel works on medium, not on your rules. When GA4 recognises the referring host as an assistant, it stamps the session with medium ai-assistant and campaign (ai-assistant), and the default channel group files it under AI Assistant. Nothing to configure.
Google names five products in its channel documentation: ChatGPT, Gemini, Deepseek, Copilot and Grok. That list is the whole contract, and two of the assistants most B2B audiences actually use, Claude and Perplexity, are absent from it. Their referrals keep arriving as ordinary Referral sessions with source claude.ai or perplexity.ai.
One more limit applies to every approach on this page. Assistant mobile apps and desktop apps usually send no referrer at all, so those sessions land in Direct. No channel rule can recover a referrer that was never sent.
So check your own property first. Open Traffic acquisition, look for AI Assistant, and see which sources sit inside it. What you find there decides how much the custom group below has left to do.
What Each Assistant Sends
Hostnames, not marketing domains. Several assistants also have legacy hosts that still turn up in logs.
| Assistant | Referrer hostname(s) | Native channel? |
|---|---|---|
| ChatGPT | chatgpt.com, legacy chat.openai.com | Yes |
| Gemini | gemini.google.com, legacy bard.google.com | Yes |
| Copilot | copilot.microsoft.com | Yes |
| Deepseek | chat.deepseek.com | Yes |
| Grok | grok.com | Yes |
| Claude | claude.ai | No |
| Perplexity | perplexity.ai, www.perplexity.ai | No |
| Meta AI | meta.ai | No |
| You.com | you.com | No |
| Poe | poe.com | No |
ChatGPT also appends utm_source=chatgpt.com to citation links, so some of that traffic arrives tagged as well as referred.
Google AI Mode sits inside Search and arrives on the google.com organic hostname. That is Organic Search. Leave it there.
The Regex
Paste this into a custom channel group rule, matched against Source:
^(claude\.ai|perplexity\.ai|www\.perplexity\.ai|meta\.ai|you\.com|poe\.com|chatgpt\.com|chat\.openai\.com|gemini\.google\.com|bard\.google\.com|copilot\.microsoft\.com|chat\.deepseek\.com|grok\.com)$
The first six entries are the assistants GA4 does not name. The rest are there so your channel stays complete if Google’s list changes under you, and so the same pattern works in your warehouse, where no native channel exists.
Four hostnames are deliberately absent:
openai.comserves API docs, the dashboard and marketing pages. A developer reading the API reference is not a citation click.anthropic.comserves research, the blog and careers. Claude citations come fromclaude.ai.google.comis organic search. Match it and every Google search session becomes AI traffic.x.aiis xAI’s corporate site. The chat product isgrok.com.
Note chat.deepseek.com rather than deepseek.com. The anchored pattern matches whole hostnames, so the apex form never matches the chat host where the clicks come from.
Build It in Admin
- Admin, then Data display, then Channel groups.
- Create new channel group. GA4 clones the default group as a starting point.
- Add new channel, named
AI Assistant (custom)so nobody confuses it with the native one in a report. - Condition: dimension Source, match type matches regex, then the pattern above.
- Move the channel above Referral. Rules evaluate top down and first match wins, so a channel below Referral stays empty.
- Save.
Two things worth knowing before you spend the effort. Custom channel groups apply retroactively, so your new channel shows history immediately rather than starting from today. And standard properties allow two custom groups in total, which is a small budget if another team already has one.
Verify With a Real Click
Rules are easy. Verification is what finds the bugs.
Open DebugView (Admin, then Data display, then DebugView) and confirm your test device appears. Then click a real citation from each assistant you care about and watch session_start.
What you should see: for an assistant on Google’s list, medium ai-assistant. For Claude or Perplexity, medium referral with the source as the hostname. For a ChatGPT citation link, utm_source=chatgpt.com may arrive as well.
Here is the bug this catches. Perplexity sometimes reports as www.perplexity.ai rather than the apex. A regex without the www form drops those sessions into plain Referral, and you would never know without clicking.
If a click produces nothing, work down the list: did the assistant send a referrer at all (check the network panel), did the link open in an in-app browser, is your tag firing, does your regex match the exact host, is the channel above Referral.
A day later, pull Traffic acquisition with your custom group selected. Zero means the rule is too tight or the tag is broken. A suspiciously large number means it is too loose and you have matched something that also serves ordinary traffic.
The Warehouse Version
Dashboards built on the BigQuery export cannot read GA4’s channel groups, so the classification has to be rebuilt there. Two source fields matter: the session traffic source, and the raw referrer.
SELECT
event_date,
user_pseudo_id,
collected_traffic_source.manual_source AS manual_source,
NET.HOST(
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_referrer')
) AS referrer_host,
CASE
WHEN REGEXP_CONTAINS(
LOWER(COALESCE(
collected_traffic_source.manual_source,
NET.HOST((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_referrer'))
)),
r'^(claude\.ai|perplexity\.ai|www\.perplexity\.ai|meta\.ai|you\.com|poe\.com|chatgpt\.com|chat\.openai\.com|gemini\.google\.com|bard\.google\.com|copilot\.microsoft\.com|chat\.deepseek\.com|grok\.com)$'
) THEN 'AI Assistant'
ELSE 'Other'
END AS channel
FROM `project.dataset.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260930'
AND event_name = 'session_start'
Keep the _TABLE_SUFFIX filter. Without it the query scans every table you own.
Put the AI clause above any generic Referral catch-all, mirroring the GA4 ordering, and store the pattern in one place your dbt model and your GA4 documentation both reference. Two copies of a regex drift within a quarter.
Six Ways This Goes Wrong
Matching openai.com. Developer doc visits become AI traffic.
Matching google.com for Gemini. Tempting and catastrophic. Every organic Google session becomes AI traffic and your Organic Search numbers collapse.
Matching anthropic.com. Claude citations do not come from the corporate site.
Using an apex host where the chat lives on a subdomain. deepseek.com never matches chat.deepseek.com in an anchored pattern.
Path entries in a hostname field. Source stores a hostname, so bing.com/chat can never match. Path-level classification belongs in BigQuery against page_referrer.
Leaving the channel below Referral. Referral claims the session first and your channel reports zero.
FAQ
Does GA4 have an AI channel already?
Yes. AI Assistant is part of the default channel group, driven by the medium ai-assistant, which GA4 sets when it recognises the referring assistant. Google’s documentation names ChatGPT, Gemini, Deepseek, Copilot and Grok.
Why build a custom channel group at all?
Because Claude and Perplexity are not on Google’s published list, and for many B2B audiences they are the two that matter. A custom group also gives you a rule you control and one you can mirror in your warehouse.
How do I see Claude traffic in GA4?
Match claude.ai as a Source in a custom channel group ordered above Referral. Without that, Claude sessions sit in Referral.
Do custom channel groups apply to past data?
Yes. They apply retroactively, so the channel is populated with history as soon as you save it. Standard properties are limited to two custom groups.
What is the AI traffic regex for GA4?
Match Source against the anchored alternation in the regex section above. It covers the assistants GA4 names and the ones it does not, and excludes openai.com, anthropic.com, google.com and x.ai.
Does ChatGPT send a referrer?
Usually on desktop web, and it also appends utm_source=chatgpt.com to citation links. The mobile apps generally send neither, and that traffic lands in Direct.
Can I match bing.com/chat for Copilot?
No. Source holds a hostname with no path, so an entry with a slash never matches. Use copilot.microsoft.com, and do path-level work in BigQuery.
How accurate is any of this?
It captures sessions that arrive with a referrer you can match, which is a floor rather than a ceiling. App traffic, in-app browsers and privacy modes strip referrers and land in Direct. Pair the channel with branded-search movement and server-side log analysis if you need the fuller picture.
How often should I update the regex?
Quarterly. Add assistants as they become non-trivial in your traffic, drop entries with no sessions in 90 days, and re-verify with a real click once a year. Check Google’s channel documentation at the same time, since anything added to the native list no longer needs your rule.
Should the channel be called AI Assistant or AI Traffic?
Match GA4’s naming, and mark your custom one clearly. Two channels called the same thing in one property is a reconciliation headache nobody needs.
Build the custom group, click a citation from every assistant you care about, and check the numbers again in a week. What the native channel misses is exactly what you cannot see today.
For the tagging side, where you control the link rather than the referrer, see tracking AI referral traffic. Keeping those values consistent is the job of Terminus, the marketing taxonomy governance platform, which validates them when the link is built.
Every account starts with a 21-day trial, no credit card required.