Google takes the price it shows from the structured data (JSON-LD) in your product page, or from your Merchant Center feed, not straight from WooCommerce. If Google still shows the old price, either it hasn’t crawled the page again yet, or your site is still serving the old price to Google, usually from a page cache or from a plugin that changes the price customers see but not the one in the code. When the feed says one price and the page says another, Merchant Center marks the product “Mismatched product price” and can stop showing it.
This page is about the price itself. If you have other disapprovals (GTIN, images, taxes), see our guide to disapproved products in Google Merchant Center.
Why it happens
- Page cache or CDN. WP Rocket, LiteSpeed Cache, Cloudflare or your host’s cache keeps a copy of the product page. Clicking “Update” on a product usually clears that page, but many price changes don’t go through that button: a scheduled sale that starts or ends, a CSV import, an ERP or stock sync, a bulk edit done in the database. The cache keeps serving the old HTML, with the old price inside.
- Google hasn’t crawled the page again. If the page already shows the new price, the delay is Google’s. There is no WooCommerce setting that makes Google re-crawl thousands of products faster.
- A plugin that changes only what you see. Some pricing, discount or role-based price plugins change the price on screen (sometimes with JavaScript after the page loads), while the JSON-LD still has the stored price. Google reads the JSON-LD.
- Two
Productblocks. WooCommerce writes its own structured data and an SEO plugin (Yoast, Rank Math) or the theme writes another one. If they disagree, Google may pick the wrong one. - Variable products. WooCommerce describes a variable product with one price range (an
AggregateOfferwith a low and a high price), not one price per variation. In a 2025 support thread, Merchant Center kept reading the lowest variation price (8.00) for variations that cost more, even with caching off for product pages. - Tax or currency on the page. If the page shows prices with tax and the feed sends them without (or the other way round), or a currency switcher shows Googlebot a converted price, the numbers never match.
How to check it yourself
- Pick one product whose price you changed and that Google still shows wrong. Note the price in Products > Edit product.
- Look at what Google gets. Open Google’s Rich Results Test, paste the product URL and open the Product item. Look at
offers>price.- New price there: your site is fine, Google just hasn’t refreshed. Go to step 5.
- Old price there: your site is serving the old data. Go on to step 3.
- Compare with a fresh copy. Open the page in a private window and add
?nocache=1to the URL (most caches treat a new query string as a new page). Then right-click > View page source and search for"price". If this copy has the new price and the Rich Results Test had the old one, it’s the cache. - Count the
Productblocks. In the same source, search forapplication/ld+json. If you find two blocks with"@type": "Product"and different prices, you have two plugins writing structured data. - Look in Merchant Center. Go to Products, open the product and read the issue: it compares the price in your feed with the one Google crawled. If the feed has the old price, the problem is your feed plugin, not the page. If the crawled value is always your cheapest variation, it’s the price range of a variable product.
How to fix it
If it’s the cache:
- Clear everything: your cache plugin (in WP Rocket, Clear and preload cache; in LiteSpeed Cache, Purge All), your host’s cache from its panel, and the CDN (in Cloudflare, Caching > Configuration > Purge Everything).
- Run the Rich Results Test again until it shows the new price.
- Make sure future changes clear the product page too: check that your cache plugin purges a product when its stock or price changes, clear the cache after each import, and keep the cache lifetime at 24 hours or less.
If it’s a pricing plugin: turn it off for a moment and test again. If the JSON-LD and the screen now agree, ask its author whether it can apply its price to the structured data, or use WooCommerce’s own sale price field instead.
If there are two Product blocks: keep one. Turn off the product schema in your SEO plugin or your theme, or use the SEO plugin’s and remove WooCommerce’s, but not both.
If it’s a variable product: make sure each variation in your feed links to its own variation URL (the one with the attributes selected), so the page shows that variation’s price. If Google still reads the range, an SEO plugin that writes one offer per variation (Yoast WooCommerce SEO outputs a ProductGroup, for example) gives Google each price. WooCommerce core doesn’t do it.
If it’s tax or currency: in WooCommerce > Settings > Tax, check “Display prices in the shop” and send the feed the same way. If you use a currency switcher by location, make it show the store’s base currency to visitors it can’t place.
Then tell Google:
- Merchant Center. Googlebot re-crawls disapproved products by itself within a few hours or days. To speed it up, open the issue and request a review of the website. Also check that automatic updates are on in Products > Automations: with them, Google updates the price from your page while you fix the feed. Google advises against them for price if your pages show more than one crossed-out price.
- Search results. In Search Console, use URL inspection on your best-selling products and click Request indexing. Google allows only a few requests a day and doesn’t publish the limit, so save them for the products that sell. For the rest, make sure your sitemap is up to date: Google will re-crawl them over the following days or weeks.
How to stop it from happening again
The hard part is that the price looks right in your admin and on your screen, so nobody notices until Google rejects the product or a customer complains. Melopo Radar reads the published page of your 20 best-selling simple products every day, takes the price and availability from its structured data, and compares them with what your store has saved. If they differ, it flags the product as critical, with both prices and the page URL, and tells you to clear the cache and check your pricing plugins. Be aware of its limits: it doesn’t check variable products or products outside those 20, it visits as Radar and not as Googlebot (so a cache that treats bots differently can slip through), it doesn’t read your feed, and it only compares prices when your tax display setting lets it compare like with like. This check is in the Google Shopping & Feeds add-on (7 USD a month, included in the Agency plan and in the 14-day free Pro trial). If you’d rather check by hand, the Rich Results Test above is free.
FAQ
How long does Google take to show the new price? In Merchant Center, a few hours to a few days after Googlebot re-crawls the page. In normal search results it can take days or weeks, depending on how often Google visits your pages.
Can I force Google to update thousands of prices at once? Not from WooCommerce. Fix what your site serves, keep your sitemap and feed up to date, and request indexing only for your key products. Google refreshes the rest on its own schedule.
Why does Merchant Center show my cheapest variation’s price? Because WooCommerce describes a variable product with a single price range, and Google may read the lowest price for every variation. Link each variation to its own URL in the feed, or use an SEO plugin that writes one price per variation.
Will a price mismatch suspend my Merchant Center account? It can. Google first disapproves the products, but repeated mismatches can lead to an account suspension, so fix them as soon as you see them.


