All posts

How to Track Brand Mentions in AI Search (336 Answers)

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.

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

BrandOne video-editing SaaS, one category
Questions24, mixed types
Engines2 — one OpenAI model, one Google Gemini model, both via API
Samples7 per question per engine
Stored answers336 (24 x 2 x 7)
WindowJuly 2026
Web searchOff — 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.

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 cell95% 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:

NameNaive string matchVariant-aware matcherDelta
the measured brand168168+0
CapCut140152+12
Opus Clip101109+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 typeBrand appeared
branded — the question contains the brand's own name100%
commercial — buying-intent questions57.1%
unbranded — the question describes the need, not the brand0.0%
weighted total50.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

MetricValue ◐
Appearance rate50.0%
Average position when it did appear1.28
Mentions with no position at all49 of 168 (29%)
MRR0.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.

  1. 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.
  2. Ask each one 5+ times, in a fresh session, on each engine you care about. Log out — signed-in sessions carry memory and personalisation.
  3. Record per answer: every brand named, the order they appeared, and whether the answer was a list or prose.
  4. Compute a rate, not a verdict. "3 of 5" is a finding.
  5. Count the other names too. The ones that recur are what the model reaches for by default.
  6. 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: Brand Not Showing in AI Search?

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 ◐.

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](/en/onboarding/preview) 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.