Google Merchant Center · Pricing & availability

    Sale Price Issues in Google Merchant Center: How to Fix Them

    Shown in Google Merchant Center: Mismatched product price (sale price)

    How do I fix a sale price mismatch in Google Merchant Center?

    Most sale price problems in Merchant Center come down to the feed and the website disagreeing about when a sale is active, which triggers a price mismatch disapproval. The fastest fix is to make sale_price and sale_price_effective_date match what the landing page and checkout actually charge, keep the full price in price, and make sure the page shows both the regular and the sale price.

    What this issue means

    When you submit a sale_price, Google expects three things to line up: the sale price in your product data, the sale price on the landing page and the price charged at checkout. If any of them disagree, Merchant Center reports a price mismatch for that item and disapproves it until it's corrected. In older accounts the same problem appears as Mismatched value (page crawl) [price].

    A second, quieter version of the problem is a sale price that's approved but never shows a strikethrough in ads. That isn't always an error. Google says it shows sale annotations only when it chooses to, based on performance, even when all requirements are met.

    Why it happens

    • Sale timing is off. The feed's sale_price_effective_date starts too early, ends too late or uses the wrong time zone, so the sale is live in one place and not the other.
    • The sale ended on the site, but the feed still sends sale_price. This is common after Black Friday or Cyber Monday when discounts are removed manually.
    • price and sale_price are reversed, or the sale price is equal to or higher than the regular price. The sale price must be lower than price.
    • The page doesn't show the regular price. Google requires landing pages to show both the original and the sale price; checkout should show only the sale price.
    • The discount is applied only at checkout (an automatic cart discount or coupon code). If shoppers need a code, it's a promotion, not a sale price.
    • Member or loyalty prices were placed in sale_price. Since July 1, 2025, Google no longer allows member prices in price or sale_price; they belong in the loyalty_program attribute.

    How to fix it

    1. Find affected items. In Merchant Center, open Products > Needs attention and filter by the price mismatch issue. Note whether the crawled price equals your regular price (the sale ended or hasn't started) or some other number.
    2. Check the landing page. Load the product in a private window. You should see the regular price struck through and the sale price displayed. Add the item to the cart and confirm checkout charges the sale price.
    3. Fix the effective dates. Use ISO 8601 with a time zone offset and a slash between start and end, for example 2026-11-27T00:00-0500/2026-12-01T23:59-0500. Make sure the end time matches the moment your site actually reverts the price.
    4. Fix it on your platform.
      • Shopify (Google & YouTube app): The app sends Shopify's compare-at price as price and the current price as sale_price. To end a sale, remove the compare-at price (or reset the price) in Shopify; the app resyncs. Because Shopify doesn't send an effective date, the sale lasts as long as the compare-at price exists, so scheduled price apps must update Shopify itself, not just the storefront display.
      • WooCommerce: Use WooCommerce's scheduled sale dates on the product. Google for WooCommerce and most feed plugins pass them through, but confirm your plugin maps WooCommerce's schedule to sale_price_effective_date and that the store time zone in WooCommerce settings is correct.
      • Feed files and spreadsheets: Add or correct the sale_price_effective_date column. Use a supplemental data source to add dates without touching the main feed.
    5. Remove coupons and member prices from sale_price. Run code-based discounts as Merchant Center promotions instead, and use loyalty_program for member pricing.
    6. Use attribute rules for quick bulk fixes. If a whole sale needs to end early, an attribute rule in your data source settings can clear sale_price for a set of products until the source data is corrected.
    7. Request a website check once the page and feed agree.

    How long until it's fixed

    Google re-crawls disapproved items over the next few hours or days. A requested website check can take up to 12 hours. Once your data source is updated, expect corrected items to return within roughly one to three days. If your sale is only running for a weekend, it's often better to get the dates right before launch than to chase disapprovals during it.

    How to prevent it

    • Plan sales in the feed, not just on the storefront. Always set an end date.
    • Update your data source at the moment a sale starts and ends; schedule an extra fetch if needed.
    • Don't run sitewide sales through cart-level discounts if you want strikethrough prices in Shopping.
    • After major promotions, spot-check the feed for leftover sale_price values.
    • Test sale pages with the Rich Results Test so structured data shows the sale price, not the regular one.

    For deeper feed hygiene, see our guide to product feed optimization, or let Mercantads set up and monitor your promotional pricing. Book a feed audit.

    Fix it yourself or have us fix it

    Do it yourselfMercantads does it for you
    Find the causeFollow the steps on this pageWe audit your feed, store and account
    Make the fixEdit products, feed rules or site pages yourselfWe fix it, in bulk where possible
    ReviewsRequest the review and waitWe prepare and submit the review for you
    After it's fixedWatch for it to come backOngoing feed monitoring so it doesn't
    Talk to us
    FAQ

    Frequently Asked Questions

    If the product is approved and the data is correct, Google may simply be choosing not to show the annotation. Sale price annotations appear only some of the time, so check that the page displays both prices and leave it running.

    No. If shoppers need a code, the sale price isn't available to everyone and will cause mismatches. Set it up as a promotion in Merchant Center instead.

    Use the offset that matches when your website actually changes the price, typically your store's local time zone. A mismatch of even a few hours can trigger disapprovals at the start or end of a sale.

    Yes. price should always contain the full, non-sale price, and saleprice contains the discounted amount.

    Sale Price Issues in Google Merchant Center: How to Fix Them

    Tell us what Google Merchant Center is showing. We'll find the cause and fix it, so your products and ads get back to selling.