IAB disclosure

The IAB framework does two things: it grades a measurement programme, and it asks the provider to disclose a named set of fields about how the numbers are made. This is that checklist, filled in, with the places we fall short stated in the same table as the places we do not.

Why the checklist, and not just the grade

Our measurement standards page grades us criterion by criterion and tier by tier. This page is the other half: the disclosure fields the framework names, answered. A grade tells you what a number is fit for. The disclosure tells you what was actually done, which is what you need if you want to disagree with the grade.

Everything below is generated at build time from the code that runs the scans: the engine panel and the model slugs from the scanner, the tier shapes from the tier tables, the criteria and their thresholds from the classifier, the reset triggers from the versioning module. Nothing in the tables is typed by hand, which is the only way a page like this survives a year of changes. The same is true of the scorer changelog.

The shortfall column is the reason this page exists. A disclosure document that only discloses strengths is marketing with a framework's vocabulary borrowed for cover. Where a shortfall can be derived, it is: it appears because a condition in the code holds, and it will disappear on its own when that condition stops holding, rather than when somebody remembers to delete a sentence.

Where other tools are ahead of us

We looked at Profound, Evertune, Gumshoe, Popsight, whereamimentioned and Machine Relations while writing this. Three things they publish are worth naming before we grade ourselves, because a self-assessment written as though the rest of the field were not doing serious work is not an assessment.

What we have not found, among the tools we researched, is this checklist filled in per tier, with a tier we actively sell failing on the page that sells it. That is a claim about disclosure, not about measurement, and it is the only claim of that shape we make.

The disclosure fields

