For the complete documentation index, see llms.txt. Every page on this site is also served as Markdown: append `.md` to any URL, or send `Accept: text/markdown`.
Attensira Logo
Attensira
GEO Glossary

AI search performance

The practice of measuring how content fares inside AI assistants' answers — what can actually be observed, what has to be sampled, and what cannot be attributed at all.

Karl-Gustav KallasmaaKarl-Gustav Kallasmaa, Founder & CEOLast updated

AI search performance is the practice of measuring how a site's content fares inside the answers AI assistants generate — whether the brand is named, whether its URLs are cited, and where those citations sit. It differs from search reporting in one structural way: there is no impression log to read, so almost all of it has to be sampled.

Three things are observable, and they are not the same thing

Answer content. What a model says when asked a question in your category. Observable only by asking and reading the reply, which makes it a survey.

Citations. Which URLs a model attaches to an answer, and in what order. Observable in the same way, when the surface returns them at all. See source citation.

Crawler access. Which of your pages the named AI agents fetched, and when. This is the only census: every fetch lands in your server logs. See crawling and indexing.

Everything downstream of these — a visit, a signup, revenue — is not observable in this class of measurement at all.

Why there is no impression log

Search reporting works because a search engine records an impression against a query and hands you the aggregate. No assistant publishes an equivalent. Google's AI features guidance is explicit that traffic from AI features is folded into overall search data in Search Console under the Web search type rather than broken out, and that there are no additional requirements to appear in AI Overviews or AI Mode and no special optimisations necessary. So the platform tells you neither which of your clicks came from an AI feature nor how often you appeared without one.

That leaves sampling: put a fixed set of prompts to a fixed set of models on a schedule, store the verbatim answers, and compute rates from them. The verbatim answer matters more than the rate, because it is the evidence — you can read what was actually said, and re-run detection over the same history when the method improves.

The three failure modes of the measurement itself

Non-determinism. The same prompt to the same model can give different answers minutes apart. A rate computed from one draw per prompt per day is a thin sample, and most week-to-week movement in it sits under the noise floor. The defence is depth plus a significance test on deltas, so a movement that cannot be proven is reported as no proven change rather than as a change.

Naive detection. A brand mention is usually found by matching the brand name against the answer text. Attensira's limitations document that its match is case-insensitive substring with no entity resolution and no word-boundary check — so a brand whose name is a common noun carries systematic error that averaging cannot remove. Any tool doing this has the same problem; the difference is whether it says so.

Null read as zero. A model that was never queried, and a model that was queried and did not name you, are different facts. Collapsing them into one chart line invents a rejection that never happened. The same applies to a surface with no reader at all: unmeasured is not zero.

Access is upstream of all of it

Before content quality is worth discussing, the agents have to be able to fetch the page — and they are named separately per job. OpenAI's bots documentation names OAI-SearchBot for surfacing sites in ChatGPT search, ChatGPT-User for user-initiated fetches, GPTBot for training data, and OAI-AdsBot for ad safety checks, and asks that OAI-SearchBot be allowed for sites that want to appear in ChatGPT search answers. Anthropic's crawler documentation names ClaudeBot, Claude-User and Claude-SearchBot with the same split between training and answering.

The practical consequence: a rule written against a wildcard, or a WAF rule matching a vendor's name, opts you out of answers while you believe you only opted out of training. This is the single most common cause of a brand appearing nowhere, and it produces no error anywhere. See robots.txt.

What a defensible report looks like

  1. Every rate carries its denominator. A rate without an n is a claim, not a measurement.
  2. Deltas are gated. Movement that does not clear a significance test is reported as unproven, not drawn as a line.
  3. Unmeasured is drawn as unmeasured. Never as zero.
  4. Verbatim answers are retained. They are the audit trail, and they let detection be re-run over history.
  5. Attribution is not claimed. Presence in answers is reported as presence. Connecting it to revenue is the reader's inference, made with their own analytics, and it should be labelled as such.

For the assistants and agents this is measured across, see AI search.

Frequently asked questions

Is there a Search Console report for AI features?

No. Google includes that traffic in overall search data under the Web search type.

Why must it be sampled?

Because no platform publishes an impression log for answers; the only observation is asking and reading the reply.

Can an answer be attributed to a signup?

No. There is no identity join between a model's answer and a later visit.

What breaks first when a brand appears nowhere?

Access. Search and user-directed agents are named separately from training crawlers, and a blanket block removes retrieval silently.

Frequently Asked Questions about AI search performance

Partly, and not separately. Google states that sites appearing in AI features are included in overall search traffic in Search Console, tracked within the Web search type in the Performance report. There is no distinct AI Overviews or AI Mode breakdown, so a click from an AI feature is not distinguishable from any other Search click in that report.

Because no platform publishes an impression log for answers. The only way to observe what a model says about you is to ask it and read the answer, repeatedly. That makes the measurement a survey with a sample size, not a census — which is why any honest number carries an n.

Because models are not deterministic. The same prompt to the same model can produce different answers minutes apart. A rate built from a single draw per prompt will wobble on its own, which is why sampling depth and a significance test on deltas matter more than the headline figure.

No. There is no identity join between an answer a model gave someone and a person who arrives at your site later. Attensira's published limitations state this directly: it measures what models answer and which pages AI crawlers fetch, not what happened next. Any product claiming that link is inferring it.

Access, before content. Assistants fetch under named user agents — OAI-SearchBot and ChatGPT-User for OpenAI's search and user-directed fetches, Claude-User and Claude-SearchBot for Anthropic's — which are separate from the training crawlers GPTBot and ClaudeBot. A robots.txt or WAF rule written against a wildcard or a vendor name blocks retrieval as a side effect of a training decision, and nothing reports the answers you were excluded from.

Yes, and it is the only part that is a true census rather than a sample. Every fetch by a named AI agent appears in your server logs with its user agent and IP, and Anthropic publishes its crawler IP list at claude.com/crawling/bots.json so the agent string can be verified rather than trusted.
Share this term

Track how your brand shows up in ChatGPT, Claude, and Google AI

Attensira monitors your visibility across AI search platforms so you know exactly when and how you're being recommended.