SEO·AEO·GEO

Measurement 9 min read

GA4 AI Assistant Channel: What It Misses, Plus a Tested Regex

Google’s new channel is a good start and a poor total. Here is exactly what it counts, where the rest of your AI traffic hides, and a copy-paste channel group we tested on 13 October 2026.

Aalhad, Founder, SEO·AEO·GEO

Founder, SEO·AEO·GEO

Builds SEO·AEO·GEO and writes the crawler, schema, and citation research published here.

𝕏 Post LinkedIn
Illustration of an analytics report being exported: charts, tables and a summary panel arranged on a page.

Key takeaways

  • GA4 has had a default AI Assistant channel since 13 May 2026; it classifies sessions from then on and does not rewrite older data.
  • It excludes Google’s AI Overviews and AI Mode, which stay in Organic Search and cannot be separated in GA4.
  • Google does not publish its assistant list: on 13 October 2026 the definition named ChatGPT, Gemini, Deepseek, Copilot and Grok, not Claude or Perplexity.
  • A custom channel group that matches Source with the regex below fixes history, Unassigned ChatGPT sessions and missing assistants, because custom groups apply retroactively.
  • In our 13 October 2026 test the regex classified 41 of 41 sample sources correctly; the example regex on Google’s help page got 10 wrong.

Since 13 May 2026, GA4 puts visits from recognised AI assistants into a default channel called AI Assistant, with the medium ai-assistant and the campaign (ai-assistant). Three things stop it being the whole picture. It only classifies sessions from the day it reached your property, it excludes Google’s AI Overviews and AI Mode, and Google does not publish the list of assistants it recognises. A custom channel group fixes most of that, because custom groups apply to past data and you choose the sources. The regex below covers 15 assistant hostnames and classified all 41 sample sources correctly when we tested it on 13 October 2026.

What the native AI Assistant channel counts

AI Assistant is the channel by which users arrive at your site from sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok. It excludes Google’s AI Overviews and AI Mode.

The rule behind it is short. A session lands in AI Assistant when its medium exactly matches ai-assistant, and GA4 sets that medium, plus the campaign (ai-assistant), automatically “if the referrer matches a list of AI Assistants”. The release note of 13 May 2026 describes the same three changes.

DimensionValue
Session mediumai-assistant
Session campaign(ai-assistant)
Session default channel groupAI Assistant
Session sourceThe assistant’s hostname, for example chatgpt.com
What GA4 records for a visit it recognises as coming from an AI assistant

Which assistants are on Google’s list?

Google doesn’t say, and the examples have already changed. The 13 May release note named ChatGPT, Gemini and Claude. The channel definition we read on 13 October 2026 names ChatGPT, Gemini, Deepseek, Copilot and Grok; Claude and Perplexity are not named. We also downloaded Google’s list of default-channel sources, which is served as a 27-page PDF. It holds 819 sources in four categories (search, social, shopping and video) and has no AI-assistant category at all. So the list GA4 uses can change without notice, and you cannot audit it. Search Engine Journal’s July 2026 testing found Perplexity sessions still landing in Referral (a third-party finding we could not reproduce without a property that receives Perplexity traffic).

Where the rest of your AI traffic goes

TrafficWhere GA4 puts itCan a channel group fix it?
AI sessions before the channel reached your property (13 May 2026, later on some properties)Referral, for example chatgpt.com / referralYes. Custom channel groups apply retroactively
ChatGPT links tagged utm_source=chatgpt.com with no mediumUnassigned, as chatgpt.com / (not set)Yes, by matching Source
Assistants Google doesn’t recognise (Perplexity, in SEJ’s tests)ReferralYes, by matching Source
Google AI Overviews and AI ModeOrganic Search, as google / organicNo. The referrer is google.com, the same as an ordinary result
Copilot answers inside Bing searchOrganic Search, as bing / organicNo, for the same reason
Untagged app clicks with no referrer, copied links, typed URLsDirectNo
People who read your name in an answer and search for it laterOrganic Search, as a brand queryNo
Crawlers and fetchers such as OAI-SearchBot, ChatGPT-User and Claude-UserNot in GA4: known bots are excluded automaticallyNo. Use server logs
AI-related traffic the native channel misses, and whether a custom channel group can recover it

The (not set) row has a documented cause. The tag OpenAI documents is utm_source=chatgpt.com on its own, with no medium, and Google’s campaign documentation says “Missing UTM parameters will result in (not set) values being present in reporting.” That is why one assistant can show up in three channels at once. If you only want to know what the tag itself means, see utm_source=chatgpt.com explained.

The Google rows cannot be fixed in GA4 at all. Google’s Search documentation says where those clicks go instead: “Just like the rest of the search results page, sites appearing in AI features (such as AI Overviews and AI Mode) are included in the overall search traffic in Search Console.” For impressions in those features, use the Search Console generative AI report.

The copy-paste regex (tested 13 October 2026)

