AI search visibility is how often your brand shows up inside answers from ChatGPT, Perplexity, Gemini and Google's AI Overviews, and whether those answers name you, cite you or link to you. You measure it with three instruments together: a fixed prompt panel you run every month, an AI channel in GA4, and your server logs. None of them is enough alone.
Why does that matter? Because the tools selling "AI rank tracking" mostly measure one of the three and call it the whole picture. It isn't. A brand can be mentioned in 1 of every 5 answers and still see almost nothing in GA4, because most of that traffic arrives without a referrer.
- Track three levels separately: a mention (your name appears), a citation (your page is a listed source) and a link (the user can click through to you).
- A share-of-answer panel is a fixed set of 30 to 50 real customer prompts, run monthly across the same engines, 3 times each. Same prompts every month, or the trend means nothing.
- GA4 sees only part of AI traffic. Build a custom channel group for AI referrers, then accept that a big slice still lands in Direct.
- Server logs show which AI crawlers fetch your pages. User-triggered agents like
ChatGPT-Userare the closest thing to measured demand. - What improves visibility is mostly unglamorous: crawler access, answer-first pages, checkable facts and being mentioned on sites the models already trust.
Mention, citation, link: three different results
Before you measure anything, decide what you're counting. "Showing up in ChatGPT" can mean three very different things, and they're worth very different amounts.
| Level | What it looks like | Where you see it | What it's worth |
|---|---|---|---|
| Mention | Your brand name appears in the answer text | Only in the answer itself | Awareness. No click, no attribution |
| Citation | Your page is listed as a source | Source list or footnotes | Credibility. The model chose your page as evidence |
| Link | A clickable link to your domain in the answer | Inline link or source card | Possible traffic, partly visible in GA4 |
The gap between these is bigger than people expect. ChatGPT will happily mention a brand from its training data with no source attached. Perplexity almost always cites, but the cited page might be a G2 review or a Reddit thread about you, not your own site. So I record all three per answer, plus one more field: which domain got the citation when it wasn't mine.
That last field is where the useful findings live. If a competitor keeps getting cited through the same comparison article on a third-party blog, that article is your target, not the model.
How to build a share-of-answer prompt panel
A prompt panel is a spreadsheet, not a platform. Mine take about three hours a month per client once the template exists. Here's how to build one:
-
Collect 30 to 50 real prompts. Pull them from sales call notes, support tickets, Search Console queries with question words, and the "how did you hear about us" field. Not from your keyword tool. People type longer questions into ChatGPT than into Google.
-
Tag each prompt by intent. Category ("best HR software for a 50-person company"), comparison ("X vs Y"), problem ("why does my payroll export fail"), and brand ("is X any good"). Brand prompts tell you how the model describes you. The other three tell you whether it thinks of you at all.
-
Freeze the wording. Same text, same language, every month. Change one word and you've started a new panel.
-
Pick your engines and stick to them. ChatGPT, Perplexity, Gemini and Google AI Overviews cover most of what matters in the EU right now. Add Copilot or Claude if your buyers use them.
-
Run each prompt 3 times per engine, in a logged-out session or a temporary chat, so memory and personalization don't skew it. Answers aren't deterministic. I explained the noise problem with real numbers in does llms.txt actually work.
-
Record per answer: mentioned (yes/no), cited (yes/no), linked (yes/no), competitors named, and the cited domain.
-
Calculate share of answer as mentions divided by total answers. With 40 prompts, 4 engines and 3 runs, that's 480 answers a month.
Add 5 control prompts about topics you don't cover at all. If you start appearing there, your test is broken, not your visibility improved.
Iwona's panel: three months of numbers
Iwona runs marketing for an HR software company in Kraków, about 60 people, selling mostly to Polish and Czech mid-size companies that outgrew spreadsheets. Her CEO had read that "AI is the new Google". He wanted a number. So she built a 40-prompt panel across four engines.
Month one: mentioned in 62 of 480 answers. That's 12.9%.
Cited in 19, linked in 11. Perplexity accounted for most of the citations. ChatGPT mentioned the brand fairly often but almost never linked it.
The interesting part was the "cited domain" column. A competitor appeared in 71 answers, and 30 of those citations pointed to one comparison article on an HR blog and two Reddit threads. Iwona's own comparison page, buried three clicks deep, was cited exactly once.
She did two things. Rewrote that comparison page so the first paragraph answered "which HR tool for a 50-person company" with prices and limits, and got the product listed in the two directories the models kept citing. Month three: 97 of 480, or 20.2%.
Did her changes cause the lift? Partly, probably. Engines also changed their retrieval in that window, and I can't separate the two cleanly. What I can say is that the competitor's share stayed flat while hers moved, which is the closest thing to a control you get here.
AI referral traffic in GA4: what you can see
GA4 doesn't have an AI channel by default. Traffic from ChatGPT, Perplexity and the rest lands in Referral, Unassigned or Direct depending on how it arrives. You fix the first two with a custom channel group. The third you can only estimate.
To build the channel, go to Admin, Data display, Channel groups, and create a new group (copy the default one so you keep the standard channels). Add a channel called "AI assistants" with the condition Source matches regex:
^(.*\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|gemini\.google\.com|claude\.ai|copilot\.microsoft\.com)$
Then drag "AI assistants" above Referral. Order matters: GA4 assigns a session to the first channel whose rule matches, so if Referral sits higher, it swallows your AI traffic first. Custom channel groups apply to historical data too, so you'll see past months straight away.
One quirk worth knowing. ChatGPT appends utm_source=chatgpt.com to links it shows in search results, with no utm_medium. In the properties I check, that traffic shows up as chatgpt.com / (not set) and falls into Unassigned under the default grouping. That's the same mechanism I describe in unassigned traffic in GA4.
A Source-based rule catches it anyway. Good.
What the channel won't catch:
- App traffic. Clicks from the ChatGPT desktop and mobile apps frequently arrive with no referrer at all.
- Copied URLs. Someone reads an answer, copies your domain, pastes it into a new tab. Direct.
- AI Overviews. Clicks from Google's AI answers come in as
google / organic, indistinguishable from a normal search click. Search Console doesn't split them out either.
So a large share of AI-driven visits ends up in Direct / None. You can't recover it, but you can watch it.
Jakub's 38 sessions that were actually 200
Jakub runs a small B2B consultancy. His new AI channel in GA4 showed 38 sessions a month from chatgpt.com and perplexity.ai. Not worth a strategy, he figured. Wrong.
Then he looked at Direct, filtered to landing pages. One deep page, a pricing comparison for ERP implementation, went from about 40 Direct sessions a month to 210 over the same quarter that his prompt panel showed it being cited. Nobody bookmarks a deep comparison page 170 extra times. Those were AI readers who arrived without a referrer.
The third signal came from sales. He added "ChatGPT / AI assistant" as an option to the "how did you hear about us" field on his contact form. 11 leads picked it in the first quarter. Self-reported attribution is messy, but it's the only number here that's tied to revenue.
None of the three numbers is the truth on its own. Together they tell a consistent story, and that's the standard I'd hold this channel to.
Server logs: which AI crawlers actually visit
GA4 can't see bots, because they don't run JavaScript. Your server logs can. This is the most honest data you have about whether AI systems read your site at all.
| User agent | Operator | What it means |
|---|---|---|
GPTBot |
OpenAI | Crawling for model training |
OAI-SearchBot |
OpenAI | Building the ChatGPT search index |
ChatGPT-User |
OpenAI | Fetching a page because a user asked something |
ClaudeBot |
Anthropic | Crawling for training |
Claude-User |
Anthropic | Fetching on a user's request |
PerplexityBot |
Perplexity | Building Perplexity's index |
Perplexity-User |
Perplexity | Fetching on a user's request |
A rough count per agent per month takes one command on a standard access log:
grep -oE "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|PerplexityBot|Perplexity-User" access.log | sort | uniq -c
The user-triggered agents are the interesting ones. A ChatGPT-User hit on your pricing page means a person asked a question and the model went to your page for the answer. That's demand. Measured, today, without guessing.
User agents can be spoofed, so for anything you report upward, check the IPs against the ranges the vendors publish.
Note what's missing: Google-Extended. It's a robots.txt token that controls whether Google uses your content for Gemini training, not a separate crawler. You'll never see it in logs. AI Overviews are fed by normal Googlebot crawling.
What actually improves AI search visibility
I'll be blunt: nobody can guarantee you a citation in ChatGPT, and I wouldn't pay anyone who claims they can. You can only make your pages easier to pick. In order of return, here's what I'd do:
-
Let the crawlers in. Check
robots.txtfor blocks onOAI-SearchBot,PerplexityBotand friends. You can block training crawlers and still allow search crawlers. They're separate user agents. -
Answer first. The first two sentences of a page should answer the question it targets. I covered the reasoning in LLM SEO: what it is.
-
Replace adjectives with facts. Prices, limits, dates, version numbers. Models quote checkable claims and skip "leading solution".
-
Get mentioned where models already look. Directories, review sites, comparison articles, Reddit threads. Iwona's panel showed this better than any theory: the citations went to third-party pages.
-
Keep your entity consistent. Same company name, same one-line description, same founder name across your site, LinkedIn, directories and your
Organizationschema withsameAslinks. -
Then the structural extras. Markdown versions of key pages and an
llms.txtfile are cheap. The llms.txt generator guide takes 10 minutes. Just don't expect them to move the panel alone.
Re-run the panel a month after each change, and change one thing at a time where you can.
A one-page monthly AI visibility report
Everything above fits on one page. This is the format I use:
| Metric | Source | Frequency |
|---|---|---|
| Share of answer (mentions / answers) | Prompt panel | Monthly |
| Citation rate and linked citations | Prompt panel | Monthly |
| Top competitor and top third-party cited domains | Prompt panel | Monthly |
| AI assistants channel: sessions, key events, revenue | GA4 custom channel group | Monthly |
| Direct sessions to pages the panel shows as cited | GA4 landing page report | Monthly |
| Crawler hits by user agent | Server logs | Monthly |
| Self-reported "found via AI" leads | CRM or form field | Quarterly |
Seven rows. One page. If a tool gives you a single "AI visibility score" instead of these, ask what it's made of.
Frequently asked questions
What is AI search visibility? It's how often and how prominently your brand appears in answers from AI assistants like ChatGPT, Perplexity, Gemini and Google AI Overviews. It covers mentions of your brand, citations of your pages as sources, and clickable links to your site.
How do I measure share of answer? Run a fixed set of 30 to 50 real customer prompts every month across the same engines, 3 times each in a clean session. Divide the answers that mention your brand by the total number of answers. Keep the prompts identical or the trend is meaningless.
How do I see ChatGPT traffic in GA4? Create a custom channel group in Admin, Data display, Channel groups, with an "AI assistants" channel based on a Source regex for chatgpt.com, perplexity.ai, gemini.google.com and similar. Place it above Referral. Expect it to undercount, since app clicks and copied links arrive as Direct.
Why does AI traffic show up as Direct in GA4? Because the visit carries no referrer. AI apps frequently strip it, users copy URLs from answers, and Google AI Overviews clicks look like normal organic search. Watch Direct sessions to deep pages that your prompt panel shows being cited.
Can I improve my brand's visibility in ChatGPT? You can make your pages easier to pick, not force a citation. Allow AI search crawlers, answer questions in the first sentences, use checkable facts, and get mentioned on third-party sites the models already cite. Anyone guaranteeing a placement is guessing.
Does llms.txt improve AI search visibility? There's no public evidence that it does, and no major provider has committed to reading it. It's cheap to add, so I add it, but I put it last on the list after crawler access and page content.
Next steps
Start with the panel. Forty prompts, four engines, three runs, one spreadsheet. It's the only instrument that measures the thing you actually care about, and the first month gives you a baseline you can't get any other way.
Then fix the measurement in GA4, so you can see what the AI channel is worth in revenue rather than guessing.
If you'd rather have that set up and maintained for you, including separating agent traffic from humans, that's my AI traffic measurement service.
If you want to see what models can actually read on your site, AI Visibility crawls your pages and shows the gaps. Neither one promises you a ranking. Be wary of anyone who does.
Sources and further reading - Overview of OpenAI crawlers (OpenAI) - AI features and your website (Google Search Central) - Overview of Google crawlers and user-agent tokens (Google Search Central) - GA4 default channel group definitions (Google)
Do you know how much of your traffic already comes from AI answers?
I set up a GA4 channel for ChatGPT, Perplexity, Gemini and Claude traffic, separate agents from humans, and report the channel's share of revenue. Measurement only, no promises about rankings.
See the AI traffic service