Skip to content

AI Visibility

What Should a Monthly or Quarterly AI Visibility Report Include?

A copyable AI visibility report template for agencies and marketing leads: a summary line, a methods box, KPIs with their definitions, prompt-by-engine evidence, five gap types, owned actions, and separate monthly and quarterly versions. Works without any tool account.

A monthly AI visibility report should answer three questions for a client: did the engines name us more or less than last month, why do we think so, and what are we doing about it. In practice that's eight parts. A header with a one-sentence summary, a short methods box, a KPI table with definitions, a per-engine breakdown, prompt-by-engine evidence with the cited pages, a gap classification, three to five actions with owners and dates, and a log of any changes to the prompt set. The quarterly version adds a trend over unchanged prompts and a review of the prompts and competitors themselves.

The full template is below as a Markdown block you can copy into a doc, a Notion page or a client email. It doesn't need a CueScout account or anyone else's.

Why the template is built on answers

The template that ranks for this query right now, webtrek's AI visibility reporting template, is organised around pages and checker scores: a visibility score, an interpretation score, schema health. It's a reasonable structure if you're auditing a site, and it has one rule I'd keep, which is to write "not tracked this period" rather than guess a number.

I went a different way because of who reads these reports. A marketing lead forwarding it to a CEO gets asked "says who?", and a score has no answer to that. A quoted answer does: here is what ChatGPT said on the 3rd when asked this, here are the four pages it cited, two of them a competitor's. So this template puts the answer and its sources at the centre and treats every number as a summary of answers the reader could go and look at.

The template

Copy everything inside the block. Square brackets are placeholders, and none of the brackets stand for real data.

# AI visibility report: [Brand]

Period: [YYYY-MM-DD] to [YYYY-MM-DD]
Type: [Monthly / Quarterly]
Prepared by: [Name], [Team or agency]
Next review: [YYYY-MM-DD]

## Summary