^(.*\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|copilot\.microsoft\.com|copilot\.cloud\.microsoft|gemini\.google\.com|bard\.google\.com|chat\.deepseek\.com|grok\.com|meta\.ai|chat\.mistral\.ai|you\.com|duck\.ai|poe\.com)$

Use it as a Source matches regex condition. It is 239 characters long. (.*\.)? allows any subdomain, so www.perplexity.ai matches. Each hostname is spelled out with escaped dots, and ^ and $ pin the whole value, so gemini.com (a cryptocurrency exchange) and chatgpt.com.example.net do not match. Google says “By default, Google Analytics Regex is full regex”, meaning the pattern must match the entire value; because ours is anchored at both ends it behaves the same under partial matching too. ChatGPT’s tag and referrer hostnames are lowercase, and so is the pattern.

HostnameAssistantWhat we checked
chatgpt.comChatGPTListed by Cloudflare as an OpenAI referrer domain; page loads
chat.openai.comChatGPT, old address308 redirect to chatgpt.com; matters for historical data
perplexity.aiPerplexityListed by Cloudflare; perplexity.ai redirects to www.perplexity.ai
claude.aiClaudeListed by Cloudflare as an Anthropic referrer domain
copilot.microsoft.comMicrosoft CopilotPage loads; referrer policy origin-when-cross-origin
copilot.cloud.microsoftMicrosoft 365 Copilot (work accounts)Page loads; strict-origin-when-cross-origin
gemini.google.comGeminiPage loads; referrer policy origin
bard.google.comGemini, old address301 redirect to gemini.google.com; history only
chat.deepseek.comDeepSeekResponds behind a bot check
grok.comGrokPage loads; origin-when-cross-origin
meta.aiMeta AIResponds behind a bot check
chat.mistral.aiMistral Le ChatResponds behind a bot check
you.comYou.comPage loads; strict-origin-when-cross-origin
duck.aiDuckDuckGo’s AI chatPage loads; referrer policy origin
poe.comPoeRedirects to its login page
What each hostname in the regex covers, and how we checked it on 13 October 2026

Left out on purpose: openai.com (OpenAI’s own site, blog and docs send visitors who were not in a chat), google.com and bing.com (their AI answers can’t be told apart from ordinary results), m365.cloud.microsoft (shared with other Office web apps) and x.com (Grok inside X arrives with X’s referrer). Cloudflare’s referrer table also lists anthropic.com and meta.com; those are corporate sites, so we left them out too. Add any of them if your own reports show they send assistant traffic.

Test it on your own source values

Before you trust any pattern, test it against the Session source values in your own Referral and Unassigned rows. Paste this into your browser’s developer console and swap in your values:

const re = /^(.*\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|copilot\.microsoft\.com|copilot\.cloud\.microsoft|gemini\.google\.com|bard\.google\.com|chat\.deepseek\.com|grok\.com|meta\.ai|chat\.mistral\.ai|you\.com|duck\.ai|poe\.com)$/i

["chatgpt.com", "www.perplexity.ai", "gemini.com", "mail.google.com"].map((s) => [s, re.test(s)])
// → [["chatgpt.com", true], ["www.perplexity.ai", true], ["gemini.com", false], ["mail.google.com", false]]

Our test, and Google’s example

On 13 October 2026 we ran the pattern in Node.js with full-match semantics, the GA4 default, against 41 source values. Seventeen should match: the 15 hostnames above plus www.perplexity.ai and www.meta.ai. Twenty-four should not, among them google, bing, duckduckgo.com, mail.google.com, news.google.com, gemini.com, openai.com, platform.openai.com, l.facebook.com, t.co, bayou.com, example.ai, chatgpt.com.example.net, (direct) and (not set). The pattern uses only features that GA4’s RE2 engine shares with JavaScript, and it classified all 41 correctly.

Google’s custom channel group help page offers an example regex for AI assistants. On the same 41 values it got 10 wrong:

  • It missed chat.deepseek.com, grok.com, you.com and poe.com.
  • It matched gemini.com and www.gemini.com, a cryptocurrency exchange, and platform.openai.com, OpenAI’s developer docs.
  • It matched any value ending in “ai”, such as example.ai and notmeta.ai, and the made-up value chatgpt.com.example.net.

Google’s page itself says to update the regex when the assistants you want to measure change. That advice applies to ours as well: re-check it each quarter.

Set up the channel group in GA4

  1. Go to Admin > Data display > Channel groups. You need the Editor role or above.
  2. Click Create new channel group. GA4 starts you with a copy of the default group, including its AI Assistant channel.
  3. Name the group, for example “Channels + all AI assistants”.
  4. Click Add new channel and name it “AI assistants (all)”.
  5. Add a condition: Source, matches regex, and paste the pattern above.
  6. Optionally add a second condition joined with OR: Medium exactly matches ai-assistant. It keeps anything GA4 itself recognises even if it isn’t in our list. If your editor only offers AND, skip this step.
  7. Save the channel. Click Reorder and drag “AI assistants (all)” directly below the paid channels, above Organic Shopping. Google’s minimum is above Referral; sitting higher also protects it from future changes to the search and social lists, while ChatGPT ads tagged with a paid medium stay in the paid channels.
  8. Click Apply, then Save group.

