Mismatched value (page crawl) [price]
Mismatched value (page crawl) [price] means the price on the landing page, usually in structured data, is not the price in the product data. Google requires the structured-data price to match what the shopper sees, and to match the product data. See Set up structured data for Merchant Center and the price rules in the product data specification. Automatic price updates are described in Allow Merchant Center to update product information automatically.
Shopify causes
Compare-at price is in the offer. The theme puts the crossed-out compare-at price in `offers.price` and the selling price somewhere else. Google reads `offers.price`.
An automatic discount changes the page and not the feed. A Shopify discount, a currency app, or a bundle app rewrites the JSON-LD after the Google & YouTube app has already submitted the variant price.
The JSON-LD is for a different variant. The page always emits the first variant’s price, while the URL is `?variant=` for another variant with its own price.
The currency does not match. The shop currency is USD and the offer says EUR, or the price is a bare number with no `priceCurrency`.
What to change
- View source on the variant URL and find `offers.price` and `offers.priceCurrency`.
- Set those fields to the price the shopper pays for that variant, in the shop currency. Do not put the compare-at price in `offers.price`.
- If a discount app rewrites the offer, make the feed price the same price, or stop that app from changing the structured data.
- Confirm the offer is for the variant in the query string, not always the first variant.
- Recheck after the theme change. Google recrawls on its own schedule. This app does not push a price to Merchant Center.
How PageCop detects it
The app compares the Shopify variant price and currency with the price parsed from JSON-LD or microdata on the fetched page. A difference is filed as Mismatched value (page crawl) [price], with both amounts in the evidence. A missing offer is a different issue: Missing microdata for condition. A price of zero in the catalog is filed as invalid price, which is a catalog problem rather than a page-crawl mismatch.
FAQ
Should the structured data include tax?
Use the same price basis the feed uses. Shopify variant price is what the Google & YouTube app typically submits. If the page shows a tax-inclusive price and the feed does not, they will not match. Pick one basis and use it in both places. Google’s price attribute documents which tax treatment you submit.
Does a sale price in the theme fix the feed?
Only if the offer price and the feed price are the same number the shopper pays. A sale badge that changes the HTML without changing `offers.price` still leaves the old price for the crawler.