How to track your brand in AI answers (step by step)
by John LeeBuilding peekr in Seoul, measuring how AI search engines name brands. Previously co-founded vlogr and shipped iOS apps (2018–2021).
To track brand mentions in AI search, ask a fixed list of buyer questions, ask each one several times per engine, store every raw answer, and count every brand named — not just yours. Report a rate with its denominator, split by question type and by engine, and never merge answers taken with web search on and off.
That is the whole method. The rest of this post is what it produced on one real brand, and the four places the number lies to you if you skip a step.
Key takeaways
- A headline appearance rate is an artifact of your question list. The same 336 answers gave 50.0% overall — and 100% on branded questions, 57.1% on commercial, 0.0% on unbranded ◐. The 50% was carried entirely by questions that already said the brand's name.
- Your name matcher is part of the instrument. Re-parsing the identical 336 answers with a variant-aware matcher added +12 CapCut mentions and +8 Opus Clip, and +0 to the measured brand — moving its share of voice down, from 30.4% to 29.3% ◐.
- "Mentioned" discards most of what you saw. Average position 1.28 counts only the answers where the brand appeared; MRR 0.362 keeps the absences. 29% of its mentions had no position at all, because the model answered in prose ◐.
- One sample is not a measurement. The 95% interval on a brand-detection rate is ±72.4 points at one sample, ±15.8 at seven (Schulte et al. 2026, grade ○▲).
- Check that anything was retrieved before trusting a dashboard built on it. Every one of our first 340 stored responses carried zero citations ◐ — all HTTP 200, no error logged anywhere. Turning search on raised cost per response about 11-fold ◐.
- Count the other names, not just yours. A single AI Overview in the same category recommended Vizard, a name that was not on the list we handed the parser and therefore could not have been counted at any sample size ◐.
How do I track brand mentions in AI search?
Six steps. Write 10-12 questions a buyer would type, tag each as branded, commercial or unbranded, send each to each engine at least five times in a fresh session, store the raw response, count every brand named with its position, and report a rate per question type per engine. A single answer is a screenshot, not a measurement.
What we ran
| Brand | One video-editing SaaS, one category |
| Questions | 24, mixed types |
| Engines | 2 — one OpenAI model, one Google Gemini model, both via API |
| Samples | 7 per question per engine |
| Stored answers | 336 (24 x 2 x 7) |
| Window | July 2026 |
| Web search | Off — see the section on surfaces below |
Marks: ◐ our own first-party measurement, one brand, no control group, and we sell a product in this space. ○▲ preprint with a statistical result, vendor-affiliated authors. △▲ industry study, no control, published by people selling related products.
The six metrics, defined
Every number below this line is one of six things. Vendors in this category use these words differently, and two of them are routinely reported without their denominator, so here is exactly what each one means in this post.
Appearance rate is the share of stored answers in which the brand was named, reported with its denominator and split by question type. Ours: 168 of 336, so 50.0% — and 0.0% on the unbranded subset. An appearance rate without a question-type split is not comparable to any other appearance rate.
Average position is the mean rank of the brand across only the answers where it appeared. Ours: 1.28. It silently drops every answer in which the brand was absent, which is why it reads far better than the same brand's other metrics.
Mean reciprocal rank (MRR) is the average of 1/rank across all answers, scoring 0 when the brand is absent. Ours: 0.362. It keeps the failures in the denominator. When average position and MRR disagree sharply, the gap is the absences.
Share of voice is the brand's mentions divided by the mentions of every brand you told the parser to look for. Ours: 29.3%. It is bounded by that list — a competitor you did not name cannot enter the denominator, so share of voice is an assumption before it is an observation.
Citation coverage is the share of stored responses that contain at least one source link. Ours was 0 of 340 before we noticed ◐. If citation coverage is zero, nothing built on top of those responses is measuring AI search, no matter what the dashboard says.
Brand recall is whether a model reaches for your name with no retrieval attached; AI search visibility is whether an engine cites and names you after retrieving pages. These 336 answers measure the first one. The two are different surfaces and cannot be continued as a single series.
| Metric | Denominator | Fails silently when |
|---|---|---|
| Appearance rate | all stored answers, per question type | the question set is weighted toward branded questions |
| Average position | only the answers where you appeared | absences are common — it improves as you get rarer |
| MRR | all stored answers | nothing; this is the one to report if you report one |
| Share of voice | mentions of the brands on your list | a competitor is missing from the list |
| Citation coverage | all stored responses | nobody checks it, and it can be exactly zero with no error raised |
| Brand recall vs AI search visibility | — | two surfaces get averaged into one trend line |
Why once is not enough
If generative engines were deterministic you would ask once and be done. They are not, and the size of that problem is published.
Don't Measure Once (Schulte et al. 2026, arXiv 2604.07585, grade ○▲) reports the 95% confidence interval on a brand-detection rate for one question on one engine:
| Samples per cell | 95% CI |
|---|---|
| 1 | ±72.4 percentage points |
| 3 | ±36.9 pp |
| 7 | ±15.8 pp |
Read the first row literally. One answer puts your true appearance rate in a band nearly as wide as the whole scale. "I asked ChatGPT and we weren't there" is real — it happened — and it constrains almost nothing.
SparkToro's Rand Fishkin and Gumshoe.ai's Patrick O'Donnell measured the instability directly: 12 prompts through ChatGPT, Claude and Google's AI Overviews, 2,961 runs collected via 600 volunteers, each prompt run 60-100 times (grade △▲, observational, no control, both authors sell adjacent products). Their headline: "There's a <1 in 100 chance that ChatGPT or Google's AI, if asked 100X, will give you the same list of brands in any two responses."
Their study also contains the part that cuts against the panic, which is why it is worth citing rather than cherry-picking: while individual lists churn, visibility percentages stayed consistent across differently-worded prompts. The individual answer is noise. The rate is what holds still enough to watch.
How many samples. The baseline below used 7 per question per engine; our product default is 3 ◐. They answer different questions — 7 narrows "what is the rate right now", 3 costs less per time point so you can afford more time points, which is what "did anything change" needs. Pick one before you look at the number.
What 336 answers produced
How often each name appeared across the 336 answers ◐. Two columns, because the count depends on the instrument:
| Name | Naive string match | Variant-aware matcher | Delta |
|---|---|---|---|
| the measured brand | 168 | 168 | +0 |
| CapCut | 140 | 152 | +12 |
| Opus Clip | 101 | 109 | +8 |
Three more names we tracked — Vrew, Klap and Vidyo.ai — appeared at lower counts, from a different parse pass, so they are not in this table. Counts from two different parsers do not belong in one column.
This table is not a ranking of which product is better, and we are not qualified to publish one. We did not use, test, benchmark or review any of these tools. Each row means one thing: with web search off, these models produced this name this many times in answers to these 24 questions. That is a fact about the model, not a verdict on the software.
We name the brands the models named, because that is the observation and hiding it would make the finding unverifiable. We do not name the measured brand: the unflattering half of the table is its data, not ours to publish under its name.
Your name matcher is a measurement instrument
The two columns above are the same 336 answers, re-parsed. The only change is whether the matcher treats script and spelling variants as one entity — 캡컷 = CapCut = Cap Cut, including particles stuck to the end of the word.