[One sentence: what moved, on which engine, and the one action that matters most
next period. Example shape: "[Brand] was named in more [engine] answers on
comparison prompts and fewer on [engine]; next period we fix [page]."]

## How this was measured

- Prompts: [n] tracked ([n] core, [n] competitor, [n] branded, [n] other)
- Trend figures use the [n] core prompts present in both periods
- Engines: [list the engines actually checked]
- Collection: [daily / weekly / by hand], [n] answers per prompt per engine this period
- Prompt set changes this period: [n] added, [n] paused (see change log)
- Not measured here: website traffic, clicks, how often people ask these
  prompts, revenue. Changes below are observed changes in AI answers, not
  proof that any action caused them.

## KPIs (core prompts only)

| Metric | Definition | Last period | This period | Change |
|---|---|---|---|---|
| Visibility | Share of answers that name [Brand] | [x]% | [x]% | [+/- x] pts |
| Share of voice | [Write your tool's definition here] | [x]% | [x]% | [+/- x] pts |
| Cited rate | Share of answers citing a [Brand] URL | [x]% | [x]% | [+/- x] pts |
| [Brand] pages cited | Distinct [Brand] URLs cited at least once | [n] | [n] | [+/- n] |
| Most-named competitor | Rival named in the most answers, with its visibility | [Rival], [x]% | [Rival], [x]% | |
| Average position | Where [Brand] sits when an answer ranks a list | [x] | [x] | |
| Recommended | Share of answers that advise [Brand], not just list it | [x]% or "not tracked" | | |

Branded prompts (reported separately): [Brand] named in [x] of [n] answers.
Facts checked: pricing [correct / outdated], engines or features [correct / outdated].

## By engine

| Engine | Visibility | Cited rate | Named first most often | Change |
|---|---|---|---|---|
| [Engine] | [x]% | [x]% | [Brand or rival] | [+/- x] pts |

## Evidence: prompt by engine

Include every core prompt that changed status, plus the [n] most important ones that held.

| ID | Prompt | Engine | [Brand] in answer? | Cited pages | What changed |
|---|---|---|---|---|---|
| [C01] | [prompt text] | [Engine] | [Named, 2nd of 5 / Not named] | [url], [url] | [Gained / Lost / Held / New] |

Quoted answer for each lost prompt:
> [Prompt ID, engine, date]: "[the answer, word for word, or the relevant part]"

## Gaps

| Type | Prompt IDs | Page the engine read | Who can change it |
|---|---|---|---|
| Owned page | [IDs] | [our URL, or "no page answers this"] | [Brand] |
| Competitor-owned | [IDs] | [rival URL] | [Brand] answers it on its own site |
| Third-party | [IDs] | [roundup / review site / directory URL] | Site owner or editor |
| UGC | [IDs] | [forum or Q&A thread URL] | Nobody directly |
| Technical | [IDs] | [our URL the engine could not read] | [Brand] dev team |

## Actions (3 to 5)

| # | Action | Gap type | Owner | Status | Evidence | Next review |
|---|---|---|---|---|---|---|
| 1 | [One change to one page] | [type] | [Name] | [Not started / In progress / Shipped YYYY-MM-DD / Blocked: reason] | [IDs, engine, cited URL] | [YYYY-MM-DD] |

## Last period's actions

| Action | Shipped | What we observed since | Note |
|---|---|---|---|
| [Action] | [YYYY-MM-DD / not yet] | [e.g. "named in [x] of [n] [engine] answers for [ID], was [x] of [n]"] | Observed, not attributed |

## Prompt set change log

| Date | Change | Reason |
|---|---|---|
| [YYYY-MM-DD] | [Added / paused / promoted] [ID]: [prompt] | [reason] |

For the quarterly report, append this:

## Quarter trend (core prompts present all quarter: [n])

| Metric | [Month 1] | [Month 2] | [Month 3] | Quarter change |
|---|---|---|---|---|
| Visibility | [x]% | [x]% | [x]% | [+/- x] pts |
| Share of voice | [x]% | [x]% | [x]% | [+/- x] pts |
| Cited rate | [x]% | [x]% | [x]% | [+/- x] pts |

## Prompt set review

- Core prompts retired: [n], because [the business question no longer applies]
- Experimental prompts promoted to core: [n]
- Competitor list: [unchanged / added [Rival] because it appeared in [n] answers]

## Shipped this quarter

| Action | Shipped | Answers before | Answers after | Read |
|---|---|---|---|---|
| [Action] | [date] | [x] of [n] | [x] of [n] | [Moved / no change / too early] |

## Next quarter

[Two or three sentences: which gap type to work on and why, using the evidence above.]

Filling in the parts people get wrong

The summary sentence

One sentence, written last, with an engine and a direction in it. "Visibility improved" is not a summary, because the reader can't check it. Something like "named in more ChatGPT answers on comparison prompts, fewer in Perplexity, and the Perplexity drop traces to one roundup that removed us" can be checked against the evidence table, and it tells them where to look.

The methods box

This is the section clients skip and the one that protects you. It says which prompts and engines the numbers come from, how many answers sit behind each figure, and what the report does not measure. When a number moves for a boring reason, such as five prompts added mid-month, the box is where that's already written down.

The line about what isn't measured matters most. Answer tracking records what engines said and which pages they cited. It doesn't see traffic, clicks or how many people ask a prompt, and nobody publishes assistant query volume. If the client wants AI referral traffic too, that comes from their web analytics, goes in its own section with its source named, and shouldn't sit in the same table as the answer metrics.

KPI definitions

Write the definition into the table every time. Share of voice in particular means different things in different tools. In CueScout it's the answers that named you divided by all answers in the window, with each competitor counted the same way on the same answers. Some tools divide your mentions by all brand mentions instead, which gives a different number from the same data. Two reports with different definitions can't be compared, and a client switching agencies will try.

The "Recommended" row is optional. Being named and being recommended aren't the same thing, and some answers name five brands and advise none of them (I wrote about the gap between mentioned and recommended). If your tool doesn't classify that, write "not tracked" and leave it there.

Keep branded prompts out of the KPI table. A prompt with the brand's name in it returns the brand's name far more often, and mixing those in makes every number look better than the market sees it. Report them in their own line, mostly as a fact check on pricing and features.

The evidence table

You don't need every prompt. Include each core prompt whose status changed (gained, lost, new) and a few important ones that held, so the reader sees stability as well as movement. For every loss, quote the answer. It's the single most persuasive thing in the report, and it's often the first time a client has read what an engine says about them.

Cited pages go in by URL. A client can open the URL, and a domain name alone hides which page the engine actually read.

Classifying the gaps

The type of a gap depends on who owns the page the engine built its answer from, because that decides what anyone can do about it.

Gap typeHow you recognise itTypical action
Owned pageThe engine cited your page and still left you out or described you wrong, or no page of yours answers the questionRewrite or add the page
Competitor-ownedA rival's comparison or "alternatives" page was citedPublish a fair comparison on your own site
Third-partyA roundup, review site, directory or publisher articleAsk for inclusion or a correction; roundup placements are often paid
UGCA forum thread, Q&A page or other community postMake sure your own site answers the question the thread asks
TechnicalThe engine couldn't read your page: blocked crawler, script-only content, wrong canonicalFix access first, since nothing else works until it's fixed

Two notes on that table. UGC gaps aren't something to fix by posting in the thread, and I wouldn't put "post a reply" on a client's action list. And technical gaps go first whenever they appear, because a page the engines can't read won't get cited however good it is.

Writing actions a client will act on

Three to five, never more. Each one is a single change to a single page or listing, with a named person as owner (a team name is how actions go unowned), a status from a fixed list, the evidence that justifies it, and the date someone will look again.

The evidence column is what separates an action from a suggestion. "Improve comparison content" will sit in the list for three months. "Rewrite the pricing table on /compare/[rival], cited by ChatGPT for C04 and C11, still lists last year's plans" gets done, because the owner can see the problem without opening a dashboard.

Observed change, not proof

Every report eventually gets the question "did our work cause this?" The honest answer is that you can't know from answer data alone. Engines change their models and what they retrieve, competitors publish too, and the same prompt can come back different on two different days.

So the template reports shipped work and observed change side by side and stops there. The wording matters:

  • Write: "Since the page shipped on [date], ChatGPT named [Brand] in [x] of [n] answers for C04, up from [x] of [n]."
  • Avoid: "The new page increased ChatGPT visibility by [x]%."
  • Avoid: "drove", "resulted in", "thanks to", "because of" when the subject is your own work.

Monthly versus quarterly

The monthly report is short. It covers the core prompts, what changed and the evidence, and where each action stands. Send it on the same day each month, compared with the same day last month, so the windows match. If nothing much changed, say so in the summary and keep the report short; a report padded to look busy trains the client to skim.

The quarterly report is the one where you're allowed to talk about trend, because three months of answers on unchanged prompts is enough to see a direction. It adds four things the monthly doesn't have: the trend table restricted to prompts present all quarter, a review of the prompt set (what was retired, what got promoted, and why), a review of the competitor list, and a look back at every action shipped that quarter with the before and after answers. It ends with a recommendation for the next quarter. That's where the prompt-set rules from how to build a prompt library for buyer journeys earn their keep, since a trend only means something if the prompts behind it held still.

Filling it from CueScout

The template works by hand. If you're filling it from CueScout, this is where each part comes from.

Visibility, share of voice, cited rate and average position come per engine from the Visibility screens, with branded prompts already left out of the rates. The prompts table marks each prompt gained, lost, held or new per engine, and the Changes view compares any two sweep dates and lists every prompt whose verdict moved, with both answers side by side. That's most of the evidence table. Every prompt is checked daily, so each figure rests on a month of answers rather than one screenshot.

The gap types map onto the verdicts in AI citation tracking: "Own it" and "Earn it" are owned-page gaps, "Competitor owned" is the same in both, "Get listed" and "Blocked" cover most third-party pages, and community threads show up as their own page type. Technical gaps come from the GEO audit, which checks whether the engines can read your pages.

Actions live in To-dos, where each one carries its evidence and steps and moves through Suggested, To-do, Done and Dismissed. Marking one done can record the URL you shipped, which fills the "Shipped" column, and whether the answers change afterwards is measured separately on the next sweeps.

For the client copy, the AI visibility audit report is one page per brand with the questions, the answers and their cited pages. A share link is a frozen copy, so the numbers you sent stay the numbers they read, it opens without an account, and it expires after 30 days. Reports are branded CueScout; there's no white-label version. Agencies running several clients can keep each one as its own brand with its own prompts and competitors, up to 10 on Growth, which the agencies page covers.

Paste the Markdown template next to that link and the client gets both: the evidence, and your reading of it.

Frequently asked questions

What metrics belong in an AI visibility report?

Visibility (the share of answers that name the brand), share of voice against named competitors, cited rate and cited pages, the competitors named most, average position where answers rank a list, and, if your tool classifies it, whether answers recommend the brand or only list it. Write each metric's definition into the table, because tools define share of voice differently.

How often should I send an AI visibility report to a client?

Monthly for the short version: what changed, the evidence, and where the actions stand. Quarterly for the longer one, which adds a three-month trend, a review of the prompt set and competitor list, and a look back at shipped work. Weekly is usually too often, because single answers vary and a week rarely has enough of them to separate a move from noise.

Can an AI visibility report show traffic from ChatGPT?

Not from answer tracking. Answer tracking records what the engines said and which pages they cited. Referral visits from AI assistants come from your web analytics, which is a different source with its own gaps. If a client wants both, keep them in separate sections with their sources named, and do not imply one explains the other.

How do I show that our work improved AI visibility?

You can show what you shipped, when, and what the answers looked like before and after. You cannot prove the work caused the change, because engines update, competitors publish and answers vary between runs. Report it as observed change alongside the shipped date, and let the evidence table carry the argument.

Do I need an AI visibility tool to use this template?

No. It works with answers collected by hand in a spreadsheet, as long as you use the same prompts every period, record the cited pages, and say how many answers each figure is based on. A tool mostly saves the collection time and makes daily runs practical.

See whether AI answers name you

CueScout checks your buying questions on ChatGPT, Perplexity, Gemini and Google’s AI answers every day, shows which pages they cite, and turns the gaps into To-dos.