Feed Price Mismatch in GMC: 7 Causes and Fixes (2026)
Price mismatch between your product feed and your landing page is one of the most common causes of GMC disapprovals. Here are the 7 root causes and the fix for each.
A feed price mismatch is a GMC disapproval that fires when the price your product feed sends to Google does not match the price Google's crawler reads on the product landing page. It is one of the most common technical disapprovals after missing identifiers, and a recurring pattern we see. This guide covers the 7 root causes and gives platform-specific fixes for Shopify, WooCommerce, and custom builds.
What "price mismatch" actually means
Google calls the policy "price and availability" [1]. The check compares three values:
- The
priceattribute in your product feed - The price in the page's Product JSON-LD (
offers.price) [3] - The visible price the crawler reads from the rendered HTML
Any disagreement between these three triggers a disapproval. Note that even formatting differences cause flags: "29.99" vs "29.9" vs "29.99 USD" can all be read as mismatches by Google's strict comparison logic.
The 7 causes
1. JavaScript-only price rendering
One of the most common patterns we see. The price is rendered client-side via JavaScript, and Google's crawler either does not execute the script or executes it inconsistently, so the canonical HTML the crawler reads has no price (or a stale placeholder price). Fix: render the price in server-side HTML or in Product JSON-LD with a hard-coded value.
2. Multi-currency app interference
Shopify and WooCommerce multi-currency apps convert prices to the visitor's currency client-side. The feed sends store-base-currency prices, but the landing page displays converted prices. Google reads both, fails the equality check, and flags the SKU. Fix: use Shopify Markets (native multi-currency that updates the feed correctly) instead of third-party currency apps. For WooCommerce, configure the multilingual+multicurrency setup to send currency-matched feeds.
3. Sale price not applied consistently
The sale price runs in your store but the feed has not synced yet, or the sale ended on the site but the feed still has the sale price. Both situations trigger a mismatch. Fix: use sale_price + sale_price_effective_date in the feed and ensure those values match the on-site sale schedule exactly.
4. Decimal/currency formatting differences
Feed says "29.99", page shows "29,99" (European decimal format), or feed says "USD 29.99", page shows "$29.99". Google's parser is strict on currency and decimal formatting. Fix: standardize formatting in both the feed and on the page. Stick to "29.99" with period separator in feeds (most platforms default to this) and ensure JSON-LD uses the same value.
5. Cached page serves stale price
Cloudflare or Vercel cache serves a price from before your last update. The site reflects the new price; the cached HTML the crawler reads does not. Fix: purge cache on any product page after a price change. Configure cache invalidation hooks tied to your product-update events. For Shopify, cache invalidation is automatic. For custom builds, set up an explicit cache-purge step.
6. Tax-inclusive vs tax-exclusive mismatch
VAT countries require tax-inclusive pricing in the feed. If the feed sends ex-VAT prices and the page shows inc-VAT prices (or vice versa), the mismatch fires. Fix: for VAT regions, ensure both feed and page show tax-inclusive prices. For US/non-VAT regions, both show pre-tax prices.
7. Subscription / billing-frequency confusion
For subscription products, the feed sends the per-unit price but the landing page advertises the discounted-subscription price. Google reads the lower price and flags the higher feed price as misleading. Fix: use unit_pricing_measure and unit_pricing_base_measure in the feed, and clearly indicate subscription discount on the landing page with structured data.
How to diagnose which cause hits your store
Test each in order:
- View the page as Googlebot. In Search Console, use URL Inspection [4] → Live Test → View tested page → HTML. Search for the price. If it is missing or wrong, it is a server-side rendering or caching issue.
- Run the page through Rich Results Test [5]. Check the Product schema's
offers.pricevalue. Compare with the feed. - Test in incognito with no currency cookies. Confirm the page shows the same price the feed sends.
- Check feed sync frequency. If a sale ran for 2 hours and the feed syncs every 24 hours, expect mismatches during sale windows. Increase sync frequency or skip short sales.
Fixes by platform
Shopify
The Google & YouTube channel handles most of this correctly out of the box. Common gotchas: third-party currency converters override the channel's price logic; theme updates change schema rendering; bulk-edit imports without the price column wipe sale prices. Test after every theme update and after installing any pricing-related app.
WooCommerce
The Google Listings & Ads plugin syncs prices. If you use a third-party multilingual or multicurrency plugin (WPML, Polylang, WooCommerce Currency Switcher), confirm the plugin updates the feed price correctly for each currency. Test in an incognito session with each currency selected.
Custom builds
Render the canonical price server-side. Emit Product JSON-LD with the same value. Use a single source of truth (your database) and never compute prices in client-side code that affects the rendered output.
Preventing future mismatches
- Render prices server-side. Eliminate any client-side price logic that affects the visible value.
- Add a price-parity test to your deployment pipeline: fetch a sample of 5 product pages as Googlebot, compare with the feed, fail the deploy if any mismatch.
- Schedule feed syncs to run at least every 30 minutes during sale windows.
- Subscribe to GMC product status webhooks (or the new Merchant API Notifications sub-API) and act on price-mismatch flags within hours, not days.
- Audit installed apps quarterly. Remove currency / pricing apps you do not actively need.
Check every product for price-rendering issues
Free FeedShield audit fetches each product page as Googlebot, compares feed vs page vs schema, ranks by impact.
Run free auditBottom line
Feed price mismatch is mechanical. Google compares three numbers and flags any disagreement. These 7 root causes cover nearly every mismatch we have seen, and the fix is almost always to move price rendering server-side. Once that is in place, mismatches become rare, transient events triggered by sale-window timing rather than persistent structural problems.
Frequently asked questions
What is considered a price mismatch?
Any difference between the price your product feed sends to Google and the price Google's crawler reads on your landing page. Even a $0.01 difference or a different decimal format (29.99 vs 29.9) can trigger the flag.
Does the mismatch need to be intentional to cause a disapproval?
No. Google enforces consistency mechanically. A bug in your theme that renders the wrong price triggers the same disapproval as deliberately false pricing.
How does Google check the landing page price?
Three signals: (1) the price in <code>schema.org/Product</code> JSON-LD; (2) the price in the visible HTML extracted by their text crawler; (3) for some categories, a JS-rendered DOM snapshot. The feed price must agree with at least the first two.
How quickly does the disapproval clear after fixing the price?
Typically 24-48 hours after the next feed sync and one full Google recrawl. For high-traffic pages, the recrawl is usually within hours; for low-traffic pages, allow up to 7 days.
Why does the mismatch keep coming back after I fix it?
Recurring mismatches indicate a structural issue: a multi-currency app, a theme that re-renders prices dynamically, or a feed-tool sync schedule that lags the site. Fix the structural cause, not just the value.
Do sale prices count as a mismatch with the regular price?
No, as long as both are sent correctly. The feed should populate <code>price</code> (the strikethrough price) and <code>sale_price</code> (the discounted price) with corresponding <code>sale_price_effective_date</code>. The landing page should display both with the same date logic.
Sources and further reading
Cited inline as [1], [2] and so on.
- [1]Price and availability requirements, Google Merchant Center Help (2026-01-12)
- [2]Product data specification, Google Merchant Center Help (2026-02-15)
- [3]Schema.org Offer specification, Schema.org
- [4]URL Inspection tool, Google Search Console Help
- [5]Rich Results Test, Google
Written by
FeedShield Research TeamAggregated audit research
The FeedShield Research byline is used on articles built primarily from anonymized, aggregated data across our audit-scan history: more than 100 stores and 306 scans since launch. When you see this byline, the article reports trends pulled directly from production scans, with no individual store identified. Findings are reviewed for accuracy before publication.
Related reading
Check your store's GMC compliance
Automated checks across 27 categories. Free, no credit card.