Price Mismatch Between Schema and Page: How to Fix It
Google compares Product schema prices against visible page prices. Here's why they diverge and how to keep them in sync.
Invalid schema breaks your Shopping feed connection.
FeedShield catches issues like this automatically. Run a free audit before it costs you.
The Three-Way Price Consistency Rule
For Google Shopping compliance, your product price must be consistent in three places simultaneously:
- •Your product feed (price attribute)
- •Your product page (the visible price the user sees)
- •Your Product schema markup (offers.price)
If any one differs from the others, Google flags it as a mismatch. The feed vs. page mismatch causes a feed disapproval. The schema vs. page mismatch triggers a structured data warning in Search Console.
Why Schema Prices Go Out of Sync
Hardcoded prices in theme templates — Some older theme setups hardcode prices in the JSON-LD block rather than pulling them dynamically from the product data. When the price changes, the schema doesn't update.
Caching issues — A full-page cache serves an old version of the page (with the old price) while the database has the new price. Google may crawl during the cache window.
Sale price logic errors — A sale price is active on the website but the schema still reflects the original price. Or vice versa: schema shows the sale price after the sale has ended.
Currency display vs. schema value — The visible price is formatted with a currency symbol. The schema price should be a numeric string without the currency symbol (the currency goes in priceCurrency separately).
How to Verify Your Schema Price
- •Open a product page in Chrome
- •Right-click > View Page Source
- •Search for "application/ld+json"
- •Find the price value in the JSON and compare to the visible page price
Alternatively, paste your URL into Google's Rich Results Test and check the extracted price value.
Fix for Dynamic Platforms
For Shopify: edit product.liquid or your schema snippet to use the Liquid variable that outputs the current product price — not a hardcoded value.
For WooCommerce with Yoast/RankMath: these plugins pull price from the WooCommerce product object dynamically. Verify they're active and not being overridden by another plugin.