ChatGPT citing last year's pricing tier. Perplexity calling your entry plan "free" when it costs $49/month. These are not random hallucinations — they're caused by missing PriceSpecification schema. Here's the exact JSON-LD fix, with real examples from Hema's own audits.
The source priority problem
When a user asks ChatGPT "How much does Hema cost?", the model doesn't check your pricing page live. It draws on its training data — the corpus of text it was trained on, which was collected at a point in time. If your pricing changed after that collection date, the model may cite old prices. If your pricing page doesn't have structured data that makes the price machine-readable, the model has to infer it from prose — and prose is ambiguous.
"Plans start from $49" could mean $49/month, $49/year, or $49/user. Without PriceSpecification schema, AI models often guess. And they sometimes guess wrong — or cite a different page that mentioned your pricing in passing with different numbers.
The fix is not lobbying AI companies to update your information. It's making your pricing so structured and unambiguous that AI can extract it with certainty.
What PriceSpecification schema actually does
PriceSpecification is a schema.org type that wraps a price with machine-readable context: the exact price, the currency, the billing period, and any conditions. When your pricing page has this schema, AI platforms can extract "Go plan: $49 USD per month" as a structured fact — not an inference from prose.
This matters because AI models prioritise structured data over inferred data. A page with PriceSpecification schema is more likely to be cited for pricing queries than a page where the price appears only as text.
Step-by-step: adding PriceSpecification to a SaaS pricing page
For a SaaS product with multiple plans, you need one Product entity per plan, each with a nested Offer and PriceSpecification. The key fields:
- •@type: "UnitPriceSpecification"
- •price: the exact number (e.g., "49.00")
- •priceCurrency: ISO currency code (e.g., "USD")
- •billingIncrement: ISO 8601 duration (e.g., "P1M" for monthly, "P1Y" for yearly)
- •referenceQuantity: what the price covers (1 month, 1 user, etc.)
Step-by-step: adding PriceSpecification to a financial product page
For financial products — savings accounts, mortgages, insurance — use FinancialProduct as the base type. Include feesAndCommissionsSpecification as a human-readable text field alongside the structured Offer and PriceSpecification entities.
How to validate your schema
Before deploying, validate every schema block with Google's Rich Results Test and schema.org's validator. Both tools show you exactly which fields are missing, which are incorrect, and which pass validation. Zero errors is the target — warnings are acceptable but errors will reduce AI citability.
What to do when a third-party site cites your old prices
If Hema's Sources tab shows a third-party site (a comparison site, a review platform, an old press article) being cited by AI for your pricing, and that site has outdated information, you have two options:
- •Contact the site directly — request a correction. Many comparison sites and review platforms update on request, especially if you can point to a clear factual error.
- •Out-publish the outdated source — write a current, comprehensive pricing article with full PriceSpecification schema that directly targets the query the outdated source is ranking for. An authoritative, schema-rich article will, over time, displace the outdated source in AI citation data.
Both approaches work faster than waiting for AI platforms to re-train on updated data. The structural fix (schema on your own pricing page) is the most durable — it ensures that even when AI platforms crawl your page fresh, they extract the correct pricing as structured facts.
In Hema's Site Audit, the Schema & Tags module identifies missing PriceSpecification on every pricing page. Each missing field comes with a Copy Prompt — a developer-ready fix instruction you paste directly to your developer or CMS.