You cannot attribute LLM retrieval traffic in GA4 with one custom channel group. You need four, because AI shows up in four measurably different places: as visible referrers, as headerless direct clicks from mobile apps, as clicks buried inside google/organic, and as crawler activity that GA4 filters out entirely. This guide gives you the exact GA4 configuration, GSC cross-reference, and server-log check I use to see all four segments in one weekly view.
Key takeaways
- GA4 added an "AI Assistant" default channel group in 2026, but it only catches roughly one of the four ways LLM traffic reaches your site.
- ChatGPT accounts for about 92 percent of measurable AI referral traffic, and roughly 70 percent of AI clicks still land as (direct) because mobile apps strip the referrer header.
- Google AI Overviews and AI Mode clicks are attributed to google/organic by Google's own documentation, so they are invisible in any GA4 report that stops at the channel dimension.
- AI crawlers like OAI-SearchBot, PerplexityBot, and ClaudeBot never appear as GA4 sessions at all. GA4 excludes known bots by default, so retrieval activity lives in server logs.
- The measurement job is not one regex. It is four segments, each with a different source and a different KPI.
What is LLM retrieval traffic, and why doesn't GA4 track it correctly by default?
LLM retrieval traffic is any human visit to your site that started with a large language model surfacing your content, whether the model cited you in a linked answer, embedded a quote from your page, or referenced your brand and the reader searched their way over. The label matters because it changes the KPI. LLM retrieval is not the same as an organic Google click and not the same as a paid ad click, and it does not obey the referrer rules those two do.
GA4's default view breaks this in three specific ways. First, most mobile-app clicks arrive without a Referer header, so they collapse into (direct)/(none) instead of a source you can name. According to MeasureU (2026), roughly 70 percent of AI traffic shows up as direct because the app strips the referrer before the click reaches your analytics. Second, Google's own AI features, AI Overviews and AI Mode, are attributed to google/organic. Google's Default channel group documentation is explicit that Organic Search "includes AI Overviews and AI Mode." That means a citation that earned you a click from Google's own AI experience is indistinguishable from a normal blue-link click in your acquisition report. Third, the crawlers that fetch your pages for retrieval, like OAI-SearchBot, PerplexityBot, and ClaudeBot, are automatically excluded from GA4 as known bots per Google's bot exclusion documentation, so the "we got crawled" signal never becomes a session at all.
Every guide I read this year, including the current top-ranking Semrush and Orbit Media pieces, gives you one regex and one custom channel group. That is fine as far as it goes. It just does not go past segment one. The other three segments are where most of the traffic actually is.

Segment 1: How do I capture visible AI referrer clicks (ChatGPT, Perplexity, Claude, Gemini)?
This is the segment every existing guide covers, so I will go through it briefly and add the two pieces they leave out.
Use the new default channel first. In 2026, Google added "AI Assistant" as a default channel group in GA4. According to Search Engine Journal (2026), the medium is ai-assistant and the seed list includes ChatGPT, Gemini, DeepSeek, Copilot, and Grok. Before you build anything custom, open Reports, Acquisition, Traffic acquisition and change the primary dimension to "Session default channel group." If AI Assistant is in the list, GA4 is already sorting your recognized-referrer clicks for you.
Then add the custom safety net. The default AI Assistant channel is not comprehensive. Google has not published the full recognized-referrer list, and I have watched clicks from perplexity.ai, claude.ai, you.com, and phind.com fall to Referral rather than AI Assistant depending on the exact medium value. So I still build a custom channel group as a backstop:
- Open Admin, Data display, Channel groups.
- Duplicate the default group and add a new channel called "AI Referral (Custom)."
- Set Source matches regex to:
.*(chatgpt\.com|openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|you\.com|phind\.com|meta\.ai|grok\.com|deepseek\.com|kagi\.com|brave\.com).* - Reorder the new channel above Referral. GA4 walks the list top-down, so if you leave your custom channel below Referral, the referral rule wins first and your bucket stays empty. Orbit Media flagged this ordering trap in their guide and it is the number-one setup mistake I see.
The KPI for Segment 1 is sessions per platform. ChatGPT dominates. According to Search Engine Land (2026), ChatGPT reached 92.4 percent of trackable LLM referral traffic across their full dataset with 12.8x growth over 19 months, and Gemini reached about 4.5 percent. If your Segment 1 breakdown does not look approximately like that split, you either have a niche audience skewed to one platform or your regex is missing subdomains. Check both.
Segment 2: How do I recover ChatGPT app clicks that land in (direct)?
Segment 1 catches web clicks. Segment 2 is the recovery play for the mobile-app clicks that Segment 1 misses. These are the ones stripping your GA4 report to (direct)/(none).
Use the utm_source fingerprint OpenAI added. According to SearchPilot's April 2026 AI traffic reference, OpenAI began appending utm_source=chatgpt.com to citation links in mid-2025 but did not append utm_medium. That is a specific quirk you can exploit. Traffic with utm_source=chatgpt.com and no utm_medium lands in Unassigned or Direct in GA4 by default, but you can pull it out with a custom channel condition:
- Add a channel to your custom channel group called "AI Referral (Recovered)."
- Condition:
First user sourcematches regexchatgpt\.com|openaiORSession sourcematches regexchatgpt\.com|openai. - Order it above Direct.
Do not stop there. According to the Search Engine Journal write-up (2026) I cited above, GA4's AI Assistant channel does not backfill Direct traffic even when the source is later inferred, so this custom recovery is the only way to reclaim these visits into your AI segment.
Cross-check with a landing-page anomaly filter. If you see a page that historically got most of its traffic from google/organic suddenly getting a spike of (direct)/(none) sessions with high engagement, that pattern is often app-based LLM traffic that you can trace by pairing GA4 with GSC. In Explore, pivot Landing page + query string against Session source/medium, filter to (direct)/(none) on pages with an active GEO campaign, and compare the trend line to the GSC "AI Search" filter's impressions on the same URL. When the two curves move together, you are almost certainly looking at app-clicked LLM traffic. This is a diagnostic, not a source of truth, so I use it to size Segment 2 rather than to attribute individual sessions.
The KPI for Segment 2 is a share estimate, not a session count. According to Passionfruit SEO (2025), roughly 20 to 40 percent of AI-originated visits still appear as Direct because they arrive without a referrer header. The number in your account will depend on how heavily your audience uses ChatGPT and Claude on mobile. I report Segment 2 as "estimated AI in Direct" and update the estimate quarterly rather than pretending to a precision the data does not support.

