Google Merchant Center

Google Merchant Center Price Accuracy Policy: Fix Price Disapprovals Fast

Price mismatch is the single most common reason products get disapproved in Google Merchant Center. Here is how Google detects it, why it happens, and how to fix it permanently.

Why Price Accuracy Is Google's #1 Disapproval Reason

When a shopper clicks a Shopping ad, they expect the price on the landing page to match exactly what they saw in the ad. Google enforces this with automated price accuracy checks because a mismatch creates a poor user experience: the shopper feels misled, and Google's credibility as a comparison tool suffers alongside yours.

According to Google's own policy documentation, the price in your product feed must match the price a customer sees when they land on your product page. This check runs continuously. Google's crawlers do not just look at your feed at submission time. They visit your landing pages on an ongoing basis and compare the live page price against the feed value. Any discrepancy, even a single cent, can trigger a disapproval.

Price accuracy disapprovals account for more suspended Shopping campaigns than any other policy violation. Unlike image violations or title issues, price problems can cascade: one feed with widespread mismatches can lead to account-level suspension, not just individual item disapprovals.

The core rule

The price in your price [price] attribute must match the price displayed to a logged-out visitor on your product landing page, in the same currency and for the same item. No exceptions.

How Google's Automated Crawlers Detect Price Discrepancies

Google runs a crawler specifically designed to verify product data accuracy across Merchant Center feeds. This crawler visits your landing page URLs (the link [link] attribute in your feed), extracts the price from the page, and compares it to the price in your feed submission.

The crawler extracts price data in two ways. First, it reads structured data markup on your page, specifically Schema.org Product and Offer markup. If your landing page includes priceSpecification or price properties in JSON-LD or microdata format, the crawler reads those values directly. Second, if no structured data is present, the crawler uses visual parsing to identify price elements from the page HTML. Both methods are active, and if structured data and visual price differ, Google flags the inconsistency.

Crawl frequency depends on how often your prices change and how many items you have in your feed. High-velocity feeds with frequent price changes are crawled more often. If your prices update daily during flash sales, Google may crawl your landing pages multiple times per day on the affected items.

When a mismatch is detected, Google first logs it internally. If the mismatch is small (under a defined threshold) or very recent, the system waits before issuing a disapproval. Persistent or large mismatches trigger immediate item disapproval with the reason "Price mismatch" in the Diagnostics tab of Merchant Center.

Common Causes of Price Mismatches

Sale price not updated in the feed

You run a weekend sale and lower the price on your website, but your feed still shows the regular price. Google crawls the page, sees the sale price, and flags the mismatch. The fix is to use the sale_price [sale_price] attribute in your feed and schedule it with sale_price_effective_date [sale_price_effective_date]. Never change the price on your site without updating the feed simultaneously.

Shipping included in feed price but shown separately on the landing page

Your feed shows a product at 45.00 EUR with free shipping included in that number. Your landing page shows the product at 38.00 EUR plus 7.00 EUR shipping. Google sees 45.00 EUR in the feed and 38.00 EUR on the page and flags a mismatch, even though the customer ultimately pays the same total. The rule is that the price [price] attribute must match the standalone product price on the page before shipping is added. Use the shipping [shipping] attribute in your feed to declare shipping costs separately.

Currency conversion errors

If your store is configured for multiple currencies but your feed submits prices in a single currency, currency rounding can create mismatches. A product priced at 9.99 USD converted to 9.24 EUR in the feed may display as 9.25 EUR on the landing page after your store's rounding logic runs. Submit separate feeds per currency or use Google's currency conversion settings with explicit rounding rules.

Different prices for logged-in vs logged-out users

Google's crawler visits your pages as a logged-out user. If your store shows a lower member price or a loyalty discount to logged-in customers, the crawler sees the higher public price. If your feed contains the lower member price, Google flags it as a mismatch. Your feed must always contain the price visible to a logged-out visitor with no active promotions applied. Use Google's promotion feed separately to communicate discounts.

Feed cache lag

Many feed generation tools cache product data for performance. If your cache refreshes every 24 hours but you run a flash sale that starts at midnight, your feed may show the pre-sale price for up to 24 hours while your landing page already shows the discounted price. Configure your feed cache to refresh within 1-2 hours of any price change, or trigger a manual feed re-fetch from the Merchant Center Feeds tab when running time-sensitive promotions.

Quick diagnostic

In Merchant Center, go to Diagnostics > Item issues and filter by "Price mismatch." Click any affected item and use the "Test" button to see exactly what price Google's crawler last read from your landing page versus what your feed contains.

How to Fix Price Issues Using the price and sale_price Attributes Correctly

The price [price] attribute is the base price of your product. It must match the price a logged-out shopper sees on your landing page before any promotions or discounts. Always include the currency code (e.g., 29.99 EUR or 29.99 USD). Never include tax in the price for markets where prices are displayed tax-exclusive (most of Europe should include VAT; the US should not).

