Prompt research: how to find the questions buyers ask AI
Keyword tools can't show what buyers ask ChatGPT. Mine sales calls, tickets, Search Console and Reddit, sort by intent, and pick the prompts worth tracking.
GA4's new AI Assistant channel misses some assistants and app clicks land in Direct. The custom channel group, the regex, and what GA4 still can't see.
To track ChatGPT and other AI assistant traffic in Google Analytics 4, start with the AI Assistant channel Google added to the default channel group on May 13, 2026, then build a custom channel group with a Source matches regex rule for every assistant you care about and move it above Referral. Expect an undercount either way: clicks from native apps and copied links arrive without a referrer and get filed as Direct. Below is the full setup, a regex builder, and an honest list of what GA4 still can't see.
This is the measurement half of AI visibility - the clicks. The other half, whether assistants name you at all, never shows up in an analytics tool. We cover that in how to track your brand across AI engines; here we stay inside GA4.
A visit from an AI assistant carries up to two fingerprints. The first is the referrer: when someone clicks a cited link inside ChatGPT on the web, the browser tells your site the click came from chatgpt.com. The second is a UTM tag: OpenAI's publisher FAQ says ChatGPT automatically adds utm_source=chatgpt.com to referral URLs. When a landing URL carries UTM parameters, GA4 takes the session source from them, so both fingerprints point at the same value: a session source of chatgpt.com.
The other assistants mostly identify themselves through the referrer alone. These are the hosts worth knowing:
| Assistant | Session source you'll see | Notes |
|---|---|---|
| ChatGPT | chatgpt.com (older: chat.openai.com) | Referrer plus utm_source=chatgpt.com |
| Perplexity | perplexity.ai | Referrer from the web app |
| Gemini | gemini.google.com | Separate from Google Search, which arrives as google |
| Claude | claude.ai | Referrer from the web app |
| Microsoft Copilot | copilot.microsoft.com | Copilot inside Bing can arrive as bing, indistinguishable from search |
| Grok | grok.com | Referrer from the web app |
| DeepSeek | chat.deepseek.com | Referrer from the web app |
Look for these in Reports › Acquisition › Traffic acquisition with the dimension switched to Session source / medium. Until May 2026 they appeared with medium referral. Since then, the ones Google recognises carry a new medium of their own.
Google's default channel group definitions now include an AI Assistant channel, described as "the channel by which users arrive at your site from sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok." The rule is simple: if the referrer matches Google's list of AI assistants, GA4 sets the medium to ai-assistant and the campaign to (ai-assistant), and the channel picks up everything with that medium. You don't configure anything; it appears in the standard reports.
It's a real improvement, but three gaps make it worth adding your own channel on top:
perplexity.ai / referral, Google's channel isn't catching it.You need Editor access to the property. The whole thing takes about ten minutes, and you can undo it at any time without touching collected data, because channel groups are a reporting layer.
Go to Admin › Data display › Channel groups. Click Create new channel group: the new group starts as a copy of the default one, so it keeps every built-in channel - including the AI Assistant one - and you add yours to it. Name the copy something obvious, like "Default + AI". Standard properties allow two custom channel groups with up to 50 channels each, so you aren't using up much.
Click Add new channel, name it "AI assistants", and add one condition: Source · matches regex · your pattern. Because GA4 uses the UTM value as the source when it exists, the same rule catches referrer-based and UTM-based visits. It also catches the sessions Google already relabelled, since their source is still chatgpt.com or gemini.google.com - only the medium changed. Build the pattern below.
Tick the assistants you want in the channel. Paste the result into the channel's condition: Source · matches regex.
^(.*\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|gemini\.google\.com|bard\.google\.com|claude\.ai|copilot\.microsoft\.com|copilot\.cloud\.microsoft|grok\.com|chat\.deepseek\.com)$
"chatgpt.com" matches - this session would land in your AI channel.
Two details make the generated pattern safer than most you'll find online. First, GA4 matches the full value by default: perplexity\.ai on its own would not match www.perplexity.ai. The ^(.*\.)? prefix allows subdomains without allowing lookalikes. Second, it lists exact hosts instead of loose words. The example pattern on Google's own help page includes the alternatives ^.*ai and .*gpt.* - which match any source that ends in "ai" or contains "gpt". Every startup on a .ai domain that links to you would be counted as an AI assistant. Explicit hosts are dull, and that's the point.
Order matters more than anything else in this setup. In Google's words, traffic is included in the first channel whose definition it matches. A Perplexity click has medium referral, so if the Referral channel is checked first, the session stops there and never reaches your AI rule. Google's own instructions say to reorder the list so AI assistants sits above Referral.
Open Traffic acquisition, and switch the primary dimension from the default channel group to your new one - custom groups work as a primary dimension in the Acquisition reports, with each channel as a row. If you want it to replace the default everywhere, select it as the property's primary channel group under Admin › Channel groups. Then sanity-check it: filter to your AI assistants channel, add Session source as a secondary dimension, and confirm every row is a host you meant to include. Anything unexpected means the regex is too broad.
GA4's Direct channel is defined as source (direct) with medium (none) or (not set) - in plain terms, a visit that arrived with no referrer and no campaign tags. AI assistants generate several of those:
utm_source, your source-based rule still catches it. If not, it's Direct.no-referrer. Any assistant surface that does this makes its clicks look like typed-in visits.Google's own AI surfaces are a separate case. Clicks from AI Overviews and AI Mode come from google.com and land in Organic Search, and Google reports them inside the "Web" search type in Search Console rather than as a separate line. Neither tool splits them out. If those surfaces matter in your market, see our guide to AI Overviews for how to tell whether you appear in them.
You can't recover a missing referrer, but you can look for its shadow. None of these is precise; together they tell you whether the floor is close to the real number or far below it.
/blog/some-long-slug from memory. A rise in Direct sessions that land on specific articles, comparison pages or docs - especially pages you know assistants cite - is a reasonable sign of untagged AI clicks.Counting sessions is the easy part. The more useful question is what those visitors do. Build a free-form exploration with Session custom channel group and Landing page + query string as rows, and Sessions, Engaged sessions, Engagement rate and Key events as values. Filter to your AI channel and compare it against Organic Search over the same date range.
Two patterns are worth watching. The landing pages tell you which of your pages assistants actually send people to - usually not the homepage, often a comparison, pricing or how-to page. If the same few pages carry most of the AI sessions, that's where to put effort: make those pages easy to quote and current. And the conversion rate tells you whether AI visitors arrive further along in their decision than search visitors, which is the argument you'll need when someone asks why this channel deserves attention while it's still small.
GA4 measures clicks, and AI answers produce far fewer clicks than they produce impressions of your brand. An assistant can recommend you to a thousand people and send you ten visits, or describe a competitor as the default choice and send you none. None of that appears in analytics. The number that captures it is how often the engines name you for the questions buyers ask - visibility rate and share of voice - and you measure it by sampling answers, not by reading traffic.
GA4 also doesn't see the bots. AI crawlers fetch your pages to train models, build search indexes and answer questions live, and they don't run your analytics tag. Those visits live in your server logs, which we walk through in AI crawlers in your server logs. Logs, clicks and answer tracking cover three different layers; you need all three to see the whole picture.
If you'd rather not maintain a regex, or you don't use GA4 at all, Zene has its own AI traffic tracking. It's a single script tag on your site. On each page load it checks the referrer host and the utm_source against a list of AI assistants and sends a beacon only for AI-referred landings - regular visitors are never sent. It sets no cookies, respects Do Not Track and Global Privacy Control, and can record conversions from those visits if you add one line where a signup or purchase completes. The results sit on Zene's AI traffic page next to your visibility numbers, and it's included on every plan, Free too.
It has the same blind spot as GA4: a visit without a referrer or a UTM tag can't be attributed by anyone. What it adds is the context - the clicks next to the answers that produced them.
Clicks are the lagging half of the story. To see whether ChatGPT, Gemini, Claude and Perplexity are naming you in the first place, run a free audit - it takes about 90 seconds and needs no card. Or compare plans on the pricing page.
Partly. Since May 13, 2026 GA4's default channel group has an AI Assistant channel: when the referrer matches Google's list of AI assistants, the medium is set to ai-assistant and the session is grouped there. Google names ChatGPT, Gemini, DeepSeek, Copilot and Grok as examples but doesn't publish the full list, so a custom channel group with your own regex is still worth adding for complete and historical coverage.
Use Source matches regex with an anchored list of exact hosts, for example ^(.*\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|gemini\.google\.com|claude\.ai|copilot\.microsoft\.com|grok\.com)$. GA4 matches the full value by default, so the anchors and optional subdomain prefix matter. Avoid loose patterns like .*ai, which also catch unrelated .ai domains, and place the channel above Referral.
Because the visit arrived with no referrer and no campaign tags. That happens when a link is opened from a native assistant app, when a referrer policy strips the referrer, or when someone copies a URL or types your brand after reading an answer. ChatGPT adds utm_source=chatgpt.com to links, which rescues some of these visits; the rest are counted as Direct or branded search.
It means the visitor clicked a link in ChatGPT. OpenAI says ChatGPT automatically adds utm_source=chatgpt.com to referral URLs so publishers can track traffic from ChatGPT search. GA4 uses the UTM value as the session source, so these visits show up with source chatgpt.com even when the browser sent no referrer.
Not separately. Clicks from AI Overviews and AI Mode arrive from google.com and land in Organic Search alongside regular search clicks, and Google reports them inside the Web search type in Search Console rather than as their own line. To know whether you appear in those answers, you have to check the answers themselves.
Put this guide into practice - get your free visibility score in minutes.