Segment 3: How do I estimate AI Overviews and AI Mode clicks that get filed as google/organic?
This is the segment that hurts, because there is no clean answer inside GA4. Google's Default channel group documentation is explicit that Organic Search includes AI Overviews and AI Mode, and GA4 has no default dimension that separates them. You have to triangulate from outside.
Start with GSC's Generative AI report. Google Search Console added a native Generative AI filter to Performance in 2026, and it is the closest thing you get to a clean AI Overviews signal. Set the Search Type to "Generative AI" and pull impressions, clicks, and top pages for the same window you are looking at in GA4. Those clicks are the ones GA4 is filing as google/organic. I wrote about this filter's rollout in my earlier piece on Google Search Console's new Generative AI report.
Decompose your organic sessions. In GA4 Explore, pivot your top landing pages against Session source/medium with the filter Session source = google AND Session medium = organic. Export the last 30 days. Then join that against the GSC Generative AI clicks per page for the same window. The percentage of google/organic sessions per page that came via the Generative AI surface is your best estimate of Segment 3 volume for that page. It is not perfect, because GSC counts impressions differently and because AI Mode sometimes takes a second click through a normal SERP, but it is far better than assuming zero.
The KPI for Segment 3 is Generative AI clicks per top page, not a percentage of total sessions. According to Search Engine Land's earlier reporting on AI Overviews (2026), Overviews compressed publisher click-throughs on informational queries significantly, so a page that used to earn 200 organic sessions a day may now earn 140 organic sessions plus 30 Generative AI clicks plus a wider top-of-funnel impression share. The right frame is "what is the AI-earned share of my brand's total organic visibility per page," which is the exact question a segment-based scorecard can answer once you build it.
Segment 4: How do I see AI crawler retrieval activity that GA4 filters out entirely?
The first three segments track humans. Segment 4 tracks the retrieval robots that fetch your content so an LLM can cite you. These never enter GA4. According to Google's bot exclusion documentation, GA4 automatically excludes known bots and spiders, and OpenAI's own bots documentation and Perplexity's crawlers documentation both identify OAI-SearchBot, ChatGPT-User, PerplexityBot, and Claude-SearchBot as automated agents, not browsers running the GA4 tag.
That means the crawl-side signal, which is your supply-side view of whether the answer engines are actually reading your pages, lives in three places outside GA4:
Server logs. Grep for user agents matching OAI-SearchBot|ChatGPT-User|PerplexityBot|Claude-SearchBot|ClaudeBot|Google-Extended (with the note that Google-Extended is a robots.txt token, not a live HTTP user agent, per Google's crawler docs). Bucket hits by URL to see which pages the retrieval bots read most often. Repeat crawls on a page correlate with steady LLM citations for that page.
Cloudflare Bot Analytics (or your CDN's equivalent). If your site is behind Cloudflare, the AI Insights view groups retrieval traffic by bot family without the log-parsing work. It is the fastest way to get a weekly count per bot for a non-technical team.
AI crawler audit tools. For a quick health check without infrastructure access, run an AI crawler audit against your robots.txt and headers to make sure you are not silently blocking a retrieval bot you thought you were blocking only for training. I covered the training-vs-retrieval distinction in my post on answer engine optimization.
The KPI for Segment 4 is crawl frequency per top page, not sessions. If PerplexityBot fetched your ten priority URLs 40 times in the last 7 days and only twice in the previous 7, that is a signal that Perplexity is actively rebuilding its answer set for your topic, and Segment 1 and Segment 2 numbers should start moving next.

How do I roll the 4 segments into one weekly LLM traffic scorecard?
Building four measurement streams is only useful if you can read them in one place. Here is the report I run every Monday for my own site and for clients with active GEO work:
- Segment 1 sessions, pulled from the AI Assistant default channel plus my custom AI Referral group, split by platform (ChatGPT, Perplexity, Gemini, Claude, other).
- Segment 2 estimated share, reported as a percentage band ("20 to 30 percent of Direct/Unassigned this week") rather than a hard count, with the AI Referral (Recovered) channel as the recovered floor.
- Segment 3 Generative AI clicks per top page, pulled from GSC's Generative AI Search Type filter and joined to my top ten landing pages.
- Segment 4 crawl frequency per top page, pulled from Cloudflare Bot Analytics or a weekly log grep, with a WoW delta for each of the four retrieval bots.
I roll these into a Looker Studio page with four cards, each with a WoW arrow and a 4-week sparkline. The cards are read together, not compared to each other, because they are measuring different levels of the funnel: Segment 4 is supply (are the bots reading me), Segments 1 and 2 are demand (are humans clicking through), and Segment 3 is Google's AI-shaped share of that demand. If you want the wider strategy this scorecard fits inside, see my GEO for Business playbook.
What mistakes should I avoid setting this up?
Six patterns I see repeatedly, all fixable:
- Building one giant regex and calling it done. Segment 1 alone catches maybe a third of the story. If your weekly AI number never budges, you probably built Segment 1 and stopped.
- Ordering your custom channel below Referral or below Direct. GA4 uses first-match top-down, so a custom AI channel below Referral will always lose the routing race. Move it up.
- Using Landing page + query string as your only pivot. ChatGPT strips query strings on many app surfaces, so pivoting by page alone will double-count landing pages and hide the app-click share. Pair it with First user source.
- Treating utm_source=chatgpt.com as a Google click. GA4 will bucket it as Referral or Unassigned unless you write the recovery channel. Do not assume the AI Assistant default catches it, because it does not always.
- Reporting AI Overviews traffic as zero. It is not zero, it is hidden inside google/organic. Estimate it from GSC's Generative AI filter and report it as an estimate.
- Ignoring the crawl side. If PerplexityBot has not fetched your pillar page in 30 days, no Segment 1 setup in the world will help you show up in Perplexity answers. Fix the crawl before you optimize the report.
Frequently asked questions
Does GA4 already track ChatGPT traffic?
Partly. GA4 added AI Assistant as a default channel group in 2026 and the medium is ai-assistant. It catches most web-browser clicks from chatgpt.com, gemini.google.com, and copilot.microsoft.com. It does not reliably catch mobile-app clicks (which strip referrers), the utm_source=chatgpt.com pattern OpenAI adopted mid-2025 (which lands as Unassigned), or Google AI Overviews clicks (which stay in google/organic).
Do AI Overviews clicks show up as organic in GA4?
Yes. Google's own Default channel group documentation states that Organic Search "includes AI Overviews and AI Mode." There is no default GA4 dimension that separates them. Estimate the volume from Google Search Console's Generative AI filter and join it to your landing pages.
Do PerplexityBot and ClaudeBot appear in Google Analytics?
No. Per Google's bot exclusion documentation, GA4 automatically filters known bots and spiders. Retrieval bots also do not execute the GA4 tag reliably. To see them, use server logs or Cloudflare Bot Analytics.
Which AI platforms strip the referrer header?
According to SearchPilot's April 2026 AI traffic reference, ChatGPT's mobile app, ChatGPT Atlas, and Claude's app surfaces routinely arrive without a Referer, and Perplexity's mobile app produces a mix of referral and direct sessions. Copy-pasting a link from any assistant also strips the referrer.
What is the best regex for AI referral traffic in GA4?
Start with a session-source regex covering the major domains: .*(chatgpt\.com|openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|you\.com|phind\.com|meta\.ai|grok\.com|deepseek\.com|kagi\.com|brave\.com).*. Add subdomains as they emerge. Order the channel above Referral in your channel group.
Do I need a paid tool to do this?
No. Segments 1 through 3 are free with GA4 and Google Search Console. Segment 4 is free if you already have Cloudflare or server-log access. Paid tools (Semrush's AI Traffic dashboard, Ahrefs's LLM analytics, Ryze AI) mostly add competitive benchmarking on top, which is useful for prioritization but not required to see your own numbers.
Is this setup future-proof?
No measurement setup ever is, especially not in a space that added a default channel this year. I re-check the recognized-referrer list every quarter, refresh the regex when a new engine crosses the 1 percent share line, and treat the whole framework as an evolving artifact rather than a one-time build. That is the price of admission for measuring a new channel.

