The symptom
- Rich Results Test warns *Missing field "price"* or *"priceCurrency"* under Offers.
- Variable products, "Call for price" products or B2B stores with hidden prices.
- Products with a price on screen but
price: ""in the JSON-LD.
Why it matters
Price is what makes a product answer a shopping question. Google requires price and priceCurrency for merchant listings; AI assistants filter products they cannot price.
WooCommerce leaves the price empty when: the product has no regular price set, prices are hidden for guests (B2B plugins), variable products have no default variation, or a currency-switcher plugin writes the price after page load via JavaScript that crawlers do not run.
How to check it yourself
- Rich Results Test → Product → Offers: look for
priceandpriceCurrencywith real values. - Compare with a variable product and a simple product; the difference usually reveals the cause.
- Check whether the price appears in the raw HTML (View source), not just in the rendered page.
How to fix it
- Set a regular price on every published product; unpublish or mark *Call for price* products with
Offeromitted rather than empty. - For variable products, output an
AggregateOfferwithlowPrice,highPrice,priceCurrencyandofferCount— Rank Math and Yoast WooCommerce SEO do this automatically. - If prices are hidden for guests, expose the schema price anyway (crawlers are guests) or accept that AI/Shopping visibility is off for that catalogue.
- Make currency-switcher plugins render the default currency server-side; schema must contain a static price in the store’s base currency.