Methodology
How PositionBird measures AI visibility
Last reviewed
Every number on a PositionBird dashboard comes from the rules on this page: which engines are queried and through what, how many times, how a mention or a citation is decided, and how those turn into a score. Few tools in this category publish their method; this is ours, in plain English, with the limits stated.
What does PositionBird measure?
PositionBird measures two things for each tracked prompt on each enabled engine: whether the answer mentions the brand (the brand name or one of its aliases appears in the answer text) and whether the answer cites the brand (one of the store's own pages appears in the engine's list of sources). The same two checks run for every competitor the merchant names, which is what makes Share of Voice possible.
The unit of measurement is a prompt-engine pair, for example "best soy candles for gifts" on Claude. A scan runs every active prompt on every enabled engine, several times each, and records the answer text, the cited URLs, the model that produced it, and a timestamp. Everything on the dashboard, from the 0-100 score to the citation ledger, is an aggregate of those pairs.
PositionBird reports how often a brand appears, not where it ranks. Repeated runs of the same prompt rarely produce the same list of brands in the same order, so a "rank position in AI" would be reporting noise. Presence frequency across repeated samples is measurable; rank is not, and PositionBird does not report one.
How are prompts chosen?
Prompts are buyer-intent questions: the questions a shopper asks when deciding what to buy, not the brand's name. PositionBird reads the store's product titles, types and tags (or, for web accounts, crawls the public site) and suggests a starting set that mixes "best X for Y" questions, comparisons and "is X worth it" questions in the store's categories. Merchants edit the list, add their own and retire prompts that stop mattering.
Each plan caps the number of active prompts, and every active prompt is run on every enabled engine on every scan. Prompts are sent as the merchant wrote them; PositionBird does not rewrite, translate or add location or persona context to a prompt. On the two APIs that accept a system instruction (OpenAI and Perplexity) every request carries the same fixed one-line instruction to act as a shopping assistant and name specific brands or stores; Claude and Gemini receive the prompt alone. The instruction is identical for every merchant and never mentions any brand.
Which engines and models are queried, and how?
PositionBird queries each AI engine through its official developer API with web search or grounding turned on, using one account within the vendor's rate limits. It never automates a consumer chat interface, never uses proxies or spoofed browsers, and never bypasses a bot wall. Models are pinned to a specific identifier rather than a floating latest alias so scans stay comparable, and the identifiers in use are listed below with the review date; when one changes, this page is updated and the change is dated. Accuracy Alerts records additionally carry the model identifier inside each hashed record.
Sampling: each prompt-engine pair is queried N times per scan (default 2, configurable from 1 to 5 in Settings). A pair counts as mentioned or cited for the scan if any of its samples was, and the per-sample record is kept so the mention frequency across samples is also visible. Scans run on the plan's cadence: monthly, weekly, every two days or daily.
Google AI Overviews are not collected. There is no official API that returns them and Google's terms do not permit automated collection from its results pages, so PositionBird measures the Google layer with classic results instead (organic top ten, featured snippet, People Also Ask), which also happen to be the pool AI Overviews draw from. Perplexity is queried through its API for merchant dashboards, but PositionBird keeps it out of any published research because Perplexity's terms restrict publication of its outputs.
| Engine | Queried through | Model (as of September 5, 2026) | Retrieval |
|---|---|---|---|
| ChatGPT | OpenAI Responses API with the web_search tool | gpt-4.1-mini | Live web search on every request |
| Claude | Anthropic Messages API with the web search tool | claude-sonnet-5 | Live web search on every request |
| Gemini | Google Gemini API with Grounding with Google Search | gemini-3.6-flash | The model decides per request whether to search; answers without a search are recorded as such |
| Perplexity | Perplexity Sonar API | sonar | Live web search on every request |
| Google (classic results) | Search-results data API (SerpAPI), not an AI answer | n/a | Organic top ten, featured snippet and People Also Ask boxes; one sample per prompt |
How are mentions and citations detected?
Detection is deterministic and unit-tested; no model is asked to judge whether a brand was mentioned. A mention is a case-insensitive match of the brand name or any alias with Unicode word boundaries, so "Bones" matches "the Bones store" but not "backbones". The merchant controls the name and alias list in Settings, which is the main lever on mention accuracy.
A citation is matched on host: each cited URL is normalised (scheme, www, path, query and port removed) and compared with the store's domain. Subdomains count, so shop.example.com matches example.com; lookalikes do not, so notexample.com does not. Gemini returns its citations as Google redirect links rather than destination URLs; PositionBird resolves those to the real host in a follow-up step for the citation ledger, and a redirect that has not yet been resolved is not credited to any domain, so Gemini citation counts can lag a scan. An engine call that fails is recorded as failed and excluded from every rate: an error is not evidence of absence.
A page can be cited without the brand being named, and a brand can be named without any page being cited. PositionBird records both and reports them separately, because the fixes are different: retrievable, accurate pages for citations; presence on the sources engines trust for mentions.
How is the AI Visibility Score calculated?
The score blends three rates, each a percentage from 0 to 100. Cited rate is the share of prompt-engine pairs where the store was cited. Mention rate is the share of pairs where the store was mentioned. Engine coverage is the share of queried engines that cited or mentioned the store at least once.
Score = 100 × (0.50 × cited rate + 0.35 × mention rate + 0.15 × engine coverage). Citations carry the most weight because a citation means the engine sent the shopper to the store's own page; mentions come second; coverage rewards being present across engines rather than dominant on one, which matters as shoppers spread across tools. A brand cited and mentioned on every pair on every engine scores 100; a brand absent everywhere scores 0.
The score is meant for comparison: this scan against the last one, and this store against the competitors it tracks on the same prompts. It is not a grade of the store or a prediction of sales, and a change of a few points between two scans is within normal engine variation.
| Score | Tier | What it means |
|---|---|---|
| 70-100 | Leading | Named and cited on most tracked prompts across most engines. |
| 40-69 | Competitive | Named often; citations are the next lever. |
| 15-39 | Emerging | Named sometimes; most prompts are still open. |
| 0-14 | Invisible | Engines rarely surface the brand for its tracked prompts. |
Weights: cited rate 0.5, mention rate 0.35, engine coverage 0.15.
For each prompt-engine pair, Share of Voice is the store's mentions divided by the store's mentions plus all tracked competitors' mentions, counted at the pair level after aggregating samples. If nobody is mentioned, Share of Voice is 0; if only the store is mentioned, it is 100%. The dashboard aggregates the same ratio across prompts and across engines, and shows which competitor is named on the prompts where the store is not.
Share of Voice only counts the competitors the merchant has named. A brand PositionBird has not been told about is not in the denominator, so a low Share of Voice with few competitors listed usually means the list is incomplete rather than that the store is losing.
What are the known limits?
API answers are a proxy for the consumer apps. The ChatGPT, Perplexity, Gemini and Claude apps may use different model versions, system prompts, retrieval pipelines, memory and personalisation than their APIs, so a PositionBird result is the closest programmatic equivalent of what a shopper sees, not a screenshot of it. Treat the numbers as a trend indicator and a competitor benchmark; both survive the proxy well. A single answer does not.
Engines vary from run to run. The same prompt asked twice can name different brands, which is why every pair is sampled more than once and why the score should be read over several scans rather than one. Engine-side changes (a new model, a retrieval change) can move every brand's numbers at once, independent of anything a store did.
Presence frequency is measurable; rank position is not. PositionBird reports how often a brand appears with the sample counts behind it and does not report a rank inside an answer.
Detection is literal. A misspelt brand name in an answer is not a mention unless that spelling is in the alias list; a citation of a reseller's page about the brand is a citation of the reseller, not the store. Both are by design, and both are visible in the raw answers stored with each scan.
What data is stored and for how long?
Each scan stores the prompt, engine, model identifier, timestamp, full answer text, and cited URLs for every sample, plus the detection result for the store and each competitor. Accuracy Alerts answers are additionally stored append-only with a SHA-256 hash over the engine, model, prompt, timestamp and answer, so any record can be re-verified later as an untampered copy of what the engine said.
Prompts, competitors, answers and scan history are kept for as long as the account is active, so trend lines are not cut off. When a Shopify store uninstalls the app, sessions are deleted immediately and all remaining data for the store is erased on Shopify's deletion request 48 hours later; web accounts can request deletion at any time. Free-scan entries are kept for up to 24 months from the last interaction. PositionBird never holds customer-level data, and the prompts it sends to engines contain the merchant's questions, not customer information.
Why publish this?
A census of 74 AI-visibility tools published in August 2026 found 6 of them (8%) with a checkable methodology: a sample size, a formula, or a dataset a reader could verify (CitedIndex, 2026-08-06; PositionBird was not among the tools surveyed). A visibility number a merchant cannot check is a number a merchant cannot act on. The rules above are the ones the app enforces; the engineering version, with the code paths, is kept alongside the source. The same rules were applied to a published study, which sources AI engines cite for shopping questions, with its raw data downloadable.
Terms used here are defined on the glossary. The step-by-step of a scan, from install to first score, is on how it works. For what to monitor and why it differs from rank tracking, see AI search monitoring for ecommerce.
Last reviewed September 5, 2026. Model identifiers change; the table above is updated when they do.
See the method applied to your store
Free plan available. One scan, sampled and dated, with the raw answers kept.
Get it on the App Store