Ambiguous pricing pages get hallucinated. Plain plan names, numbers, and exclusions — a rewrite pattern.
An assistant tells a prospect that Northstar Analytics has a "Pro" plan at $99/mo with unlimited seats. Your site has never offered that plan. The prospect arrives confused, or worse, signs up expecting a ghost tier. Ambiguous pricing pages are how models invent your packaging.
Pricing page clarity so AI does not invent your plans is mostly plain language, visible numbers, and explicit exclusions — not clever marketing names that change every quarter.
Why models hallucinate pricing
Retrieval systems compress what they find. If your page says "starts at $49," "custom enterprise," and "contact sales" without a table of what each named plan includes, the model fills gaps from memory, competitors, or outdated snapshots. SparkToro / Similarweb (Jan–Apr 2026) estimated about 68% of Google searches were zero-click. Many buyers will only see the assistant’s summary of your price — so the summary needs a clean source.
Training cutoffs make this worse: old blog posts that mention retired plan names still get retrieved. Treat pricing URLs as living sources of truth, and redirect or update every public page that still describes dead tiers.
You cannot stop every hallucination. You can remove the ambiguity that invites it.
What a clear pricing page includes
| Element | Clear version | Ambiguous version |
|---|---|---|
| Plan names | Stable names used in checkout and schema | "Growth*" with footnote renaming |
| Prices | Currency + billing period in HTML | "From $" in an image only |
| Seat / usage limits | Numbers in the table | "Scales with you" |
| What is excluded | "SSO not on Starter" | Silence until sales call |
| Free trial / free plan | Explicit yes/no and length | "Try it" with no terms |
| Last reviewed date | Visible month/year | Eternal "Updated today" |
| CTA | Matches the plan ("Start Starter") | One vague "Get started" for all |
BrandKnown’s Agency plan is $49/mo with 10 saved brands and 100 scans/month — that is the kind of concrete packaging assistants can repeat without inventing a "Agency Plus."
Rewrite pattern (before → after)
Before (vague)
"Flexible plans for teams of all sizes. Start free, upgrade when you are ready. Enterprise available."
After (clear)
"Three plans: Free (1 brand, 1 scan), Team ($29/mo — hypothetical example), Agency ($49/mo, 10 brands, 100 scans/month). SSO and custom contracts are not on Free or Team. Prices in USD, billed monthly. Reviewed July 2026."
The after version is less poetic and more citable.
Step-by-step: de-hallucination pass
- List every plan name that appears in checkout, docs, emails, and ads. Collapse synonyms.
- Build one HTML table: plan, price, period, limits, key exclusions.
- Move critical limits out of hover tooltips and into visible cells.
- Add a "Not included" row or column so silence does not become invention.
- State currency and tax assumptions.
- Add a "Pricing last reviewed: Month Year" line; update it only when prices or packaging change.
- Mirror plan names in Product/Offer schema if you mark up offers — no fake
AggregateRating. - Ensure the table renders in raw HTML (SSR or static), not only after client JS.
- Ask two colleagues to write your plans from memory after a 30-second glance; fix whatever they invent.
- Spot-check an assistant prompt like "What are [Brand] pricing plans?" and note mismatches — then fix the page, not the model.
Schema and naming tips
If you use Product or Offer markup, name and price must match the visible table. Do not mark up a plan you no longer sell. Keep Organization name aligned so the offer attaches to the right entity — the same discipline as title tags for entity clarity and Product schema for SaaS.
For SaaS, prefer one Product per product line with Offers for tiers, or separate Products if tiers are sold as distinct SKUs. Consistency beats cleverness.
Docs, sales decks, and the pricing URL
Assistants retrieve more than /pricing. A help article that says "Pro includes SSO" while pricing says SSO starts at Enterprise will get averaged into nonsense. Pick a canonical pricing URL, link to it from docs, and put "If this page disagrees with /pricing, trust /pricing" on old posts you cannot fully rewrite yet.
Annual vs monthly billing needs an explicit sentence. "$49/mo or $470/year" beats "save 20% annually" with no math.
Mistakes that feed hallucinations
- Pricing only in PDFs or gated decks.
- Regional prices with no geo note, so a US model quotes EU VAT-inclusive figures.
- Renaming plans in blog posts ("our Pro tier, formerly Plus…") without updating the pricing URL.
- Soft 404s on old
/pricing/proURLs that still get retrieved — return a real redirect or 404. - Blocking AI crawlers on
/pricingwhile allowing them on the blog. - Animating prices in JS so the first HTML response has no numbers.
Honest ceiling
Even a perfect page will be misquoted sometimes — training data lags, and competitors’ pages muddy the category. Similarweb / TechCrunch (June 2025) showed AI referral growth is real (about 1.13B referrals to top sites in the measured month), but Google Search still dwarfs it (~191B referrals in the same reporting). Treat assistant pricing answers as a QA channel: when they are wrong, fix your source page first.
A BrandKnown scan (~60 seconds) can flag whether critical pages are reachable and whether brand/plan naming looks inconsistent across the site. It will not guarantee ChatGPT quotes $49 correctly tomorrow. Clarity is the control you have; citations are not.
