An AI answer engine does not publish a result list, and it does not return the same answer twice. Visibility in generative answers is therefore a sampling problem, not a scraping problem, and that changes what any tool can honestly report. SiteRank AI sends a prompt set you approve to a provider API on a schedule you set, records every response with its full conditions, and derives rates from those records.
Every rate comes with the two counts it was built from and a confidence interval at the actual sample size. A bare percentage is never returned by the metrics layer, because a percentage without its denominator is not a measurement.
The unit of record is one observation
The atom of the system is one prompt, sent once, to one model, under recorded conditions, producing one stored response. Without the conditions the response is unusable, because nothing can be compared to it later.
Each observation stores the prompt id and prompt version, the provider, the model requested and the model actually returned, whether web search was enabled, the locale, the timestamp, the call status, the raw response and the extracted citations. Any reported number can be expanded into the specific responses behind it. That is the whole point of storing them.
The six metrics
| Metric | Numerator | Denominator |
|---|---|---|
| Mention rate | Observations where the target was mentioned | Valid observations |
| Citation rate | Observations with at least one citation to any source | Valid observations |
| Domain citation rate | Observations citing the target domain | Valid observations |
| Share of voice | Observations mentioning entity X | Observations mentioning any tracked entity |
| Citation share | Citations to the target domain | Citations to any tracked domain |
| Prompt coverage | Enabled prompts with a valid observation in the window | Currently enabled prompts |
Mentions and citations are different measurements. A mention is your entity appearing in the generated text; a citation is your domain appearing in the response's attribution data. A model can name your company from what it already knows, with no retrieval and no link — a mention with no citation. An answer can cite one of your pages for a fact without naming your organisation at all. Both are recorded, both have their own denominator, and they are never averaged into a single "visibility score". How to measure AI mention rate and citation rate works through each one.
Share of voice is a proportion inside your own prompt set and your own competitor list. Change either and the number changes without anything changing on your site. Both denominators are always shown, and it is not market share. Share of voice in AI search explains why shares can legitimately sum to more than 100%.
Valid observations, and why failures are excluded
Only observations with a status of ok count. Errors, timeouts and blocked responses are excluded from both the numerator and the denominator, and the excluded count is always reported alongside the rate.
The reasoning is simple: a failed API call is not evidence that the model omitted your site. Counting a timeout as a non-mention would bias every rate downward, and the bias would grow exactly when the provider was least reliable. So failures are visible as failures, not folded into the result.
Volatility is a first-class number
The same prompt sent to the same model an hour later can name a different set of companies, because retrieval shifts and generation samples. SiteRank AI measures that disagreement rather than hiding it.
Volatility is the proportion of samples that disagree with the majority answer for the same prompt under an identical condition key — prompt id, prompt version, provider, returned model, web-search flag and locale. The prompt id is part of the key deliberately: pooling different prompts that happen to share a model would measure variation between prompts instead, which is a different quantity. The range is 0 to 0.5, and below two samples it reports that it is not measurable rather than reporting zero.
A mention rate of 40% with near-zero volatility means the model reliably includes you in four prompts out of ten. The same 40% with volatility near its maximum means each answer is close to a coin flip and next week's chart movement will be noise. A tool that reports only the 40% cannot tell those apart.
Wilson intervals, at the sample size you actually have
Every rate is published with a 95% Wilson score interval computed at the real n. The Wilson interval is used rather than the textbook normal approximation because it behaves sensibly at small samples and at proportions near 0 and 1 — which is where visibility data spends most of its time.
At n=1 the interval spans nearly the whole range. That is the honest answer to "what does one API call prove?", and the interface shows it rather than hiding it behind a tidy percentage. It is also why two entities whose intervals overlap are not put in an order.
Discontinuities break the line
A change in the returned model, or in the prompt version, within a series breaks comparability: the instrument changed, so the two halves measure different things. SiteRank AI detects those changes and marks a break in the chart instead of drawing a continuous line through them.
Cost is tracked per call from a per-model price map and is always labelled as an estimate. Grounded web-search surcharges are not modelled, so the estimate is a floor rather than an invoice.
What is observed, and what is not
An API observation is evidence about the API. It is not evidence about what a person sees in a consumer chat product, and this is the most important caveat in the field.
| Dimension | Provider API | Consumer chat product |
|---|---|---|
| Model version | Recorded in the response | Chosen by the product, may change without notice |
| System prompt and orchestration | Minimal, and known | The vendor's, undisclosed and changing |
| Retrieval stack | The documented tool with documented parameters | Product-internal, may differ |
| Personalisation | None or minimal | Memory, history, account context |
| Reproducibility | Recorded conditions, repeatable sampling | Not reproducible |
Every chart in SiteRank AI is labelled as API-observed. The alternative — driving a consumer product with browser automation — produces numbers that feel closer to "what a user sees" while being unrecordable, unreproducible and generally contrary to the provider's terms of service. API-based AI visibility tracking vs ChatGPT sets out the trade-off.
There is a matching limit on the search side: Google reports clicks from its AI features inside the "Web" search type in Search Console rather than as a separate breakout, so no first-party report isolates AI feature performance for anybody.
Bring your own key, and what leaves your site
You supply the provider credential. SiteRank AI ships no keys and proxies nothing through anyone else's infrastructure. Credentials resolve in a fixed order — environment variable, then a wp-config.php constant, then an encrypted admin-configured value — and where the server supplies one, the admin shows it as read-only.
Only the prompt text is sent to the provider. Your posts, pages, corpus, topic clusters and audit findings never leave the install; the audit and clustering engines make no outbound request at all. No credential ever reaches the browser: not in a REST response, not in localised script data, not in a bundle. Logs, stored payloads and the diagnostics export all pass through a single redactor.
Provider calls are budgeted before they are made. A monthly limit in USD and a maximum number of runs per day are both checked before each call, because a limit enforced after a run has already billed your key is a receipt, not a control. OpenAI is the implemented provider; other providers appear in the interface as not yet available rather than as options that quietly do nothing.
What this will never report
- No rank, position or place. There is no ordered list in a generative answer, so there is no position to report. See LLM rank tracking.
- No composite visibility score. Six metrics with six denominators do not average into one number that means anything.
- No causal attribution. Model updates, index changes, competitor activity and sampling noise all move these figures. Association is reported, with volatility beside every delta.
- No modelled or estimated observation. If it was not observed, it is not reported.
Who it is for
Brands, publishers and agencies that need a defensible answer to "are we appearing in AI answers", and who would rather have a small, reproducible measurement than a large, unfalsifiable one. If you will be asked where a number came from, every one here expands into the responses that produced it.
Official sources & further reading
- Web search tool — OpenAI
- Overview of OpenAI crawlers — OpenAI
- AI features and your website — Google Search Central
Related reading
Frequently asked questions
How many samples do I need before a rate means anything?
There is no threshold that turns a proportion into a fact — the interval tells you where you stand. At n=1 the 95% interval spans nearly the whole range, which is the honest reading of a single API call, and it narrows as samples accumulate. A workable approach is to decide how narrow the interval would have to be before you would act differently, then sample until it is that narrow or the budget stops you.
Our mention rate fell this week. Did something change on our site?
Possibly, and this data cannot tell you. Model updates, index changes, competitor activity and ordinary sampling noise all move these figures, which is why the product reports the change with volatility beside it instead of attributing a cause. Three things are worth checking first: whether the returned model or the prompt version changed mid-series, in which case the chart marks a break rather than a trend; whether volatility is high enough that the movement sits inside the noise; and whether the new rate falls outside the previous interval at all.
Should I just ask ChatGPT myself and see what it says?
It is worth doing once, and it is not a measurement. A consumer chat product applies its own model selection, system prompt, orchestration and account personalisation, none of which you can record, so what you saw cannot be reproduced next month or compared with this month. Use it to sanity-check that your prompts sound like questions a real buyer would ask, and use recorded API observations for anything you intend to report to somebody else.
What does monitoring cost to run?
That depends on your prompt count, samples per run and model, and the ceiling is enforced rather than reported afterwards: a monthly limit in USD and a maximum number of runs per day are both checked before each call is made. Per-call cost is derived from a per-model price map and is always labelled an estimate. Grounded web-search surcharges are not modelled, so read the figure as a floor rather than an invoice.
Does it tell me whether we were mentioned favourably?
No. Sentiment is not measured, and a mention counts whether the answer recommends you, lists you neutrally or warns the reader away. That is a deliberate limit: these metrics are built only from facts two people reading the same stored response would agree on. Every observation keeps its raw response, so when a rate moves you can read what was actually said and judge the tone yourself.