Skip to main content
Share of voice is the fraction of successful runs in which a model named your brand in its answer text. It is the count of successful runs where your brand was named, divided by every successful run in the window. Nothing else enters the calculation: not link counts, not answer length, not position.
Share of voice here is a rate, not a slice of a pie. It answers “in what fraction of answers were you named?” — never “what fraction of all brand mentions were yours?” It does not sum to 100% across brands. Most tools in this category use the name for the pie version; we do not, for the reason in Why ours does not sum to 100% below.

What counts?

A mention is your brand name appearing in the answer the model wrote. No link is required. A model can describe you at length, recommend you, and never attach a URL — that still counts. A link to your domain is a separate thing entirely, counted as a citation. The unit of measurement is a run: one prompt, sent to one model, for one country, at one point in time. Not a reading, not an answer paragraph, not a keyword occurrence. If your name appears eleven times in one answer, that run contributes exactly one mention, the same as an answer that names you once.

How is it calculated?

Failed runs are stored for debugging but excluded from the denominator, so a model outage lowers your sample size rather than your rate. See How we collect data for what makes a run succeed.

Does sampling more often change my number?

No, and this is deliberate. Reading the same prompt three times instead of once triples the runs behind the number — and roughly triples the URLs those answers carried — but both the numerator and the denominator grow together, so the rate holds and only n grows. Sampling deeper buys you confidence, not a different number. The same property is what makes windows comparable. A window read at greater depth than the one before it is not “up”; the significance gate compares two rates using both sample sizes, so a change has to clear the noise floor for the n actually involved. Two things do scale with sampling depth, and they are counts rather than rates: the number of citations collected, and the number of answers read. Read those as evidence volume, never as movement.

Why ours does not sum to 100%

Competitor share of voice uses the same denominator — all successful runs in the window. That has a consequence worth internalising: competitor rates do not sum to 1. Several brands can be named in one answer, or none can. A window where you sit at 40% and three competitors sit at 55%, 30% and 20% is perfectly ordinary and describes reality accurately. We could compute the version that does sum to 1 — your mentions divided by every tracked brand’s mentions. We deliberately do not, because its denominator would be the competitor list you typed. Add a competitor and your headline number falls; remove one and it rises. Nothing about your visibility would have changed. A number that moves when you edit a settings page is not a measurement, and we would rather publish one that only moves when the models do. This means our share of voice is not comparable to a number under the same name from a tool that computes the pie version. Ours will generally look larger, because it is answering a different question.

How do I read the number?

Every rate arrives as {value, n}. value is the rate; n is the number of successful runs behind it. A value of null means the cell was never measured — that is not zero. A value of 0 with n above zero is a real, measured zero: the model was asked and did not name you. Read n before you read value. At a sampling depth of one run per prompt per model per day, a single week gives you seven runs per prompt-model pair, and a rate built on seven runs moves in large steps. Reading the numbers covers small samples, deltas and unmeasured cells in detail.

Where did you come in the answer?

Being named is the rate. Where you were named is a separate reading, and Attensira keeps two versions of it on purpose.

Your position: among the names you track

Your position is where your brand first appears in an answer, counting only the names you track: you and your tracked competitors. 1 means no tracked name came before yours. It is always shown with its base, as in “#2 of 5 tracked names”, where the base is you plus every tracked competitor that answer also named. This is the position every board, chart and average reports, and it stays that way. It is measured from the answer’s text against a list you control, so it is the same reading every time the answer is read. The base is what keeps it honest: “#2” alone reads as second in the answer, and it means second among the names you asked us to look for. Track one more competitor and an answer that named it before you moves you from #1 of 2 to #2 of 3, with nothing about the answer changed. An answer that did not name you has no position, never position 0, and is left out of the average.

The full brand order

Each answer also carries its brand order: every brand it names, tracked or not, in the order it first names them. It is read from the answer’s text after the answer is stored, and the order is fixed by where each name first appears in the text, not by the model that reads it. A name the text does not contain is dropped, and a brand is linked to a domain only when it matches you, a tracked competitor or a site the answer cited. On the prompt page, every answer you open from the day-by-day strip lists its brand order with each brand’s stance and marks which one is you. Over MCP and the REST API it is the brands list on answer_history and answer_slice rows: each brand with name, domain, position, tracked, is_self and, for a tracked rival, competitor_domain. Your place in the brand order can be further down than your position, because untracked brands count in it. That is why the brand order is shown per answer, as evidence, and the boards keep your position among tracked names. A competitor’s average place, where a rival tends to come when it is named, is read from the brand order, because there is no tracked-name position for a rival. It is reported by query_evidence as competitor_position, and it is null until at least one answer naming that rival has been read for its brand order. Answers from the last 90 days have a brand order. An answer older than that, read before the brand order was kept, shows a dash and “recorded before we kept the full brand order”, never an empty order: it may well have named five brands. A brand order of [] is a reading: the answer named no brand at all.

What this measure gets wrong

Detecting a mention means finding your brand name in the answer text, as a whole word. That handles the ordinary cases — possessives, hyphenation, your domain inside a URL — and it will not count “architecture” as a mention of a brand called Arc. It cannot yet tell a brand from its own name used as an ordinary word. If your brand is called Linear, an answer explaining that something “scales in linear time” is counted as a mention. The error runs one way — brands whose names are common words read high, never low — and it is worth knowing about when you read your own number. We store every answer verbatim, so when the detection improves we can re-run it over history rather than starting a new series. If your brand name is a common word, open a few answers on the prompt detail view and read them before you trust the rate.