The sale_price [sale_price] attribute is the discounted price during a promotion. When both price and sale_price are present, Google shows the sale price in the Shopping ad with a strikethrough of the original price. This is more effective for CTR and avoids the mismatch issue from manually changing the price attribute during a sale. Pair it with sale_price_effective_date to schedule the discount window: Google activates and deactivates the sale price automatically.

AttributePurposeWhen to use
price [price]Base product priceAlways required
sale_price [sale_price]Discounted price during a saleWhenever running a price promotion
sale_price_effective_dateStart and end date for the saleRecommended with sale_price to auto-schedule
shipping [shipping]Shipping cost declarationWhen shipping is charged separately

Automatic Item Updates: Turn It On

Automatic Item Updates is a Merchant Center setting that lets Google overwrite certain feed attributes using data crawled directly from your landing pages. For price and availability, it acts as a real-time correction layer: if your feed price is out of date, Google reads your landing page price and updates the item before serving the ad.

To enable it: in Merchant Center, go to Settings > Automatic improvements > Automatic item updates. Toggle on "Price" and "Availability." Once enabled, Google will use your landing page's structured data or parsed price as the source of truth when the feed value is stale.

This does not replace accurate feed management. Google tracks how often automatic corrections are needed. If the correction rate is high (many items require overrides frequently), Google treats the feed as unreliable and may reduce your impression share or restrict the account. Automatic Item Updates buys you time during edge cases, not a permanent shortcut.

For automatic updates to work reliably, your landing pages must have proper structured data markup. Add Schema.org Product and Offer JSON-LD to every product page with accurate price, priceCurrency, and availability values. Without structured data, the crawler relies on visual parsing, which is less precise and more prone to false reads on pages with complex layouts.

The 72-Hour Grace Period for Price Changes

Google allows a 72-hour propagation window for price changes. If you update the price on your landing page but have not yet submitted an updated feed, Google will not immediately disapprove the item. The 72-hour clock starts from the moment the landing page price changes.

In practice, this means: if you lower a price at 9am on Monday, your updated feed must be submitted and processed by 9am on Thursday. If your feed refreshes daily, you have three full refresh cycles to capture the change. If your feed refreshes weekly, the 72-hour window is not sufficient and items will be disapproved before your next scheduled feed update.

For stores with frequent price changes, daily feed refreshes are the minimum. For stores running flash sales or dynamic pricing, use the Content API for Shopping (the programmatic feed submission method) to push price updates within minutes of a change. The Content API has no rate limit on price-only updates and is the right tool for any business where prices change faster than a once-daily feed cycle allows.

How to Use URL Inspection to Force a Recrawl After a Price Change

If you have corrected a price mismatch and want Google to verify the fix immediately rather than waiting for the next scheduled crawl cycle, you can trigger a manual recrawl using the URL inspection tool in Google Search Console.

Go to Google Search Console, enter the product landing page URL in the search bar at the top, and click "Request indexing" once the inspection result loads. This tells Google's crawlers to revisit the page on a priority basis. The request joins a queue, and for most sites the recrawl happens within a few hours.

After the recrawl, return to Merchant Center Diagnostics and check whether the item disapproval has cleared. If the feed has also been updated and the prices now match, the disapproval should resolve within 24 hours of the recrawl completing. If the disapproval persists, use the Merchant Center item test tool to confirm what price Google is reading from your page and compare it against your feed value character by character, including currency codes and decimal precision.

Summary checklist

  • Use sale_price and sale_price_effective_date for all promotions. Never change the base price attribute during a sale.
  • Keep feed refresh rate at daily minimum. Use Content API for dynamic pricing.
  • Enable Automatic Item Updates in Merchant Center Settings as a safety net.
  • Add Schema.org Product/Offer structured data to every product page.
  • Use URL Inspection in Search Console to force a recrawl after fixing a mismatch.
  • Match the public (logged-out) price exactly, before shipping, in the correct currency.

Frequently Asked Questions

How quickly does Google detect a price mismatch?

Google's automated crawlers can detect a price mismatch within hours of your landing page changing. The feed price is compared against the crawled landing page price on an ongoing basis. If the mismatch persists beyond 72 hours, the item is disapproved and removed from Shopping results until the data matches.

What is the 72-hour grace period for price changes?

Google allows a 72-hour window for price changes to propagate from your landing page to your feed. After that window, the feed price must match the landing page price or the item will be disapproved. Automatic Item Updates reduces the risk by letting Google correct the price directly from your page during this window.

Does Automatic Item Updates fix all price disapprovals?

Automatic Item Updates corrects price and availability mismatches by reading your landing page data and overriding stale feed values. It resolves the disapproval symptom but not the underlying feed accuracy problem. If too many items require automatic correction, Google may flag the feed as unreliable and limit your impressions. Use it as a safety net while fixing your feed update process.

Still getting price disapprovals?

Run a free GMC scan to see every price mismatch, policy violation, and feed error across your account in one report.

Run Free GMC Scan