FieldWhat we discloseWhere we fall short
Platform coverage and model versionsWhich AI platforms are measured, and which model version answered. Six platforms, queried separately and reported separately, never blended into a single figure: ChatGPT (openai/gpt-chat-latest), Gemini (google/gemini-3-flash-preview), Claude (anthropic/claude-haiku-4.5), Perplexity (perplexity/sonar), Grok (x-ai/grok-4.3) and DeepSeek (deepseek/deepseek-chat). The slug that actually answered is recorded on every observation and carried in the raw export, so a platform swapping its model is visible in your own data rather than only in ours.app/lib/engines.js Where we fall shortTwo of those slugs name a moving target rather than a pinned version: openai/gpt-chat-latest and google/gemini-3-flash-preview. The provider re-points them as its default model changes, so we learn the version moved by detecting it afterwards and opening a new baseline, not by being told in advance. We cannot promise the model behind one of those names is the model that was behind it last week.
Prompt library constructionHow the prompt set is built, and which intent types it covers. All four of the framework's intent types are present in every generated set, and results are reported segmented by intent in the product. Sets lead with category questions, which are the decision-stage ones; questions that name your brand are capped and scored into a separate brand defence figure rather than the headline, because every engine answers "who is X" trivially and counting those flatters the number. The set is hashed, so editing it opens a new measurement baseline rather than moving your trend line.app/lib/shared.js · app/lib/question-generator.js · app/lib/iab-tier.js Where we fall shortCoverage of all four intent types is guaranteed by substitution rather than by the generator. If a generated set misses an intent, we replace the most over-represented question with a fixed template for that intent. On a small set that means one question in yours is a template, phrased the same way for every customer in your industry, and it displaced a question written for you.
Query sourcingWhere the queries come from, and whether they reflect real demand. Questions are generated by anthropic/claude-sonnet-4.6 from inputs you give us and can see: industry, location, brand name, business description and the competitors you list. Generation is deterministic in its inputs and falls back to a fixed template set if the model call fails, and you can edit or replace any question in the set. Generation is also SEEDED by two sources of observed demand, which are the only inputs on this page that are measured rather than inferred. The first is your own Google Search Console, if you connect it: queries real people typed to reach your site, stripped of branded and navigational terms. The second is Google's People Also Ask, harvested once per account for every paid plan and refreshed quarterly, which needs nothing from you. Search Console ranks above People Also Ask where both exist, because your own demand is better evidence than your category's.app/lib/question-generator.js · app/lib/shared.js · app/lib/gsc-demand.js · app/lib/paa-harvest.js Where we fall shortThey are still GENERATED, and seeded is not sampled. Neither source is a licensed demand panel, and neither weights a question by how often it is asked, so a question can be well-formed, plausible, on-topic and still rarer than another we left out. The two sources are also biased in opposite directions and neither correction is applied: Search Console can only show queries you ALREADY appear for, which is the wrong half if you want to know where you are absent, and People Also Ask is Google's view of a category rather than yours. A tool that samples a large observed prompt panel still has a real advantage over us on volume, and we would rather name that than let "seeded by real demand" do more work than it has earned.
Data collection architectureHow responses are collected, and under what retrieval configuration. One call per question, per platform, per sample, through the OpenRouter API. Web-grounded calls use the universal web plugin (`web`, top 5 results) for every platform, rather than a model-specific search tool that is honoured differently by each. Samples run in sequence. A grounded result is cached for seven days on single-sample tiers and never on repeat-sampled ones, because a cached first sample would make the measured variation cache staleness. A failed call is recorded as no observation and never as the engine choosing not to mention you, and a scan where every platform fails is discarded rather than stored as a collapse to zero.app/lib/citation-engine.js · app/lib/shared.js · app/lib/grounded-cache.js Where we fall shortWe query the models through an API, not through the consumer apps. No account, no chat history, no personalisation, no product-side ranking or experiment. What we measure is the model's answer to your question, not what a signed-in person sees in the app, and the two are not the same thing. Perplexity's Sonar also retrieves from the live web whatever we ask of it, so retrieval is uniform within each platform's own series and not across the panel.
Panel validityWhether the measured panel represents what it is being read as. The panel is the six assistants above, chosen for consumer reach and held fixed. Every platform is reported on its own, and the headline rate is the mean across the platforms that answered. The platforms that actually answered are hashed into your measurement baseline, so a scan taken over a different panel is not stitched into the same trend line as one taken over the whole panel.app/lib/engines.js Where we fall shortEqual weight is a choice, not a finding. We do not weight platforms by usage share, because we have no licensed source of assistant traffic share we would be willing to publish a number from, so a mention on the largest assistant counts exactly as much as one on the smallest. This is a panel of engines, not a sample of people: it is not weighted to any population, and nothing here should be read as a share of what real users see.
Sample size and query volumeHow many queries, asked how many times, per measurement programme. Starter: 25 questions at k=1, 150 model calls per scan (below directional). Pro: 50 questions at k=2, 600 model calls per scan (directional). Scale: 100 questions at k=2, 1200 model calls per scan (directional). Enterprise: 100 questions at k=3, 1800 model calls per scan (decision-grade). The tier tables are the single definition; the spend cap that protects each account is computed from them rather than set beside them.app/lib/cost-log.js · tests/fixtures/production-repeat-sampling.json Where we fall shortStarter sits below the framework's directional bar on sample size and query volume, and always will: it is a spot check priced as a spot check, and moving it up a rung would cost more to run than it collects. No production scan has yet run at k>1. Pro, Scale and Enterprise are configured for repeat sampling and the code path is exercised by tests, but the shapes above are what the tiers are configured to do, not a description of scans that have happened. This is the one row on this page that no code in our repository can check for us, so it is an operator attestation, last checked 2026-08-11.
Reproducibility and uncertaintyHow much a repeated measurement moves, and with what confidence. Published, measured rather than assumed: the same eight questions asked ten times each across all six platforms, plus the equivalent figure across our stored history. Where a question is asked more than once, each cell reports how many of its runs cited you rather than a single yes or no, in the grid and in the export, so the frequency behind a verdict can be recomputed.tests/fixtures/variance-studies/ · app/lib/tracker-export.js Where we fall shortWe publish variation measured elsewhere, not a confidence interval on your own number. Of the six tools we researched, three publish an interval on the customer's own figure and we do not. At k=1 there is nothing to compute one from; at k=2 and above it would be computable and we have not shipped it. On this field we are behind, not ahead.
Retrieval policyWhether answers are collected with live retrieval, and uniformly. Starter: web-grounded. Pro: web-grounded. Scale: web-grounded. Enterprise: web-grounded. Grounding is a whole-scan decision, never a per-question one: a scan that could only ground part of its set is refused and run memory-only instead, because averaging two retrieval configurations into one headline is the thing the framework forbids without disclosure. Changing a tier's retrieval opens a new baseline.app/lib/cost-log.js · app/lib/citation-engine.js Where we fall shortInvite plans run without grounding at all, so their numbers are not comparable with a grounded tier's even for the same brand on the same day. Those are granted rather than sold, and we disclose the difference rather than quietly correcting for it.
Historical versioning and baseline resetsHow scoring changes are versioned, and when a series is re-baselined. The scorer in force today is `2026-08-13.disclaimer-vocabulary`, and all six versions are published with the dates each was in force and the reason it changed. Every scan is stored tagged with its scorer version, the platform panel that answered, the question set and the retrieval mode. A new baseline opens on any of five triggers: AI engine panel changed, an engine changed model, scoring method changed, question set changed and retrieval configuration changed. A movement measured across a baseline reset is not reported as a movement; the product names the reset instead.app/lib/measurement-epoch.js Where we fall shortScans collected before we started tagging carry no baseline, and we treat an unknown baseline as "no change detected" rather than inventing a boundary, so a real discontinuity in the older history can be invisible. A reset also depends on us being able to see the change: a provider re-pointing one of the floating slugs above to a different model without changing the slug produces no trigger, because nothing we record has changed.

