Skip to main content
GMC Guardian GMC Guardian
EN
WARNING

Fix Google Merchant Center Price Discrepancy on Shopify

When your feed price and your product page price diverge, Google disapproves the affected items - often within hours of a price change or app install.

Estimated fix time
1-3 days
DSA channel
N/A
Last reviewed
2026-04-29
  • #price-discrepancy
  • #gmc-product-disapproval
  • #shopify-feed
  • #currency-converter
  • #price-mismatch
  • #merchant-center-fix
  • #product-data-quality
  • #feed-optimization

Price discrepancy is one of the most mechanical - and most preventable - product disapprovals in Google Merchant Center. Google’s crawler independently verifies that the price a shopper would see on your product page matches the price submitted in your feed. On Shopify, the gap between those two values can open quietly: a currency app gets installed, a sale price fails to propagate to the feed, or an automatic checkout discount applies a reduction Google was never told about. The result is a disapproval that can feel arbitrary but follows a clear, fixable logic.

What Google means by “price discrepancy”

Google’s Misrepresentation policy requires that “prices in ads and free listings must match the prices users see on your landing page and throughout checkout.” A price discrepancy is triggered when Google’s automated systems - primarily AdsBot, the dedicated Shopping crawler - detect a difference between the price [price] attribute value in your Merchant Center feed and the price rendered on the product’s landing page URL, or the price a shopper would pay at checkout.

The policy does not require a large discrepancy. A difference of a single cent - caused by a rounding mismatch between your feed export and your theme’s price formatting - is sufficient to trigger a disapproval. Google’s position is that inconsistent pricing, even when unintentional, undermines consumer trust in Shopping results.

The disapproval applies at the item level, not the account level. However, if a significant share of your catalog carries mismatched prices, Google may escalate the finding to an account-level misrepresentation flag, which requires a more involved remediation path.

Why it triggers a suspension on Shopify

Shopify’s architecture introduces several mechanisms through which feed price and page price can diverge without the merchant’s direct awareness.

Currency-converter apps. Tools that display prices in the shopper’s local currency typically work by injecting JavaScript that rewrites displayed prices after page load. If that script fires before AdsBot captures the final DOM - which happens frequently, as AdsBot does execute JavaScript - the crawled price reflects the converted value rather than the base-currency value in your feed. A feed submitting 49.00 USD and a page rendering €45.30 will register as a discrepancy regardless of intent.

Compare-at price vs. sale price confusion. Shopify’s product object exposes two price fields: price (the current selling price) and compare_at_price (the struck-through original price shown during a sale). Some feed configurations - particularly older Google & YouTube channel setups - accidentally map compare_at_price as the submitted feed price when a promotion is active. The shopper sees $35; the feed says $50; the disapproval follows.

Automatic discounts at checkout. Shopify’s automatic discount feature applies a reduction at the cart or checkout step without any visible price change on the product detail page. Google simulates checkout in some of its validation workflows. If a shopper consistently pays $40 at checkout but the PDP shows $50, that gap may be flagged as a price misrepresentation.

Delayed feed sync after a price change. When you update a product price in Shopify admin, the live page reflects the new value immediately. If your feed syncs on a fixed schedule - every 24 hours is common with default configurations - a window exists where the live price and the feed price diverge. AdsBot may crawl during that window.

Stale schema.org Product markup. If your Shopify theme or a third-party app injects <script type="application/ld+json"> with a Product schema that contains a hardcoded or cached price, that value is independently visible to Googlebot. A stale price in structured data after a price change is a less-common but confirmed cause of this disapproval.

How to detect the issue on your store

Before making any changes, confirm exactly what Google is seeing:

  1. Open Merchant Center → Products → Diagnostics. Filter by “Price discrepancy.” Note the exact item IDs and the specific prices Google reports as mismatched on each side of the gap.

  2. Use Google Search Console’s URL Inspection tool. Paste the product URL and click “Test live URL.” This renders the page as Googlebot executes it - including JavaScript modifications. Compare the price in the rendered HTML against your feed value.

  3. Inspect your schema.org markup. On the product page, view page source and search for application/ld+json. Locate the Product schema block and verify that offers.price matches both the visible Liquid-rendered price and the feed price.

  4. Simulate checkout. Add the product to a cart and proceed to the payment step without completing the order. Verify that no automatic discount, script, or app changes the price between the PDP and the checkout summary.

  5. Check the feed source record directly. In Merchant Center under Feeds, open the feed that submitted the affected item. Find the item by ID and confirm the price attribute value, including the ISO 4217 currency code suffix (e.g., 49.00 USD).

Step-by-step fix

1. Export the full affected item list. Download all price-discrepancy items from Diagnostics. Group them: are all affected items on sale? From a specific collection? Submitted by a particular feed source? The grouping typically reveals the root cause before you dig deeper.

