The AI Visibility Client Report, and a Template You Can Copy
A client AI-visibility report has settled into ten sections, and the full template is below to copy. Templates are not scarce; a template that encodes how the numbers behave is. Rules of thumb circulate for how big a move has to be before it counts. Here is one with a method: 14.5 points.
A client AI-visibility report has settled into a method block and ten sections: a summary, the question set, visibility and position, a per-engine breakdown, share of voice, a source map, what the answers actually said, AI referral traffic, the work you shipped, and what comes next. The full template is below, free to copy.
Templates are not scarce. What is scarce is a template that encodes how the numbers behave. The free ones tend to be structurally thin and silent on method, and the writing that takes measurement seriously tends to arrive as an essay with no template attached. This is both halves: the skeleton, and the five rules that stop each section promising more than the data supports.
One of those rules carries a number worth the whole post. Rules of thumb circulate for how big a move has to be before it counts, mostly as received wisdom. Here is one with a sample size and a method behind it: 14.5 points.
The Template
Plain text on purpose, so it pastes into a doc, a deck, or whatever your agency already sends. Square brackets are the fields you fill.
AI SEARCH VISIBILITY REPORT
Client: [brand] Period: [start] to [end]
METHOD (fill this in first, the rest is unreadable without it)
Engines queried: [list] Questions tracked: [n]
Runs completed in period: [n]
Engines that failed to answer: [list] <- not a zero, an absence
1. SUMMARY
Visibility this period: [x]% (range [low] to [high] across [n] runs)
Change vs last period: [+/-x] pts Noise floor: [n] pts
Verdict: [moved / held / no detectable change]
Two wins: 1. [win] 2. [win]
One risk: [risk]
2. WHAT WE ASKED
[n] buyer questions, unchanged since [date].
Added this period: [n] Removed: [n]
Awareness [n] · Consideration [n] · Comparison [n] · Decision [n]
The question set is the sample. Changing it changes the number.
3. VISIBILITY AND POSITION
Mentioned in [n] of [n] answers [x]%
Average position when mentioned [n]
Answers naming a competitor but not us [n]
4. BY ENGINE (never collapsed into one figure)
Engine | Visibility | Position | Change | Clears noise?
-------------|------------|----------|----------|--------------
[engine] | [x]% | [n] | [+/-x] | [yes / no]
5. SHARE OF VOICE
Against the competitors this client named, not every name detected.
[brand] [x]% [competitor] [x]% [competitor] [x]%
Denominator: our mentions plus qualified competitor mentions.
6. WHERE THE ANSWERS CAME FROM
Owned (client domain) [x]% of citations
Earned (everywhere else) [x]%
Top earned sources: 1. [source] 2. [source] 3. [source]
7. WHAT THE ANSWERS ACTUALLY SAID
One verbatim answer, quoted, with the engine and the date.
"[quote]"
Sentiment: positive [n] · neutral [n] · negative [n]
Anything factually wrong about the client: [note]
8. TRAFFIC FROM AI ASSISTANTS
Sessions [n] Change [+/-x]%
Source: the client's own analytics, not our tracking.
9. WHAT WE SHIPPED THIS PERIOD
Work | Where it landed | Shipped | Runs observed so far
-------------|-----------------|---------|---------------------
[work] | [placement] | [date] | [n]
10. WHAT WE ARE DOING NEXT
Action | Metric it should move | Runs to a verdict | Status
--------------|-----------------------|-------------------|--------
[action] | [metric] | [n] | [status]
What did NOT move, and why that is expected: [note]What Each Section Is For
Lead with the summary and the actions, the two sections a busy client actually reads, and put the method and the long tables behind them. Each row below is a section, what it answers for the client, and its tier: Primary (the decisions ride on it), Supporting (context that explains the primary numbers), and Context (method the client needs before trusting the rest).
| Section | What it answers for the client | Tier |
|---|---|---|
| Method | How many runs the headline rests on, and which engines failed to answer. An engine that did not respond is an absence, never a zero. | Context |
| 1. Summary | One headline figure with its range, the direction since last cycle, two wins and one risk. | Primary |
| 2. What we asked | The fixed set of buyer questions tracked. This is the sample, and the client should see when it changes. | Context |
| 3. Visibility and position | How often the brand is named, and where in the answer it lands when it is. | Primary |
| 4. By engine | The same numbers as separate rows per engine, never averaged into one. | Primary |
| 5. Share of voice | Mention rate against the specific competitors the client agreed to. | Primary |
| 6. Where the answers came from | Which pages the engines cited, split owned versus earned. The bridge to action. | Supporting |
| 7. What the answers said | A verbatim answer the client can read, plus sentiment and anything factually wrong. | Supporting |
| 8. Traffic from AI assistants | Sessions arriving from AI assistants, from the client's analytics. The closest thing to a business outcome. | Supporting |
| 9. What we shipped | The work done this period and how many runs have observed it yet. This is the section that justifies the invoice. | Primary |
| 10. What we are doing next | Three to five prioritized moves, each tied to a metric above and to a number of runs before a verdict. | Primary |
Rule 1: Report Every Engine Separately
A single blended visibility number destroys the thing the client is paying you to find. Engines do not read the same web. Asked the same buyer questions inside the same run, Reddit was 17.87% of ChatGPT's citations and 3.43% of Gemini's, and corporate pages ran from 62.4% of ChatGPT's citations to 84.6% of Gemini's.
Averaged into one figure, that spread disappears and so does the instruction it contains. A brand losing badly on one engine while holding on two others reads as a mild dip, and the work that would fix it never gets commissioned. Give each engine its own row, always, even when the client asks for one number. Especially then.
Rule 2: Report a Range, and Know Your Noise Floor
That a single reading is unreliable is not a new argument. Working across 815,000 prompt-page pairs, Kevin Indig found that after running the same ChatGPT prompt three times, only 2.2% of citations remain. A statistical framework published in March 2026 makes the same case formally, arguing that citation visibility should be treated as a sample estimator rather than a fixed value. It measures citation share on three product topics rather than a brand's visibility run to run, so it supports the principle, not our figure.
What has been missing is the number an agency can actually put in a report. Across 81 brands and 851 completed runs, with nothing shipped between them, a brand's visibility score moves up to 14.5 points run to run at the 95th percentile. One engine on its own moves up to 20.0 points, and a single category up to 27.3. The narrower the slice you report, the noisier it is, which is the opposite of what most people assume.
The practical consequence is blunt. An agency working to a rule of thumb well under that figure will present a ten point move as a result, when on this measurement it is inside the noise. Print the range and the floor beside the headline, and say which slice the floor belongs to. It costs one line, and it is the line that survives a skeptical client.
Rule 3: Split Owned From Earned
This one is table stakes rather than news. Most serious reporting already tags a citation as the client's own or somebody else's, and if yours does not, that is the cheapest upgrade available. What the split is worth depends on the ratio you put next to it. Across 102 brands, 2.9% of AI citations pointed at the brand's own domain.
That number reframes the engagement. If the client believes the work is on their own site, every month spent on placements, listings and comparison pages looks like a detour. Show the two percentages side by side and the earned column argues for you.
Rule 4: Two Runs Before You Call a Win
Careful practitioners already say count a win only when it shows up twice. Here is what it costs when you do not. Measured over the same 81 brands, a newly appearing mention survives to the next run only 54.3% of the time, while one already seen twice survives 96.1% of the time. A win claimed on a single sighting has close to a one in two chance of being gone by the next report, and you will be the one explaining it.
So the actions table carries a runs to a verdict column rather than a due date. Two runs for a provisional read, three or four before an absence of movement means anything. Content work is slower still: in one published study, 81 pages queried daily for a month showed ChatGPT citations still climbing at day 30. Calling a content failure at two weeks systematically under-reads the work you did.
Rule 5: Say What Did Not Move
This is the rule nobody else requires. Plenty of guidance warns against narrating flat numbers as progress, and some templates have a section for declines, but a standing line for the things that simply have not happened yet is missing from every template we looked at.
It is the hardest line to write and the one that keeps clients. Most cycles contain something shipped that has not surfaced. Naming it, with the runs still to go, converts a silence the client would otherwise fill with doubt into a scheduled checkpoint. It also protects you from the opposite failure: once the noise floor is on the page, a two point rise is visibly not a result, so you are never in the position of having celebrated it last month and having to explain its disappearance this month.
How Often to Send It
Monthly, in almost every case, for reasons of arithmetic rather than preference. Report faster than you measure and most of what you print is the noise above. Report much slower and you lose the ability to attribute a change to the work that caused it.
Weekly measurement gives a monthly report four runs, which is enough for a range in section 1 and enough to clear the two-run bar in section 10. That is the shape the template assumes. If your platform measures less often than monthly, put that in the method block, because the client is entitled to know how many readings the headline rests on.
Before You Send It
Nine checks. Each one is a report we have watched go wrong.
- The method block states the run count, and any engine that failed to answer is listed as an absence rather than counted as a zero.
- Every engine has its own row, and no blended figure appears anywhere except beside its range.
- The headline carries a range and the noise floor for the slice it describes.
- Every change is marked as clearing the floor or not, and nothing inside it is described as a result.
- The question set is the one that ran. If you added or removed questions, that is stated, because it moves the number on its own.
- Share of voice names the competitors the client agreed to, not every brand the engines mentioned.
- Section 9 lists the work shipped and how many runs have observed it. A retainer report without a work log is a data dump.
- Every action ties to one metric above it and carries a runs-to-verdict number.
- The what-did-not-move line is filled in. If it is genuinely empty, say that rather than deleting the line.
If You Would Rather Not Assemble It by Hand
The template works with any platform, and with a spreadsheet if that is what you have. Ranqo produces most of it directly: agency plans export white-label PDF reports, plus Excel and CSV for the tables, across a portfolio of client brands under one login. Per-engine rows, the source map and the actions with their measurement windows come out of the product rather than out of your Monday.
Two things it is not. There is no reseller portal and no client logins, so the report is what your client sees, not a dashboard you hand them. And choosing the platform that produces the report is a separate decision from designing the report: the platform buyer's guide covers that, and the portfolio playbook covers running the service across a book of clients.
Stop assembling the report by hand
Ranqo tracks a fixed question set per client across the engines, keeps every figure per engine rather than blended, and exports a white-label PDF plus Excel and CSV for a whole book of brands under one login. The measurement windows in section 10 come out of the product rather than out of your Monday.
See how agencies run thisWritten by
Nisha Kumari
Nisha Kumari is Co-Founder at Ranqo, where she leads growth strategy and client acquisition. With a background in digital marketing and financial management, she specializes in SEO, Generative Engine Optimization, and helping brands build visibility across AI platforms.
Share this article
Related articles
White-Label AI Visibility: What Agencies Should Look For in a Client-Reporting Platform
If your agency reports AI-search visibility to clients, you are choosing a platform, not a report format. Five things separate a platform worth buying: it white-labels the output, holds your whole book of brands, reports per engine with a range, ties every metric to work you sell, and states what it can't measure. Here's the buyer's guide, with data from 102,025 AI responses.
Your AI Visibility Score Moves 15 Points for No Reason
We measured what an AI visibility score does when nothing happens. Between consecutive runs, with no fix shipped, the overall score moves up to 14.5 points and a single category 27.3. The narrower the slice, the noisier it gets, which is the opposite of what everyone assumes. Most reported wins in this category are sampling variance.
AI Visibility for Agencies: The Client-Portfolio Playbook
AI assistants are where buyers research now, which makes AI visibility a service your clients need and most agencies don't offer yet. The good news: the work that moves it — earned coverage, listings, comparisons — is what agencies already do best. Across 102 brands, only 2.9% of AI citations went to a brand's own site. Here's how to run it across a client portfolio.