How we report local AI visibility to clients
The structure of our local AI visibility reports: one row per location per engine, no blended score, then citations, crawler errors and AI-referred visits. Plus how we deliver them with custom reports, scheduled PDFs and Looker Studio.
A local AI visibility report can go wrong in one easy way: it shows a single number. "Your AI visibility is 41." For a business with one location that's merely vague. For a business with eight, it actively hides the problem, because the two locations that are invisible get averaged into the six that are fine.
So our local reports are built around one rule. Every number belongs to a location and an engine, and we never blend them into one figure. This post walks through the structure we use and how we deliver it.
Section one: the location table
The first page is a table with one row per location per engine. For a client with five locations tracked on ChatGPT, Google AI Overviews and Google AI Mode, that's fifteen rows. For each row we show:
- visibility score for the period
- the change against the previous period
- share of voice against the local competitors that come up in that location's answers
- average position in the answer when the client is named
We label each location with how it's measured. Walk-in locations usually sit on a coordinate monitor, where ChatGPT, AI Overviews and AI Mode answer as if asked from the storefront. Service-area towns sit on city monitors. Readers should know which row is which, because a coordinate measurement and a city measurement aren't the same thing. How we choose between them is in how we set up local GEO tracking for a new client.
No blended row at the bottom. When a client asks for "the overall number," we explain why we don't give one, and point them to the location that needs attention instead. That conversation is usually more productive than any average would have been.
Section two: what the answers cited
For each location, we list the domains and pages that answers cited most during the period, and mark which ones include the client and which include competitors. New sources that appeared and sources that dropped away get a line each.
This section is what turns a low score into a reason. If a competitor is being recommended in one town and the answers keep citing a local listing the client isn't on, the report says so. Our method for that is in how we find which local directories AI cites.
Section three: crawler errors on location pages
From Promptwatch's crawler logs, we report AI crawler activity on the client's location pages: which bots fetched them (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot and the rest) and, most of all, which visits ended in errors. Promptwatch verifies those bots by IP, so a spoofed user agent doesn't show up as a real visit.
We keep this section short. If there are no errors, it's one line. If a location page is returning errors to AI crawlers, it goes at the top of the action list, because it's usually a cheap fix and a page that won't load can't be cited.
Section four: AI-referred visits and conversions
The last data section answers the question the client's finance person asks: did any of this bring customers? Promptwatch's visitor analytics, installed through a script, the Google Tag Manager template or the WordPress plugin, shows AI-referred visits by engine and the conversions they led to. We break it down by location page.
We report the numbers as they are, including when they're small. A location with low AI visibility and almost no AI-referred visits is consistent. A location with decent visibility and no visits is a question worth asking: maybe the answers name the client without linking, or link to the homepage instead of the location page.
Section five: what we did and what's next
Every report ends with the fixes made since the last one, each tied to a location, and the plan for the next period. This is short and specific. "Corrected hours on two listings cited in the Northside answers" is useful. "Continued optimisation" isn't.
How we build and deliver it
We run client programs on Promptwatch, and the report is assembled from what's already there rather than copied into slides.
Custom dashboards hold the views for each client. Promptwatch has templates for competitor comparison, topic gaps, AI model breakdown and citations, and we save one dashboard per client report, filtered to the right monitors. The A/B period comparison gives us the change column without a spreadsheet.
Custom reports are available from Professional and on every agency plan. We use them for the parts of the table that need a specific layout.
Scheduled PDF reports send the saved dashboard by email on a set day. For the setup steps, see how to schedule weekly Promptwatch PDF reports for clients. Promptwatch supports white-label branding on PDF exports and schedules, so the report can carry the agency's or the client's branding.
For clients who want a live view, the Looker Studio connector puts Promptwatch data next to GA4 and Search Console in one dashboard. We describe that setup in how to load AI search data in Looker Studio. Excel and CSV exports with a column picker cover anyone who wants the raw rows.
Cadence
For most local clients, a scheduled PDF goes out weekly and we review it together monthly. The weekly edition is for spotting factual errors and crawler problems quickly. The monthly call is for trends, which need more than a week of daily data to mean anything.
We don't report anything in the first two weeks of a new program. That baseline period is what later changes get compared against, and a report built on three days of data would only show noise.
If your current AI visibility report gives you one number for every location, send us the location list at hello@1001seomedia.com and we'll show you what the split looks like.