What it checks
First we decide whether the page is a product or pricing page: its path (/pricing, /plans, /products, /shop, /buy and similar), Product or Offer structured data, or two or more prices in the text. If it is not, the check passes and says so. If it is, we read every Product, SoftwareApplication, Service, Offer and AggregateOffer node in the JSON-LD and look for a price, a priceCurrency and an availability, and we confirm the page text itself is readable without JavaScript.
Why it matters for search engines
Google's product rich results and merchant listings are built from the same Offer fields; a pricing page without them is a plain blue link next to competitors that show a price in the results.
Why it matters for AI assistants
Shopping and buying agents read offers as data, not from a rendered layout. A price that exists only in a styled table, or only after a script runs, is invisible to them; a complete Offer in the HTML the server sends is something they can compare, quote and act on.
How to fix it
Add a JSON-LD Product (or SoftwareApplication) with an Offer: price as a number, priceCurrency as an ISO code, availability as a schema.org ItemAvailability URL (InStock, PreOrder and so on), and keep the page's text in the server-sent HTML. One block per plan on a pricing page.
{"@type": "Offer", "price": "29", "priceCurrency": "USD", "availability": "https://schema.org/InStock"}What quietwatch reports
ok on a non-commerce page ("nothing to check") and on a commerce page whose Offer carries price, currency and availability in readable HTML. warn when offer data exists but a field is missing or the page is not readable without JavaScript. fail when the page looks like a product or pricing page and has no Product or Offer data at all. unknown when the page could not be fetched.