The configuration of each plan

Sample size and query volume are the two fields that differ by what you pay, so they are set out per plan rather than described once. The standing in the last column is computed by the same function the product and our emails use, from these same numbers.

PlanQuestionsSamples per questionModel calls per scanRetrievalCadenceIAB standing
Starter Questions25 Samples per questionk = 1 Model calls per scan150 RetrievalWeb-grounded CadenceEvery 7 days. IAB standing Below directional Held there by sample size and query volume.
Pro Questions50 Samples per questionk = 2 Model calls per scan600 RetrievalWeb-grounded CadenceEvery 7 days. IAB standing Directional Held there by sample size and query volume.
Scale Questions100 Samples per questionk = 2 Model calls per scan1200 RetrievalWeb-grounded CadenceEvery 7 days. IAB standing Directional Held there by sample size.
Enterprise Questions100 Samples per questionk = 3 Model calls per scan1800 RetrievalWeb-grounded CadenceEvery 7 days. IAB standing Decision-grade
There is no IAB certification, and we do not claim one. The framework states plainly that it "does not establish certification or evaluate individual providers". Nobody has audited this page. It is a self-assessment, published so that you can check it rather than take it, which is why every row names the file it was generated from.
"Starter: below directional" is our own wording. Below IAB directional. IAB defines two tiers, directional and decision-grade; "exploratory" is our label for a programme that does not yet reach the lower one.

Measured, and deliberately outside the panel

One surface is measured on every paid plan and is not one of the 6 engines above. The framework asks that differing measurement configurations are not combined without saying so, and this one differs in every respect that matters, so it is reported on its own and excluded from the headline.

SurfaceGoogle AI Overviews, measured since 2026-08-13
What it isA SERP feature, not a model we can prompt. It cannot be asked the same question six ways.
How it reaches usDataForSEO, rather than the model APIs the engine panel uses
Repeat samplingNone. 1 call per question; k is not a parameter here, so this surface is exploratory by construction however many questions a plan asks
DenominatorThe rate is over questions where Google showed an overview, not all questions asked. Google declining to show an overview is a fact about the query, not about the brand.
Excluded fromoverall_rate, per-engine rates, AI Visibility Score, engine_panel_hash
Plansstarter, pro, scale, enterprise
Cost to us$0.004 per question, measured on a live call rather than quoted from a price list

Because it sits outside the panel, adding it opened no measurement epoch and moved no existing number. Your citation rate, your per-engine rates and your AI Visibility Score are the same figures before and after it was switched on, which is checked by a test that runs the same scan with and without it and compares every one of them. If we had counted it as a seventh engine instead, every stored scan would have become incomparable with everything after it, and your trend line would have restarted for a reason that had nothing to do with your brand.

What this page is not

It is not an audit, and it is not evidence that our numbers are better than anyone else's. It is a statement of what we did, at a level of detail that lets you find the parts you think are wrong. Two of the shortfalls above are things a competitor does better than us today, and one of them, the confidence interval on your own number, is a gap we intend to close rather than a design decision we are defending.

If a field here disagrees with what you can see in your own export, the export is the evidence and this page is the error. Tell us and we will fix the page.

Back to measurement standards, where each plan is graded criterion by criterion, and the scorer changelog, which lists every change to how the score is calculated.

Generated from the scanning code at build time. Current scorer version 2026-08-13.disclaimer-vocabulary. The one field on this page that no code of ours can check is whether a repeat-sampled scan has yet run in production; it is an operator check, last made 2026-08-11. Framework reference: IAB, Measuring Visibility in the AI Era, August 2026.