{"id":11685,"date":"2026-07-15T19:51:03","date_gmt":"2026-07-15T11:51:03","guid":{"rendered":"http:\/\/longzhuplatform.com\/?p=11685"},"modified":"2026-07-15T19:51:03","modified_gmt":"2026-07-15T11:51:03","slug":"ga4s-ai-assistant-channel-undercounts-your-ai-traffic-how-to-build-one-that-doesnt","status":"publish","type":"post","link":"http:\/\/longzhuplatform.com\/?p=11685","title":{"rendered":"GA4\u2019s AI Assistant Channel Undercounts Your AI Traffic: How To Build One That Doesn\u2019t"},"content":{"rendered":"<p><\/p> <div id=\"narrow-cont\"> <p>I was digging through a Google Analytics 4 account recently, broke the traffic down by source and medium, and saw something that made me stop scrolling. The same source, <code>chatgpt.com<\/code>, was sitting in three different channels at once. Not three different sources. One source, scattered across three channels, in the same report. If you\u2019ve got GA4\u2019s new AI Assistant channel, there\u2019s a good chance the exact same thing is happening in your data right now. And it means the AI traffic number you\u2019re reporting is almost certainly wrong.<\/p> <p>AI traffic is still a small slice for most sites, but it converts well above its weight: Similarweb\u2019s clickstream data has ChatGPT referrals converting at around 7%, ahead of organic search and not far behind paid. A high-intent channel that small is worth measuring properly rather than eyeballing it. Let me show you why it fragments, and how to fix it.<\/p> <p><iframe class=\"sej-iframe-auto-height\" id=\"in-content-iframe\" scrolling=\"no\" src=\"https:\/\/www.searchenginejournal.com\/wp-json\/sscats\/v2\/tk\/Middle_Post_Text\"><\/iframe><\/p> <h2>So What Did Google Actually Change?<\/h2> <p>On May 13, 2026, Google added a native AI Assistant channel to GA4\u2019s Default Channel Group. The idea is simple. When GA4 spots a referrer it recognizes as an AI assistant, it tags the session with the medium <code>ai-assistant<\/code>, drops it into the AI Assistant channel, and stamps the campaign as <code>(ai-assistant)<\/code>. No setup, no regex, nothing for you to build. It rolled out gradually and reached most properties by early June 2026.<\/p> <p>If you spent the last year stitching together custom regex just to see your AI traffic, that\u2019s a genuine win. Before this, those visits sat in Referral, or in Direct when the referrer was missing.<\/p> <p>But here\u2019s the catch, and it\u2019s hiding in the word \u201crecognizes.\u201d The list of platforms Google recognizes keeps moving. At launch, it named ChatGPT, Gemini, and Claude. By June, the live documentation listed a different set (ChatGPT, Gemini, DeepSeek, Copilot, and Grok), with Claude quietly dropped. Perplexity, one of the highest-intent AI sources going, still isn\u2019t on the list and keeps landing in Referral. So don\u2019t hard-code a platform list into a client report. Check Google\u2019s channel definitions on the day you publish, because they change.<\/p> <h2>1 Source, 3 Channels: The Problem Hiding In Your Reports<\/h2> <p>Back to that screenshot. The reason a single source splits across three channels is that GA4 decides the channel using source <em>and<\/em> medium together, not source on its own. Add <strong>Session source\/medium<\/strong> as a dimension, and you can watch <code>chatgpt.com<\/code> break into three:<\/p> <ul> <li><code>chatgpt.com \/ ai-assistant<\/code> lands in <strong>AI Assistant<\/strong>. This is the slice GA4 recognized and tagged.<\/li> <li><code>chatgpt.com \/ referral<\/code> lands in <strong>Referral<\/strong>. These are the sessions GA4 didn\u2019t tag, plus anything that arrived before the channel switched on for your property (remember, the rollout dragged into June).<\/li> <li><code>chatgpt.com \/ (not set)<\/code> lands in <strong>Unassigned<\/strong>, the channel almost nobody ever opens. Google\u2019s own rule is blunt here: when source\/medium comes through as (not set), there\u2019s no channel rule to catch it, so it falls into Unassigned.<\/li> <\/ul> <figure id=\"attachment_580142\" class=\"wp-caption aligncenter\" style=\"width: 1270px\"><img decoding=\"async\" alt=\"chatgpt.com in different mediums (GA4)\" class=\"wp-image-580142 size-full\" height=\"474\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462.png\" width=\"1270\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-384x143.png 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-425x159.png 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-480x179.png 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-680x254.png 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-768x287.png 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-850x317.png 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462-1024x382.png 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.37.14-462.png 1270w\" sizes=\"auto, (max-width: 1270px) 100vw, 1270px\" loading=\"lazy\" title=\"GA4\u2019s AI Assistant Channel Undercounts Your AI Traffic: How To Build One That Doesn\u2019t\u63d2\u56fe\" \/><figcaption class=\"wp-caption-text\">Image from author, June 2026<\/figcaption><\/figure> <p>Why would a source you clearly recognize turn up with no medium? In my experience it\u2019s usually the ChatGPT app and its in-app browser. As MarTech has documented, links opened inside those embedded browsers tend to strip the referrer, so GA4 hangs on to the source but loses the medium.<\/p> <p>So your real ChatGPT number isn\u2019t in one place. It\u2019s smeared across three channels, and one of them is a bucket you probably never check. Read the AI Assistant channel on its own, and you\u2019ll undercount every single time.<\/p> <h2>Why The Obvious Fixes Don\u2019t Work<\/h2> <p>There are three instinctive fixes here, and I wouldn\u2019t lean on any of them:<\/p> <ul> <li><strong>Just read the AI Assistant channel.<\/strong> It misses the Referral and Unassigned slices of the very same traffic, and it ignores Perplexity completely.<\/li> <li><strong>Compare this month to last.<\/strong> The native channel only counts forward from the rollout date, and it switched on at different times for different properties. So any range reaching back into spring 2026 is comparing tagged traffic against untagged traffic. That\u2019s not a trend; it\u2019s an artifact.<\/li> <li><strong>Check your rank tracking.<\/strong> Different question entirely. Rankings tell you about position, not whether an assistant actually sent someone to your site.<\/li> <\/ul> <h2>The Fix: 1 Custom Channel That Matches On Source<\/h2> <p>Here\u2019s the move that actually solves it. Build a custom channel group and match for source while ignoring medium completely. The second you do that, the <code>ai-assistant<\/code>, <code>referral<\/code> and <code>(not set)<\/code> versions of <code>chatgpt.com<\/code> collapse into a single line.<\/p> <p>You get two bonuses on top. A custom channel group applies its rules retroactively across your whole date range, so it rescues all those old ChatGPT sessions stuck in Referral. And because you\u2019re writing the rule, you can include the platforms Google leaves out, Perplexity included.<\/p> <p>Here\u2019s how I set it up:<\/p> <p>1. Go to <em>Admin &gt; Data display &gt; Channel groups<\/em> and create a new group.<\/p> <figure id=\"attachment_580156\" class=\"wp-caption aligncenter\" style=\"width: 2832px\"><img decoding=\"async\" alt=\"Adding channel group in GA4\" class=\"wp-image-580156 size-full\" height=\"1320\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401.png\" width=\"2832\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-384x179.png 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-425x198.png 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-480x224.png 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-680x317.png 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-768x358.png 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-850x396.png 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-1024x477.png 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-1280x720.png 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-1300x680.png 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-1536x716.png 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-1600x746.png 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-1920x895.png 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401-2048x955.png 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.11-401.png 2832w\" sizes=\"auto, (max-width: 2832px) 100vw, 2832px\" loading=\"lazy\" title=\"GA4\u2019s AI Assistant Channel Undercounts Your AI Traffic: How To Build One That Doesn\u2019t\u63d2\u56fe1\" \/><figcaption class=\"wp-caption-text\">Image from author, June 2026<\/figcaption><\/figure> <p>2. Add a channel and call it AI.<\/p> <figure id=\"attachment_580157\" class=\"wp-caption aligncenter\" style=\"width: 2382px\"><img decoding=\"async\" alt=\"GA4 Channel Group AI\" class=\"wp-image-580157 size-full\" height=\"1482\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416.png\" width=\"2382\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-384x239.png 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-425x264.png 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-480x299.png 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-680x423.png 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-768x478.png 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-850x529.png 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-1024x637.png 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-1280x720.png 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-1300x680.png 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-1536x956.png 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-1600x995.png 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-1920x1195.png 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416-2048x1274.png 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-12.42.43-416.png 2382w\" sizes=\"auto, (max-width: 2382px) 100vw, 2382px\" loading=\"lazy\" title=\"GA4\u2019s AI Assistant Channel Undercounts Your AI Traffic: How To Build One That Doesn\u2019t\u63d2\u56fe2\" \/><figcaption class=\"wp-caption-text\">Image from author, June 2026<\/figcaption><\/figure> <p>3. Set the condition to Source matches regex, with a pattern covering the AI domains.<\/p> <figure id=\"attachment_580158\" class=\"wp-caption aligncenter\" style=\"width: 2394px\"><img decoding=\"async\" alt=\"AI Source Regex GA4\" class=\"wp-image-580158 size-full\" height=\"1158\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599.png\" width=\"2394\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-384x186.png 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-425x206.png 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-480x232.png 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-680x329.png 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-768x371.png 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-850x411.png 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-1024x495.png 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-1280x720.png 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-1300x680.png 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-1536x743.png 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-1600x774.png 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-1920x929.png 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599-2048x991.png 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/06\/screenshot-2026-06-22-at-15.14.34-599.png 2394w\" sizes=\"auto, (max-width: 2394px) 100vw, 2394px\" loading=\"lazy\" title=\"GA4\u2019s AI Assistant Channel Undercounts Your AI Traffic: How To Build One That Doesn\u2019t\u63d2\u56fe3\" \/><figcaption class=\"wp-caption-text\">Image from author, June 2026<\/figcaption><\/figure> <p>4. Drag the AI channel above Referral and Organic, so it claims those sessions first.<\/p> <p>5. Save, then apply the group as your primary dimension in any acquisition report.<\/p> <p>The regex is where you can quietly sabotage yourself, so build it carefully. Keep entries tied to recognizable domains or service-specific host tokens. Never throw in a bare token like <code>gpt<\/code> on its own, because it\u2019ll match any source that happens to contain those three letters and drag in false positives, which is exactly the sort of thing that gets your data picked apart. Here\u2019s a boundary-aware pattern covering the major AI sources you\u2019d want to track:<\/p> <pre><code>.*(^|[\/.:@?&amp;=])(chatgpt\\.com|chat-gpt\\.org|openai\\.com|perplexity|gemini\\.google\\.com|copilot\\.microsoft\\.com|edgepilot|edgeservices|claude\\.ai|deepseek\\.com|grok\\.com|you\\.com|nimble\\.ai|iask\\.ai|aitastic\\.app|bnngpt\\.com|writesonic\\.com|copy\\.ai)([\/.:@?=]|$).*<\/code><\/pre> <p>Two quick notes on that. <code>gemini.google.com<\/code> is a specific host, so it won\u2019t hoover up all your Google organic, which is exactly why you must never add a bare <code>google<\/code> to the list. And treat the pattern as perishable. I\u2019d review it every quarter, because platforms come and go and their domains may change.<\/p> <h2>The Bit Even A Perfect Channel Can\u2019t Fix<\/h2> <p>This is the part most guides skip, and it\u2019s the part that keeps you honest. A custom channel group fixes how traffic is <em>classified<\/em>, not whether it gets <em>collected<\/em> in the first place. A source rule can only catch sessions that showed up with a source it can actually read.<\/p> <p>The biggest blind spot is AI traffic with no referrer at all, which lands in Direct. Most of that comes from the AI mobile apps and in-app browsers, which pass nothing for GA4 to read, so there\u2019s no source to match on.<\/p> <p>On top of that, Google\u2019s own AI Overviews and AI Mode get counted as Organic Search (<code>google \/ organic<\/code>), and Google deliberately keeps them out of the AI Assistant channel. For a lot of sites, that\u2019s the single biggest AI surface there is, and it\u2019s invisible as \u201cAI\u201d in your reports. Don\u2019t try to drag it into your AI channel either, or you\u2019ll swallow up ordinary Google organic by accident.<\/p> <p>So, be precise about what you\u2019re claiming. With this custom channel in place, you\u2019ve got a complete and consistent number for the AI sources you can actually identify. What you haven\u2019t got is a measure of total AI influence. Whether an assistant recommended you to someone who never clicked is a completely different problem, and no channel group is going to solve it.<\/p> <h2>What I\u2019d Do This Week<\/h2> <p>Treat the native AI Assistant channel as a starting point, not the finished product. Then:<\/p> <ul> <li>Add Session source\/medium to a Traffic acquisition report and go looking for your AI domains spread across AI Assistant, Referral, and Unassigned. Honestly, seeing the split for yourself is half the lesson.<\/li> <li>Build the source-based AI custom channel group to pull the fragments back together and recover the history the native channel left behind.<\/li> <li>Write down a monthly baseline. With a moving platform list and a big dark slice you can\u2019t see, the month-on-month trend will tell you far more than any single headline figure.<\/li> <\/ul> <p>Google finally putting AI traffic on the dashboard is a real step forward. Just remember that the default view hands you the easy slice. The actual work now is knowing exactly which slices it\u2019s quietly leaving out.<\/p> <p><strong>More Resources:<\/strong><\/p> <hr\/> <p><em>Featured Image: Roman Samborskyi\/Shutterstock<\/em><\/p> <\/div> <p>Analytics &amp; Data,Generative AI#GA4s #Assistant #Channel #Undercounts #Traffic #Build #Doesnt1784116263<\/p> ","protected":false},"excerpt":{"rendered":"<p>I was digging through a Google Analytics 4 account recently, broke the traffic down by source and medium, and saw something that made me stop scrolling. The same source, chatgpt.com, was sitting in three different channels at once. Not three different sources. One source, scattered across three channels, in the same report. If you\u2019ve got [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11686,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[6008,8296,711,6988,46413,441,46414],"class_list":["post-11685","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-accessibility","tag-assistant","tag-build","tag-channel","tag-doesnt","tag-ga4s","tag-traffic","tag-undercounts"],"acf":[],"_links":{"self":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts\/11685","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11685"}],"version-history":[{"count":0,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts\/11685\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/media\/11686"}],"wp:attachment":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11685"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}