2. Diagnose by pattern. Currency-app issues affect items with non-USD displayed prices. Compare-at errors affect all items currently on sale. Automatic-discount issues affect items where the checkout total differs from the PDP. Delayed-sync issues affect items whose price changed in the last 24-48 hours. Stale schema affects items whose theme templates render static prices.

3. Apply the fix at the source - not just the symptom.

  • Currency app: In the app’s settings, disable price conversion for Googlebot user-agents, or configure the app to serve prices only to identified human sessions. The cleaner long-term solution is to submit prices in your store’s base currency only and rely on Merchant Center’s built-in multi-currency settings for international targeting.

  • Compare-at mapping: In your feed app or Google & YouTube channel configuration, verify the price field maps to product.variants[].price, not product.variants[].compare_at_price. Update the mapping, save, and force a full feed regeneration.

  • Automatic discount: Use the sale_price [sale_price] attribute in your feed alongside the regular price. Google supports this attribute specifically to represent a discounted price that differs from the listed price, provided sale_price matches what the shopper pays at checkout.

  • Delayed sync: Reduce your feed refresh cadence to 6 hours or less. If your feed source supports webhook-triggered updates, configure it to receive Shopify’s products/update event and resync within minutes of any price change.

  • Stale schema.org markup: Locate the template outputting the Product schema - typically snippets/structured-data.liquid or a sections/ file. Update it to read price dynamically from Liquid rather than any hardcoded value:

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "{{ product.title | escape }}",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "{{ shop.currency }}",
    "price": "{{ product.selected_or_first_available_variant.price | divided_by: 100.0 }}",
    "availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
  }
}

Frequently asked questions

Frequently asked questions

How quickly does Google detect a price discrepancy?
Google's AdsBot crawls product URLs independently of your feed submission schedule - typically within 24-72 hours of a price change going live on your store. If your feed was approved and you later changed a price in Shopify without triggering a resync, AdsBot may detect the gap before your next scheduled feed refresh. A manual re-crawl request via Merchant Center Diagnostics or a forced feed upload can accelerate the check.
Does a price discrepancy affect my whole account or just specific products?
Price discrepancy is a product-level disapproval, not an account-level suspension. Only items where Google detected a price mismatch are disapproved. However, if a large proportion of your catalog is affected, Google may escalate the finding to an account-level misrepresentation flag. Check the Diagnostics tab in Merchant Center to see the exact affected item IDs before drawing conclusions about account scope.
My prices look identical - why am I still disapproved?
Several hidden factors can cause a discrepancy you cannot see with a browser check: a currency-converter app that rewrites prices in the DOM before Google's crawler captures the final render; a checkout-level automatic discount that lowers the effective price at payment; a geo-IP rule showing a different price to crawlers resolving from a US or EU datacenter; or schema.org markup containing a cached stale price that differs from the Liquid-rendered value. Use Google Search Console's URL Inspection tool to see the page exactly as Googlebot renders it.
Will fixing the price automatically reinstate the product?
No. After fixing the discrepancy, you must explicitly request a re-review. In Merchant Center, go to Products → Diagnostics, locate the price-discrepancy items, and use the Request review option. Alternatively, re-upload or re-submit your feed to trigger a fresh validation crawl. Google typically processes re-review requests within 3-5 business days, though some cases resolve faster when the fix is straightforward.
Can a Shopify currency converter app cause price discrepancy?
Yes - this is the most common trigger for Shopify merchants. Apps that display prices in the shopper's local currency via JavaScript alter what AdsBot captures if the script fires before the crawler finishes rendering the DOM. If your feed submits USD $49.00 but Google's crawler captures EUR €45.30, a discrepancy is registered. The safest fix is to disable currency conversion for the Googlebot user-agent, or to submit prices in your store's base currency and use Merchant Center's built-in currency conversion settings instead.
How do I prevent price discrepancy after future price changes on Shopify?
Trigger a feed re-submit immediately after any bulk or individual price change. If you use a third-party feed app (DataFeedWatch, Simprosys, the native Google & YouTube channel), verify it has a real-time sync mode tied to Shopify's products/update webhook. For feeds using the Merchant API v1 endpoint natively, confirm the refresh cadence is at most every 6 hours and that your Merchant Center feed schedule matches. A price-monitoring rule that alerts when the crawled price diverges from the feed price catches the gap before disapprovals accumulate.

Sources & references

Authoritative sources cited

  1. Google Merchant Center policy: Misrepresentation https://support.google.com/merchants/answer/9498378
  2. Google Merchant Center: Price [price] attribute specification https://support.google.com/merchants/answer/6324371
  3. Google Merchant Center: Fix crawl issues for your products https://support.google.com/merchants/answer/7052112
  4. Google Merchant Center: About automatic item updates https://support.google.com/merchants/answer/3246284

Get the appeal checklist for this suspension

The step-by-step remediation from this page, sent to your inbox so you can work through it while your cool-down runs. No account needed.

Or describe your case and get a human read on it