Order matters because, in Google’s words, “Traffic is included in the first channel whose definition it matches given the current order of channels in the group.” A standard property can have two custom channel groups (five on GA4 360), each with up to 50 channels.

Read AI traffic in reports and explorations

  1. Open Reports > Acquisition > Traffic acquisition, open the primary dimension menu and choose your new channel group. The “AI assistants (all)” row is your total.
  2. Add Session source as a secondary dimension to split it by assistant.
  3. To see which pages assistants send people to, open Explore > Free form. Add your channel group and Landing page + query string as rows, and Sessions, Engaged sessions and Key events as values, then filter to the AI channel.
  4. Compare your row with the native AI Assistant row in the default group. The difference is what the native channel misses on your site.
  5. Set the date range to start before 13 May 2026 to see the AI traffic you had before the native channel existed.

Before you put the number in a report

  • It is a floor. Clicks without a referrer or tag show as Direct, and people who search your name later show as Organic Search. A “How did you hear about us?” option for AI assistants catches some of them.
  • Exclude your own visits. Testing your pages from ChatGPT inflates the count. Define internal traffic in GA4 and activate the internal-traffic data filter; Google warns that an applied data filter is permanent, so leave it in testing first. One marketer described reporting a large AI share of pipeline, then finding their own test visits in it (r/GEO_optimization).
  • Sessions are not citations. GA4 only sees people who clicked. Being cited without a click shows up only in Bing’s AI Performance report and, for Google, as impressions in Search Console.
  • Review the list every quarter. New assistants appear and domains move, so scan Referral and Unassigned for AI hostnames you don’t recognise.

Where this fits

GA4 tells you who arrived. Whether assistants can reach your pages in the first place is a separate question: run a free audit to check robots.txt for OAI-SearchBot, Claude-SearchBot and PerplexityBot, plus a simulated firewall test. To combine GA4 with the Search Console, Bing and Clarity reports into one honest monthly picture, read how to measure AI visibility.

FAQ

Is the GA4 AI Assistant channel retroactive?+

No. It classifies sessions from its launch on 13 May 2026 onward, and older AI visits stay where they were, usually in Referral. A custom channel group is different: Google says custom channel groups can be applied to your reports retroactively.

Does the GA4 AI Assistant channel include AI Overviews and AI Mode?+

No. Google’s definition says the channel excludes Google’s AI Overviews and AI Mode. Those clicks arrive from google.com and are counted in Organic Search together with ordinary results.

How do I track AI Overview traffic in GA4?+

You can’t isolate it, because an AI Overview click carries the same google.com referrer as a normal result. Use Search Console instead: AI feature clicks are included in the Performance report under the Web search type, and the generative AI performance report shows AI impressions by page.

Why is my ChatGPT traffic split between AI Assistant, Referral and Unassigned?+

Older sessions stay in Referral, and links tagged utm_source=chatgpt.com without a medium can show as (not set) and land in Unassigned. A custom channel that matches on Source rather than Medium puts all three back together.

Does the AI Assistant channel include Perplexity and Claude?+

Google’s current definition names ChatGPT, Gemini, Deepseek, Copilot and Grok, and Google does not publish the full list. Third-party testing in July 2026 found Perplexity sessions still in Referral. Our regex covers perplexity.ai and claude.ai explicitly.

Can I edit GA4’s default channel group?+

No. Google keeps the default group fixed so it stays a common reference. You can copy it into a custom channel group and edit the copy, and you can make a custom group your primary channel group, which applies only from that point forward.

Sources

  1. Default channel group — Google Analytics Help
  2. What’s new in Google Analytics (May 13, 2026: New AI Assistant traffic measurement) — Google Analytics Help (2026-05-13)
  3. Custom channel groups — Google Analytics Help
  4. About regular expressions (regex) — Google Analytics Help
  5. URL builders: Collect campaign data with custom URLs — Google Analytics Help
  6. GA4 default-channel-group sources and categories (downloadable list) — Google Analytics Help
  7. Known bot-traffic exclusion — Google Analytics Help
  8. Filter out internal traffic — Google Analytics Help
  9. AI features and your website — Google Search Central (2025-12-10)
  10. Bots reference: referrer domains by operator — Cloudflare AI Crawl Control docs (2026-04-23)
  11. GA4’s AI Assistant channel undercounts your AI traffic: how to build one that doesn’t (third-party analysis) — Search Engine Journal (2026-07-15)
  12. Thread: AI search traffic report sent with fake attribution numbers (practitioner anecdote) — Reddit r/GEO_optimization

Run it on your domain

See this lens as a finding, not a lecture.

Free technical GEO audit. Evidence-traced scores, LLM-ready export, no login.

Audit your website

Continue the atlas