A client forwards you a screenshot. They asked ChatGPT "best commercial roofing company in Leeds" and got five names. Theirs wasn't one of them. The email subject line is "Is this a problem?"
It's a fair question and it deserves a real answer, not a shrug about how LLMs hallucinate. Here's the short version: AI visibility tracking is the practice of systematically checking whether assistants like ChatGPT, Perplexity, Gemini and Copilot mention or cite your client when someone asks a buying-intent question — and measuring that as a rate over time, not as a single screenshot.
This article covers how to build the prompt set, what to measure, how often to run it, and what to actually tell the client. No speculation about where AI search is heading in 2030.
Why AI visibility isn't rank tracking
The instinct is to treat this like a new rank tracker. It isn't, and if you report it that way you'll get burned.
Four structural differences matter:
- Non-determinism. Run the same prompt five times and you can get three different sets of brands. We've seen a client appear in 4 of 5 runs one week and 1 of 5 the next with no site changes at all.
- Personalisation. Chat history, memory and location skew results. If you test logged into your own account that's used the client's name 200 times, your results are worthless.
- No volume data. There's no Keyword Planner for prompts. You don't know if 10 people or 10,000 asked that question last month.
- Model churn. A model update can reshuffle every answer overnight. That's not a ranking drop you can diagnose in Search Console.
So the unit of measurement is a rate. Out of 40 prompts run 3 times each (120 responses), the client was named in 31 — a 26% mention rate. That number means something month over month. A single screenshot doesn't.
Step 1: Build a prompt set that reflects real buying behaviour
This is 80% of the work and most agencies rush it. You want 30-60 prompts, written the way a human types into a chat box — conversational, context-heavy, often with constraints.
Split them into four buckets:
Category prompts (unbranded discovery)
"Who are the best B2B SaaS SEO agencies in the UK?" / "I need a physio in Manchester who deals with running injuries." These are the ones clients care about most and the hardest to win.
Comparison prompts
"Is [client] better than [competitor] for enterprise accounts?" / "[Client] vs [competitor] pricing." These test whether the assistant has any structured understanding of the brand's positioning.
Problem-first prompts
"My Shopify store's product pages aren't indexing, who can fix that?" The user never names a category. These reveal whether the client is associated with a problem, not just a label.
Branded prompts
"What does [client] do?" / "Is [client] legit?" / "What do people say about [client]?" You're checking for accuracy here, not presence. We've found assistants confidently stating wrong pricing tiers, defunct office locations, and in one case attributing a competitor's case study to the client. That's a reputation issue, not an SEO one, and clients want to know immediately.
Pull the prompt language from somewhere real: Search Console queries, sales call recordings, the client's live chat transcripts, the "People also ask" boxes for their head terms. Prompts invented in a meeting room sound like prompts invented in a meeting room.
Step 2: Run the test properly
Rules that keep the data honest:
- Logged out or temporary chat, memory off, one prompt per fresh session. No follow-ups in the same thread.
- Three runs per prompt minimum. Fewer and your mention rate is noise.
- Same day of the month, same model version, and log the model string (e.g. GPT-5, Gemini 2.5 Pro). When results swing, the model is the first suspect.
- Set location deliberately for local clients. A VPN exit node in the wrong city invalidates a local services test entirely.
- Record the sources cited, not just the brand names. This is the most actionable data you'll collect.
For a 40-prompt set across three assistants at three runs each, that's 360 responses. Manually it's roughly 4-6 hours. That's a real line item — price it, scope it, and track it against the retainer like any other recurring deliverable rather than absorbing it as "research time."
Step 3: What to measure
Four numbers, consistently:
- Mention rate: % of responses where the brand is named. Baseline for most mid-market clients we've tested sits between 0% and 15% on unbranded category prompts.
- Citation rate: % of responses where the client's own domain appears as a linked source. Usually much lower than mention rate — brands get named without being cited constantly.
- Share of voice: mentions for the client divided by total mentions across a fixed set of 3-5 competitors. This is the number that survives model updates, because a model change usually moves everyone.
- Position in list: if the answer gives five options, being first matters. Track average position when mentioned.
Then add the demand-side signal: GA4 referral traffic from chatgpt.com, perplexity.ai, gemini.google.com and copilot.microsoft.com. Build a channel group for it. The volumes are small — for most of our clients it's 0.5-3% of sessions — but conversion rate is often 2-4x organic because the user arrives pre-qualified. That stat alone usually ends the "does this matter" debate.
Step 4: Figure out what the assistant is reading
This is where AI visibility tracking becomes actionable. Log every URL cited across your 360 responses and tally the domains.
What you'll typically find, in rough order of frequency: industry listicles and "top 10" roundups, review platforms (G2, Clutch, Trustpilot, Capterra), Reddit threads, trade publications, Wikipedia, and then — distantly — brand websites.
That tally is your roadmap. If "best [category] agencies in [city]" pulls from the same four roundup articles every single time, your job isn't to tweak the client's homepage. It's to get them into those four articles. That's outreach, review generation and PR, not technical SEO.
On-site work still matters, but in a narrower way than most people claim:
- Clear, extractable entity information — what the company does, who it serves, where, at what price — in plain prose, not just in a hero image.
- Organisation and Product/Service schema that's consistent with the on-page copy.
- Comparison and alternatives pages, because assistants lean heavily on them for "X vs Y" prompts.
- Content that answers the question directly in the first 50 words. The same discipline that wins featured snippets. If your content library has pages quietly losing relevance, refreshing decaying pages does double duty here.
One caveat worth stating in client meetings: crawler access. If the client's firewall or robots.txt blocks GPTBot, OAI-SearchBot, PerplexityBot or Google-Extended, they've opted out of parts of this entirely. Check it before you build a strategy around it. We've found blocked bots on two clients who had no idea their dev team had added the rules.

Nick Quirk

