◀ All articles

AEO

Pricing page clarity so AI does not invent your plans

July 19, 2026 · 4 min read

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

ElementClear versionAmbiguous version
Plan namesStable names used in checkout and schema"Growth*" with footnote renaming
PricesCurrency + billing period in HTML"From $" in an image only
Seat / usage limitsNumbers in the table"Scales with you"
What is excluded"SSO not on Starter"Silence until sales call
Free trial / free planExplicit yes/no and length"Try it" with no terms
Last reviewed dateVisible month/yearEternal "Updated today"
CTAMatches 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

  1. List every plan name that appears in checkout, docs, emails, and ads. Collapse synonyms.
  2. Build one HTML table: plan, price, period, limits, key exclusions.
  3. Move critical limits out of hover tooltips and into visible cells.
  4. Add a "Not included" row or column so silence does not become invention.
  5. State currency and tax assumptions.
  6. Add a "Pricing last reviewed: Month Year" line; update it only when prices or packaging change.
  7. Mirror plan names in Product/Offer schema if you mark up offers — no fake AggregateRating.
  8. Ensure the table renders in raw HTML (SSR or static), not only after client JS.
  9. Ask two colleagues to write your plans from memory after a 30-second glance; fix whatever they invent.
  10. 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/pro URLs that still get retrieved — return a real redirect or 404.
  • Blocking AI crawlers on /pricing while 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.

See how your own site scores

One scan checks your homepage, robots.txt, llms.txt, About page and JSON-LD, then hands you the copy-paste fixes. Free, no account needed for the first run.

Keep reading