What the error means
Google fetches every product landing page and compares the price it finds against the feed value. Any difference — a stale sale price, a currency rounding artifact, a page showing a different variant’s price — is a mismatched price, and it draws preemptive disapproval: the item is pulled before it can mislead anyone.
Why Google rejects it
Shopping is a price-comparison surface. If the listed price turns out to be wrong at click time, the shopper was misled and Google paid for a bad experience. That is why enforcement is preemptive: the mismatch does not need to be proven harmful to get the item pulled.
How to fix it
- Schedule feed updates to coincide with store updates — the time between your price change and the feed re-fetch is the mismatch window.
- Turn on automatic item updates in Merchant Center for minor corrections, and clear your page cache so crawlers see current prices.
- Never use IP geolocation to change displayed prices — crawlers get a different region’s price than the feed declares.
- Check structured data too: the JSON-LD price on the page must agree with both the feed and the visible price.
- Fix the pattern, not the product: stale sale prices and rounding usually come from one source — an expired promotion or a conversion setting.
Common causes
Expired or scheduled sales
The sale ended on the site but the feed still sends the sale price, or a scheduled sale started before the feed refreshed. Any sale without matching start and end dates in the feed is a mismatch waiting to happen.
Currency and tax differences
The page shows a price converted to the visitor's currency or including tax, while the feed sends the base currency or a pre-tax price. Google compares like with like for the target country, so the page must show the feed's price for that country.
Variant price on the page is not the feed item's price
The page opens on the cheapest variant while the feed item is a larger size. Link each feed item to its variant URL so the page loads with the matching variant selected.
Structured data price is stale
The visible price updated but the JSON-LD price is cached, hard-coded in a template, or written by an app that did not refresh. Google reads both and flags the disagreement.
Geolocation or login pricing
Prices that change by visitor IP, customer group or membership mean Googlebot sees a different price than the feed declares. Crawlers do not log in and may not come from the country you target.
Fix it on your platform
On Shopify
- Check Markets settings: if a market shows prices in local currency, make sure the feed for that country uses the same currency and rounding rules.
- Make sure each feed item links to the variant URL (with ?variant=ID) so the page loads that variant's price.
- View source on a product and compare the "price" in the JSON-LD with the visible price and the feed. If they differ, the theme's schema snippet or an app is the source.
- Avoid automatic currency conversion apps that change the price after the page loads for the country you advertise in.
On WooCommerce
- Set sale price schedules on the product and confirm your feed plugin sends sale_price_effective_date, or drops the sale price when the schedule ends.
- Check WooCommerce > Settings > Tax: "Display prices in the shop" must match what your feed sends for countries where prices include tax.
- Purge the page cache after price changes; a cached page is the most common cause of stale visible prices.
- Make sure the SEO plugin's Product schema uses the current price, including the sale price when a sale is active.
On other platforms
- Send sale prices with effective dates so the feed and the site switch at the same moment.
- Show the same price, currency and tax treatment on the page that the feed sends for each target country.
- Do not change displayed prices by IP address for the countries you advertise in.
How to confirm it is fixed
- Open the landing page URL from Merchant Center in a private window and compare the visible price, the JSON-LD price and the feed price for the same variant.
- Run the price check to find other products whose prices disagree across the catalogue and the page.
- After fixing, trigger a feed fetch in Merchant Center rather than waiting for the next scheduled one.
- Check the item again after Google recrawls the page; the disapproval stays until both sides have been checked.
Questions
How exact does the price have to be for Google Shopping?
Why does Google see a different price than I do?
Do sale prices cause price mismatch errors?
Can automatic item updates fix price mismatches?
Does structured data price matter if the visible price is correct?
Shipwork reads prices from your public catalogue and your product pages, and reports every product whose price is missing, zero, or disagrees across surfaces. Free, no account, no signup. Paste your store address.
Check my store for Mismatched priceGo deeper: Feed vs page mismatch, explained
Other errors like this