Look at which rows moved. The measured brand did not move at all; both competitors did. That is not our matcher being better at competitors — it is a property of the brands ◐. The models don't know this brand's settled Korean name, so they hedge and write it in both scripts, which a naive matcher catches for free. CapCut has a settled Korean name, so it appears in Korean script only and the naive matcher walked past 12 of them.
The consequence is uncomfortable. Improving the instrument moved this brand's share of voice from 30.4% to 29.3% ◐ — down. Nothing changed in the world; we just stopped missing our competitors' mentions. If you have a visibility number that has been quietly improving, check whether your matcher changed.
There is a second-order version too: the counts are bounded by the list of names you hand the parser. Ours was inferred at onboarding from the brand's own site. Then a single Google AI Overview for this same category recommended Vizard — a name not on our list at all ◐ (n=1, checked by hand). It could not have been counted at any sample size by any matcher. A share-of-voice denominator is an assumption before it is an observation.
The headline number is an artifact of your question list
The brand was named in 168 of 336 answers — 50.0%. That sounds like a real presence. Now split the same 336 answers by what kind of question was asked ◐:
| Question type | Brand appeared |
|---|---|
| branded — the question contains the brand's own name | 100% |
| commercial — buying-intent questions | 57.1% |
| unbranded — the question describes the need, not the brand | 0.0% |
| weighted total | 50.0% |
The 50% is entirely carried by questions that already said the brand's name. In the questions a stranger would ask, the count is zero out of every single one.
Two consequences. A vendor can move this headline without anything changing in the world, just by putting more branded questions in the set — so if you are evaluating a tool in this category, ask what its question mix is. And the competitor counts above are not split by question type, so they cannot tell you which names filled the space where this brand scored 0.0%. Read the two tables separately.
Note also that "unbranded" and "long-tail" are not the same axis, though they get merged constantly. The three axes hiding inside that word are pulled apart in Long-Tail Prompts vs Head Terms in AI Search.
"Mentioned" throws away most of what you saw
| Metric | Value ◐ |
|---|---|
| Appearance rate | 50.0% |
| Average position when it did appear | 1.28 |
| Mentions with no position at all | 49 of 168 (29%) |
| MRR | 0.362 |
Average position 1.28 reads like "almost always first." It is not — it is "first, in the half of the answers where it showed up at all." The average silently drops every answer where the brand was absent. Mean reciprocal rank keeps those in the denominator, which is why the same brand is 1.28 on one metric and 0.362 on the other.
The 29% matters as much: models often answer in prose, not lists. "A is great for this, and B also works" has an order of mention but not a rank. Anyone showing you a clean average position on prose answers has made a decision about that and probably hasn't told you which one.
Brand recall and AI search are different surfaces
Brand recall is whether a model reaches for your name with no retrieval attached. AI search visibility is whether an engine cites and names you after retrieving pages. These 336 answers measure the first one.
This is a state that is easy to ship without noticing. Neither connector attached a search tool, so the field the citation parser reads was always empty: 340 stored responses, 0 containing a single citation ◐ — every call returned HTTP 200 and nothing logged an error. Turning search on raised the per-response cost roughly 11-fold ◐, which is the other half of why this is a decision and not a default.
If you run your own tracker, count the responses containing at least one citation before you read any dashboard built on them. And a number is only comparable to numbers measured the same way — ungrounded figures cannot be continued as a series with grounded ones.
Do it by hand first
You need a spreadsheet and about an hour.
- Write 10 questions your buyer would type. If a question contains your brand name it goes in a separate section and does not count toward your headline number.
- Ask each one 5+ times, in a fresh session, on each engine you care about. Log out — signed-in sessions carry memory and personalisation.
- Record per answer: every brand named, the order they appeared, and whether the answer was a list or prose.
- Compute a rate, not a verdict. "3 of 5" is a finding.
- Count the other names too. The ones that recur are what the model reaches for by default.
- Write down whether search was on. Never average the two.
Do not substitute the quicker check of asking the model about yourself — we measured that separately and it returns whatever your phrasing implies: Does ChatGPT Know My Brand? And if step 5 turns up competitors ranking where you don't, the rank question is here: Why your brand isn't in AI Overviews
What changes per engine
The six steps are the same everywhere. What differs is what you have to write down, and running one procedure across all engines is how three incompatible numbers end up in one column.
| Surface | Retrieval attached by default | The thing you must record here specifically | What we have measured on it |
|---|---|---|---|
| ChatGPT, consumer app | Usually | Whether any sources were shown, and in what language they are written. Its search step rewrites your question before retrieving | Head-term citations: 66% vendor product/about pages, 19% review sites, 0% video ◐ |
| ChatGPT, Chat Completions API | No — there is no search tool on that endpoint | Nothing else: expect citation coverage of exactly 0, and treat the output as brand recall | 340 responses, 0 citations ◐ |
| Gemini, consumer app | Usually | Same as above, plus the language it answered in | Head-term citations: 38% vendor listicles, 26% video, 0% review sites ◐ |
| Google AI Overview | Tied to Google's index by construction | Whether an overview appeared at all. It does not appear for every query — ours appeared on 12 of 13 | YouTube 26.6% of citations; cited 6/6 when the page ranked, 0/6 when it did not ◐ |
| Perplexity | Yes | — | Nothing. We have zero measurements, and that empty cell is a fact about us |
| Claude | Varies | — | Nothing |
Four consequences that only show up once the surfaces are separated:
1. App versus API is a larger difference than engine versus engine. Our whole 336-answer dataset sits on the no-retrieval side of that line. Check citation coverage before anything else, and never splice a grounded series onto an ungrounded one.
2. If you sell outside English, the query language is not the retrieval language. We captured what the engines typed into a search box: ChatGPT rewrote 6 out of 6 Korean questions into English queries. Gemini kept 9 of 11 in Korean ◐ (n = 6 and 11; direction only). So on ChatGPT, a Korean-language question can be answered from English pages — which means recording the language of the sources, not just of the question. The mechanism is in Long-Tail Prompts vs Head Terms.
3. On AI Overviews your denominator has two levels. Queries where an overview appeared, and queries where one did not. Reporting a rate over only the first level while calling it a rate over all your queries inflates it, and the size of that inflation is not fixed.
4. What you record should follow what that engine cites. Tracking YouTube presence for a ChatGPT-first audience is measuring a row that was 0% in our data; tracking review-site profiles for a Gemini-first audience is measuring a row that was also 0%. Same brand, same week, opposite advice.
What this cannot do
- We cannot show you "we changed something and the number moved." No before-and-after with a control exists — not from us, not from anyone whose work we have been able to read. Anyone selling you a causal claim here should be asked for the control group.
- One brand, one category, one week, two engines. Nothing here generalises to your category.
- One time point, not a series. Periodic runs are what turn a rate into a trend, and none of these figures are a trend.
- The stored responses record the engine, not the model version ◐. A vendor can swap the model underneath and the series shows a step change with no explanation in the data.
- Perplexity: zero measurements. The empty cell is information about us, not about Perplexity.
- Response-level counts are the stable end. Sentence-level attribution is worse — 31.4% of the sentences mentioning CapCut were Korean-script only ◐.
Frequently asked questions
Does the model rank brands, or just list them?
Often neither cleanly. In our 336 answers, 29% of the brand's mentions had no position at all ◐ — the model wrote prose ("A is great for this, and B also works"), which has an order of mention but not a rank. Anyone showing you a clean average position over prose answers has made a decision about how to handle that and probably has not said which one.
How do I track competitors' mentions as well as my own?
Count every brand named in every stored answer, not just yours — the cost is the same because you already have the response. Two cautions from our data ◐: the counts move with your matcher (a variant-aware one added 12 CapCut mentions and 8 Opus Clip to the identical 336 answers), and they are bounded by the list you hand the parser. A separate AI Overview in the same category recommended Vizard, which was not on ours and so could not have been counted at any sample size.
Can I see AI mentions in my analytics or server logs?
No, and this is a structural limit rather than a tooling gap. A mention with no link produces no click and therefore no referrer, and answers can carry no links at all — our first 340 stored responses contained zero citations ◐. Referral data measures visits that happened, not answers that named you. The two can move in opposite directions, so a flat referral line is not evidence of flat visibility.
What counts as share of voice in AI search, and can I trust it?
Share of voice is your mentions divided by the mentions of every brand you told the parser to look for — so it is bounded by that list before it is an observation. Improving our matcher moved this brand's share down, from 30.4% to 29.3% ◐, with nothing changing in the world; we had simply stopped missing competitors' mentions. If your share of voice has been quietly improving, check whether your matcher changed.
Or have it run the same way every time
Everything above is doable by hand. What it is not is repeatable — the value comes from asking the identical question set the identical way, and a spreadsheet degrades the moment you get busy.
That is the job peekr does. It holds the question list with an intent tag on each question, so branded, commercial and unbranded rates are reported separately rather than averaged into the 50% above. It sends each question to each engine N times instead of once. It stores every raw response, so a count can be re-derived when the parser changes — which is exactly what produced the two columns above. And it counts every brand named in every answer, so the output includes the names standing where you aren't.
Run the free check on one URL It reads the page, then asks one unbranded question about your category and shows the raw answer. One question asked once — the ±72.4 point interval above is why that is a demonstration and not a measurement.
Method
All figures marked ◐ come from our own database: 336 stored engine responses for one brand, 24 questions x 2 engines x 7 samples, collected in July 2026 with web search off, raw responses retained. Brand counts come from an LLM parser; the two columns are the same 336 responses parsed twice, and the variant-aware column is the one we report as ours. We do not crawl third-party sites. We did not test, review or benchmark any product named here.
External figures are attributed inline with publisher, method as stated by the publisher, and a conflict-of-interest mark.
If you run the by-hand version on your own brand and get something that contradicts anything above, we would like to see it.