The GA4 regex
Paste it into a Session source filter set to matches regex. It covers 51 referring hosts across 40 assistants. It's anchored, so it never matches google.com, bing.com or a look-alike such as notchatgpt.com.
^(www\.)?(chatgpt\.com|chat\.openai\.com|openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|aistudio\.google\.com|copilot\.microsoft\.com|m365\.cloud\.microsoft|grok\.com|you\.com|meta\.ai|poe\.com|phind\.com|chat\.deepseek\.com|chat\.mistral\.ai|chat\.qwen\.ai|kimi\.com|felo\.ai|iask\.ai|andisearch\.com|komo\.ai|chat\.z\.ai|doubao\.com|copilot\.cloud\.microsoft|duck\.ai|yuanbao\.tencent\.com|ai\.perplexity\.app|chat\.felo\.ai|genspark\.ai|chat\.genspark\.ai|chatglm\.cn|deepseek\.com|ernie\.baidu\.com|yiyan\.baidu\.com|ai\.baidu\.com|hunyuan\.tencent\.com|xinghuo\.xfyun\.cn|giga\.chat|hey\.pi\.ai|lumo\.proton\.me|manus\.im|sarvam\.ai|t3\.chat|venice\.ai|notebooklm\.google\.com|bard\.google\.com|app\.jasper\.ai|app\.writesonic\.com|chatplus\.com|chat-gpt\.org)$|^(([a-z0-9-]+\.){2,}|([a-vx-z0-9-][a-z0-9-]*|w|ww|w[a-vx-z0-9-][a-z0-9-]*|ww[a-vx-z0-9-][a-z0-9-]*|www[a-z0-9-]+)\.)(perplexity\.ai|openai\.com|claude\.ai|anthropic\.com|you\.com|phind\.com|poe\.com)$The same regex in 5 shorter parts
Use these if a field won't take the full pattern. Each part works on its own; add them as OR conditions on the same channel.
^(www\.)?(chatgpt\.com|chat\.openai\.com|openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|aistudio\.google\.com|copilot\.microsoft\.com|m365\.cloud\.microsoft|grok\.com|you\.com|meta\.ai|poe\.com|phind\.com|chat\.deepseek\.com|chat\.mistral\.ai)$^(www\.)?(chat\.qwen\.ai|kimi\.com|felo\.ai|iask\.ai|andisearch\.com|komo\.ai|chat\.z\.ai|doubao\.com|copilot\.cloud\.microsoft|duck\.ai|yuanbao\.tencent\.com|ai\.perplexity\.app|chat\.felo\.ai|genspark\.ai|chat\.genspark\.ai|chatglm\.cn|deepseek\.com)$^(www\.)?(ernie\.baidu\.com|yiyan\.baidu\.com|ai\.baidu\.com|hunyuan\.tencent\.com|xinghuo\.xfyun\.cn|giga\.chat|hey\.pi\.ai|lumo\.proton\.me|manus\.im|sarvam\.ai|t3\.chat|venice\.ai|notebooklm\.google\.com|bard\.google\.com|app\.jasper\.ai)$^(www\.)?(app\.writesonic\.com|chatplus\.com|chat-gpt\.org)$^(([a-z0-9-]+\.){2,}|([a-vx-z0-9-][a-z0-9-]*|w|ww|w[a-vx-z0-9-][a-z0-9-]*|ww[a-vx-z0-9-][a-z0-9-]*|www[a-z0-9-]+)\.)(perplexity\.ai|openai\.com|claude\.ai|anthropic\.com|you\.com|phind\.com|poe\.com)$How to track ChatGPT traffic in GA4
- 1
Read GA4's own AI Assistant channel first
In Reports, Acquisition, Traffic acquisition, set the primary dimension to Session default channel group. GA4 now files sessions whose referrer is on Google's list of AI assistants under AI Assistant. Google doesn't publish that list, and the channel leaves out clicks from AI Overviews and AI Mode, which arrive as Google search.
- 2
Filter session source with the full referrer regex
Add a filter on Session source, condition matches regex, and paste the regex above. It is generated from the same host list Growth Radar classifies arrivals with, so you can check Google's channel against a list you can read. GA4 regex is case sensitive; the pattern is lowercase, as referring hostnames are.
- 3
Make it a channel in a custom channel group
In Admin, Data display, Channel groups, copy the default group, add a channel named AI assistants with the condition Session source matches regex, and drag it above Referral. GA4 assigns a session to the first channel that matches, so below Referral it never fires. Custom channel groups apply to past data too. If the field refuses the full pattern, add the split parts as OR conditions in the same channel.
- 4
Keep bing.com and google.com out
bing.com and google.com are search engines. Copilot sends visitors from copilot.microsoft.com and its cloud.microsoft hosts, and Gemini from gemini.google.com, so a bare bing or google token counts ordinary search clicks as AI. A loose pattern like gpt or bard matches any source containing those letters.
- 5
Break the AI sessions down by landing page
Switch the dimension to Landing page with the same filter. The pages assistants send people to are the pages they cite, so that's the list worth improving first.
Every AI referrer host in the regex
This is the list Growth Radar itself uses to decide that a visit came from an assistant, rendered from the same code. It includes hosts from the PostHog and Matomo AI-referrer lists. A zone marked * also covers its subdomains.
- Andi
- andisearch.com
- Baidu AI
- ai.baidu.com
- Chat+
- chatplus.comchat-gpt.org
- ChatGLM
- chatglm.cn
- ChatGPT
- chatgpt.comchat.openai.comopenai.com*.openai.com
- Claude
- claude.ai*.claude.ai*.anthropic.com
- Copilot
- copilot.microsoft.comm365.cloud.microsoftcopilot.cloud.microsoft
- DeepSeek
- chat.deepseek.comdeepseek.com
- Doubao
- doubao.com
- Duck.ai
- duck.ai
- ERNIE
- ernie.baidu.comyiyan.baidu.com
- Felo
- felo.aichat.felo.ai
- Gemini
- gemini.google.combard.google.com
- Genspark
- genspark.aichat.genspark.ai
- GigaChat
- giga.chat
- Google AI Studio
- aistudio.google.com
- Grok
- grok.com
- Hunyuan
- hunyuan.tencent.com
- iAsk
- iask.ai
- iFlytek Spark
- xinghuo.xfyun.cn
- Jasper
- app.jasper.ai
- Kimi
- kimi.com
- Komo
- komo.ai
- Le Chat
- chat.mistral.ai
- Lumo
- lumo.proton.me
- Manus
- manus.im
- Meta AI
- meta.ai
- NotebookLM
- notebooklm.google.com
- Perplexity
- perplexity.aiai.perplexity.app*.perplexity.ai
- Phind
- phind.com*.phind.com
- Pi
- hey.pi.ai
- Poe
- poe.com*.poe.com
- Qwen
- chat.qwen.ai
- Sarvam
- sarvam.ai
- T3 Chat
- t3.chat
- Venice
- venice.ai
- Writesonic
- app.writesonic.com
- You.com
- you.com*.you.com
- Yuanbao
- yuanbao.tencent.com
- Z.ai
- chat.z.ai
What no analytics tool can see
A regex only sorts visits that arrived with a source. These arrive without one, and land in Direct whatever you paste.
Clicks from an app with no referrer
The Referer header names the web page a request came from. A link opened from a desktop or phone app has no web page behind it, so unless the app adds one or tags the link, the visit has no source and GA4 files it as Direct.
Source:MDN: the Referer headerGoogle: GA4 default channel group
Copied and pasted links
Someone who copies a URL out of an answer and pastes it into the address bar arrives exactly like someone who typed it. GA4 defines Direct as arriving by a saved link or by entering the URL, and nothing in the request says otherwise.
Links that strip the referrer
A link marked noreferrer, or a page served with a no-referrer policy, sends no Referer at all. Whether an assistant does this can change without notice.
Source:MDN: Referrer-Policy
Answers nobody clicks
An answer that names you without a click leaves no trace in any analytics tool. That's citation tracking, which measures something different from traffic.
ChatGPT's utm tag recovers part of the gap
OpenAI says ChatGPT adds utm_source=chatgpt.com to links in its answers. When the referrer is gone but the tag survives, GA4 still reads chatgpt.com as the session source, and the regex above matches it. Other assistants make no such promise.
What Growth Radar does with the same list
- Growth Radar's tracker records the referring host and any utm source on the landing pageview, and classifies both with the host list on this page, so the two never disagree.
- A visit that carried only an assistant's utm tag is counted as its own channel, never folded into referrer visits.
- GA4's AI Assistant channel is shown beside its own numbers as a site-level floor, never added to them.
- Every AI visit is tied to the landing page it hit, and from there to the page's AI-crawler hits and citations Bing reports.
- A zero is shown with the size of the list behind it, 40 assistants, because no arrivals can also mean an assistant the list doesn't know yet.
Questions
Why does ChatGPT traffic show up as Direct in GA4?
Because the visit reached your site with no referrer and no utm tag. That happens when the link is opened from an app rather than a web page, when someone pastes the URL, or when the link strips the referrer. GA4 files any session with no source as Direct.
Does GA4 track AI traffic on its own now?
Partly. GA4's default channel group has an AI Assistant channel built from Google's own list of assistant referrers. It only sees visits that carried a referrer, and it leaves out AI Overviews and AI Mode clicks, which count as Google search.
Should the regex include bing.com for Copilot?
No. Copilot sends visitors from copilot.microsoft.com and Microsoft cloud hosts. bing.com is web search, and counting it as AI mixes ordinary search clicks into the AI number.
