Someone above you has asked how visible the company is in AI search, and they want one number. There isn’t one. What exists is a set of partial measurements, each from a different source with a different blind spot, and none of them observes what happens inside an assistant’s answer. The honest report combines them, states what each one can’t see, and gives answers that vary from run to run as ranges rather than points.
This post sets out that stack in five layers: readiness you measure on your own pages, impressions and citations the engines report, referral traffic, crawler activity, and a manual citation log. It ends with a reporting format that says no more than the data supports. It sits under How to audit a site for AEO and GEO.
What can actually be measured?
Five things can be measured, and each answers a different question. None of them answers “how often do assistants recommend us?” directly.
| Layer | Question it answers | Source | What it can’t see |
|---|---|---|---|
| Readiness | Can our pages be reached, parsed, and lifted? | Your own crawl | Whether anything retrieves them |
| Engine-reported exposure | How often did an engine show or cite our URLs? | Search Console, Bing Webmaster Tools | Other assistants; the answer text; often clicks |
| Referrals | Who arrived from an AI surface? | Web analytics | Visits with no referrer or tag; answers that satisfied without a click |
| Crawler activity | Which AI agents fetched what? | Server or CDN logs | What was done with the fetch |
| Citation sampling | In a fixed set of prompts, how often were we cited? | A manual log | Prompts you didn’t think to ask; variance beyond your sample |
The first layer is the only one you control and the only one that is deterministic. The rest are observations of systems you don’t control. A report that keeps those two kinds apart is one an executive can trust next quarter.
Layer 1: How do you measure readiness?
Measure readiness with the same crawl, the same scope, and the same settings every time, so that a change in the number is a change in the site. Readiness covers access (robots.txt, status codes, rendering), extractability (answer-first passages, real lists and tables), and attribution (bylines, dates, entity markup). It is a property of your pages, so it can be measured exactly, and it can be re-measured after a fix to prove the fix landed. Crawl, fix, re-crawl is the method for that loop, and Building a defensible 0–100 score covers how to turn readiness into a number you can defend.
What readiness does not do is predict citation. A page that is fully reachable and cleanly structured has removed the reasons it couldn’t be used. Whether it is used depends on retrieval, competition, and the question asked. Report readiness as “share of priority pages that pass,” never as a forecast.
Layer 2: What do the engines report?
Two engines now report AI exposure directly, and they measure different things.
Google Search Console has a generative AI performance report, rolled out to all sites as of 31 August 2026. It shows impressions in AI Overviews and AI Mode, by page, country, device, and date (Search Console Help). It reports impressions, which count how often links to your site were shown. That is not the same as being quoted, and Google’s help page lists no clicks or queries in this report. Clicks from AI features are counted in the main Performance report, mixed into the “Web” search type, where Google’s guidance has always placed them (Google Search Central).
Bing Webmaster Tools has an AI Performance section, introduced as a public preview in February 2026, covering “Microsoft Copilot, AI-generated summaries in Bing, and select partner integrations.” It reports total citations, average cited pages per day, page-level citation counts, and grounding queries, which Microsoft describes as “the key phrases the AI used when retrieving content” and notes “represents a sample of overall citation activity” (Bing Webmaster Blog).
Both are first-party and both are the best data available for their own surfaces. Neither says anything about ChatGPT, Claude, or Perplexity, and neither shows the answer your page appeared in. Report them as “exposure on Google’s AI features” and “citations on Microsoft’s AI surfaces,” by name, not as “AI visibility.”
Layer 3: What do referrals tell you?
Referrals tell you who clicked through from an AI surface. Referrals are the closest measure to business value, and they are the most undercounted. OpenAI’s publisher FAQ states that ChatGPT adds utm_source=chatgpt.com to referral links from search results (OpenAI Help Center), so those visits can be segmented in any analytics tool that records campaign parameters. Other assistants identify themselves, if at all, through the referrer header.
Two limits keep this from being a visibility measure. First, a visit that arrives with no referrer and no tag lands in direct traffic, and nothing recovers its source. Second, an answer that resolves the question without a click produces no referral at all. Referral counts are a floor on AI-driven visits, not a measure of exposure. Report them as a trend for the segment you can identify, and say that the segment is incomplete.
Layer 4: What do crawler logs add?
Logs show which AI agents fetched which URLs, and when. That is the only direct evidence that a retrieval crawler such as OAI-SearchBot or PerplexityBot can reach a page and is choosing to. A priority page that no search crawler has fetched in a month has a discovery or access problem, and no amount of content work fixes it. Reading server logs for AI bot traffic covers the method, including how to verify that a user agent is genuine.
Fetches are not citations. A crawler can fetch a page every day and the page can still never appear in an answer. Use logs to confirm access and to spot pages that are never fetched, not as a proxy for visibility.
Layer 5: How do you keep a manual citation log?
Keep a fixed list of prompts, run each one several times on each assistant you care about, and record whether your domain is cited in each run. The fixed list is what makes it a measurement. Changing prompts between months turns a trend into noise.
The repetition is not optional. SparkToro’s January 2026 study ran the same prompts many times across ChatGPT, Claude, and Google’s AI features and found that the lists of brands returned were rarely identical from one run to the next. Its author concluded that how often a brand appears across many runs is a more defensible metric than any single answer or rank (SparkToro). A single run tells you what happened once. What prompt tracking can and can’t tell you covers the method’s limits in full.
A log that works in a spreadsheet:
| Column | Contents |
|---|---|
| A: Prompt | Exact text, never edited once added |
| B: Assistant | One per row; same mode and settings each month |
| C: Month | The sampling period |
| D: Runs | How many times it was run (n) |
| E: Cited | Runs in which your domain appeared as a source (k) |
| F: Low | Lower bound of the range (formula below) |
| G: High | Upper bound |
| H: Cited URL | Which page was cited, when it was |
Why report ranges instead of points?
Report a range because a citation rate from a small number of runs is an estimate with wide uncertainty, and a single percentage hides that. Being cited in 6 of 20 runs is not “30% visibility.” It is a rate somewhere between roughly 15% and 52% at the usual 95% confidence level. That is the Wilson score interval, a standard interval for a proportion. The figures here are illustrative and computed from the formula, not observed data.
In the sheet, with runs in D2 and cited runs in E2, the lower bound is:
=(E2/D2 + 1.96^2/(2*D2) - 1.96*SQRT(E2/D2*(1-E2/D2)/D2 + 1.96^2/(4*D2^2))) / (1 + 1.96^2/D2)
and the upper bound is the same with the minus before 1.96*SQRT changed to a plus. Some illustrative results show why the width matters:
| Cited / runs | Point estimate | 95% range |
|---|---|---|
| 0 / 20 | 0% | 0% – 16% |
| 3 / 10 | 30% | 11% – 60% |
| 6 / 20 | 30% | 15% – 52% |
| 12 / 40 | 30% | 18% – 45% |
| 30 / 100 | 30% | 22% – 40% |
Two consequences follow. A month-on-month move from 6/20 to 9/20 is inside the noise, because the ranges overlap almost entirely, so it is not a trend to report. And “0 of 20” does not mean “never cited.” It means the rate is probably below about one in six. Overlapping ranges are reported as “no detectable change,” which is a finding, not a failure.
How do you put the layers into one report?
Report each layer on its own line, with its source and its blind spot, and resist the urge to blend them into an index. A one-page format:
- Readiness. Share of priority pages passing access and extractability checks, this crawl against last. This is the line you are accountable for. Prioritizing AEO fixes gives the fix list behind it.
- Google AI exposure. Impressions in AI features from Search Console, trend and top pages.
- Microsoft AI citations. Citations and cited pages from Bing Webmaster Tools.
- AI referrals. Identified sessions by source, labelled as a floor.
- Crawler access. Priority pages fetched by each retrieval crawler in the period, plus any never fetched.
- Citation sample. Per prompt group, cited runs over total runs, with the range.
Then add one sentence that most reports leave out: what changed on the site this period, and which layers would be expected to show it. A readiness fix shows in layer 1 immediately and in layers 2 to 6 later or never. Saying so in advance is what keeps the report from claiming credit for noise. What GEOBee measures, and what it deliberately doesn’t draws the same line for a single tool.
GEOBee covers layer 1. It scores every URL for access, extractability, and attribution, saves each crawl to a project, and compares two crawls page by page, so the readiness line comes with a per-page diff behind it (Projects & compare). It does not measure impressions, referrals, or citations, and the report above is built to make that boundary visible rather than hide it.
To produce the readiness line of this report from a crawl you can re-run every month, download GEOBee. The 7-day trial includes compare and export.