Platforms
WooCommerce Product Feed Errors in Merchant Center: Causes and Fixes
Why WooCommerce stores see price, availability, variant and identifier errors in Merchant Center, and how to fix them at the source.
WooCommerce gives you a lot of control, and a lot of moving parts: the theme, caching, a feed extension, an SEO plugin, currency or pricing plugins and your hosting all touch the data Google sees. Most feed errors come from two of those parts disagreeing.
This guide covers the WooCommerce-specific causes behind common Merchant Center errors and ends with a checklist. For the initial connection, see how to connect WooCommerce to Merchant Center. Extension screens change between versions, so we keep plugin steps general and point to the Google for WooCommerce documentation for current details.
Short answer: WooCommerce feed errors usually come from the page and the feed showing different data: prices added by JavaScript or cached pages, variations sent without item_group_id or with shared URLs, missing or invented identifiers, WooCommerce shipping zones that don’t match Merchant Center shipping, and duplicate or script-generated structured data. Fix the store setting causing the difference, resync, then request a website check.
Key Takeaways
- Googlebot reads the HTML your server returns, so prices and stock added by JavaScript can trigger mismatches.
- Stale cached pages can show Google old prices or stock; clear and tune caching for product pages.
- Each variation is a separate product with its own ID and URL, sharing one item_group_id (the parent).
- Store real GTINs in a product field your feed tool reads; never fill it with SKUs.
- WooCommerce shipping zones and Merchant Center shipping policies should agree for each country.
How WooCommerce data reaches Merchant Center
The official route is the Google for WooCommerce extension. Its documentation covers setup and connection, the product feed and free listings, Google’s initial review against Shopping ads policies, Performance Max campaigns, analytics and consent mode, and disconnecting. Many stores use other feed plugins, or a file or Google Sheets data source instead.
Whichever you use, Google compares three things: the product data, the landing page HTML and the structured data on that page. A WooCommerce error almost always means one of them is out of step with the others.
| Error in Merchant Center | Common WooCommerce cause | Section below |
|---|---|---|
| Mismatched price | JavaScript price display, caching, currency or pricing plugins | Prices |
| Mismatched availability | Cached pages, variation stock shown by script, sync timing | Caching |
| Variant issues | Parent product sent as a product, missing item_group_id, one URL for all variations | Variations |
| Missing or incorrect GTIN | No identifier field, or SKUs mapped into GTIN | Identifiers |
| Missing shipping | Merchant Center shipping not set for a country, currency mismatch | Shipping |
| Product page unavailable | Security or firewall rules blocking Googlebot, maintenance mode, broken permalinks | Crawling |
Prices added by JavaScript and other price mismatches
Google’s price mismatch guide says Googlebot crawls the HTML your server returns. If the price is injected with JavaScript after the page loads, that can trigger an error, because the HTML price must match exactly.
On WooCommerce, the usual culprits are:
- Variable products where the theme shows a price range and fills in the variation price only after a selection.
- Currency switcher plugins that convert prices in the browser. Your product data should use the currency prominently displayed on the page and appropriate for the target country.
- Dynamic pricing or discount plugins that change the shown price based on cart, role or quantity.
- Price display settings, such as how tax is shown, that make the page number differ from the feed number.
- Scheduled sales that start or end on the site at a different time than in the feed.
To confirm, view the page source (not the rendered page) for an affected product and compare the price there and in the structured data with the value in Merchant Center. Google’s URL Inspection Tool can show what Googlebot fetched.
For sales, submit the full price plus sale_price with sale_price_effective_date in the correct time zone. More in how to fix price mismatches and sale prices in product feeds.
Caching and stale pages
Page caching (from a plugin, your host or a CDN) is good for speed, but it can serve Googlebot a product page from hours or days ago. If stock or price changed in the meantime, Google sees a mismatch with your fresh feed. This is a general hosting issue rather than a Google rule, but it explains many availability errors on WooCommerce.
- Make sure caches are cleared for a product when its price or stock changes.
- Check whether your CDN or host caches product pages separately from your caching plugin.
- After a big price update, purge caches before the feed or extension syncs.
- Test an affected URL logged out, in a private window, to see what a visitor (and Googlebot) gets.
Google lists timing between site updates and data updates as a common cause of availability mismatches. Schedule feed updates to follow site changes. Automatic item updates (enabled by default) can correct occasional mismatches but aren’t a replacement for regular updates; Google may stop them if there are too many mismatches.
Variable products and item_group_id
A WooCommerce variable product maps to an item group in Google. According to the item_group_id specification, each variation is a separate product with its own unique id and the same item_group_id.
- Use the parent product’s SKU as
item_group_id, and don’t submit the parent as a separate product. - Give every variation a unique, stable
id, such as the variation SKU. - Send the variant attributes:
color,size,material,pattern,age_group,genderas relevant. - Give each variation a distinct landing URL, using a path or query parameters that preselect the variation on the page.
- Make sure the preselected page shows that variation’s title details, price, availability and image.
Don’t use item_group_id for products that aren’t variants, such as grouped products or sets. Google gives the example of a suit jacket and pants, or bath sets. Variant item_group_id is required for free listings and for Shopping ads targeting Brazil, France, Germany, Japan, the UK and the US.
More detail in how to manage product variants in feeds.
Identifier fields
Google asks for brand plus GTIN or MPN under its unique product identifier rules. WooCommerce stores often lack a dedicated place for GTINs, or a feed plugin maps the SKU into the GTIN field, which Google warns against.
- Store the manufacturer’s GTIN in a product field your feed tool reads, and map it to
gtin. - If a product has a GTIN but you can’t find it, leave the field blank. Don’t use internal SKUs.
- For products you make yourself, use your store name as brand and an MPN of your choice.
- For one-of-a-kind or vintage items, set
identifier_existsto false. - Never make up, guess or copy identifiers from similar products; incorrect identifiers can cause disapproval.
The full process is in how to fix missing product identifiers.
WooCommerce shipping zones vs Merchant Center shipping
WooCommerce calculates shipping at checkout from its shipping zones, methods and classes. Merchant Center needs shipping costs it can show before the click. Depending on your extension and setup, these may be synced or entered separately. Either way, compare them country by country.
| Check | Why it matters |
|---|---|
| A Merchant Center shipping policy exists for every target country | Shipping is required in countries including the US, Canada, the UK, Australia, Germany and the Netherlands |
| Costs match checkout as closely as possible | Google recommends overestimating if you can’t match exactly |
| Free-shipping thresholds match | Order value conditions (free over a set amount) are supported in Merchant Center |
| Shipping currency matches the product price currency | Items may be disapproved if no shipping service matches currency and target country |
| The cheapest option shown is real | With several options for one country, Google shows the lowest cost |
| Shipping classes map to shipping labels | Use shipping_label for products with different rates |
Details in how to configure shipping settings.
Structured data on WooCommerce pages
Google compares feed values with your structured data as well as the visible page. Google Search Central’s merchant listing structured data documentation says to put Product markup in the initial HTML; markup generated by JavaScript can make Shopping crawls less frequent and less reliable for fast-changing price and availability.
- Check whether the theme, WooCommerce and an SEO plugin all output Product markup. Several conflicting blocks make it hard to know which price Google reads.
- Make sure the offer’s price, currency and availability match the page and the feed, with one availability value per offer.
- Remove past
priceValidUntildates; Google says the listing may not display. - Test with the Rich Results Test and URL Inspection.
See how product structured data supports Shopping.
Crawling problems specific to WordPress sites
If Google can’t reach a product page, the product is disabled until it can. Google’s landing page guide lists 404s, too many redirects (keep it to two or fewer), server errors, DNS failures and robots.txt problems.
- Security and firewall plugins or host rules that block or rate-limit Googlebot.
- Maintenance or coming-soon mode left on, or switched on during updates.
- Permalink changes that break product URLs already in the feed.
- Image URLs on a CDN or subdomain that robots.txt blocks for Googlebot or Googlebot-image.
After fixing, request a website check (up to 12 hours). See how to fix product landing page errors.
WooCommerce Merchant Center checklist
Use this after setup, after plugin or theme updates, after changing caching or hosting, and before requesting a review.
Store and site
- Product prices and stock are in the HTML when the page loads.
- Product page caches clear when price or stock changes.
- Googlebot isn’t blocked by security plugins, firewalls or robots.txt.
- Return policy, contact details, shipping and privacy policies are published and linked.
- Checkout works on HTTPS with a conventional payment method.
Product data
- Each variation has its own ID and URL; the parent SKU is the item_group_id; the parent isn’t sent as a product.
- GTINs are real; SKUs aren’t mapped into GTIN.
- Sale prices include price, sale_price and effective dates.
- Only one Product markup block per page, matching the feed.
Merchant Center
- Shipping policies cover every target country and match WooCommerce zones.
- Return policy matches the store page.
- Business info matches the store.
- Needs attention reviewed with Prioritized fixes switched off.
When to get help
If errors return after every plugin update, or the cause sits between your theme, caching and feed tool, a technical review of the whole stack is usually faster than fixing products one by one.
Our WooCommerce SEO service covers the store setup behind feed errors, including structured data, caching and variation URLs. We don’t promise approval; Google decides every review.
Frequently asked questions
Why does Merchant Center see a different price than my WooCommerce page?
Googlebot reads the HTML your server returns and your structured data. Prices added by JavaScript, cached pages, currency switchers and pricing plugins can all show Google a different value than visitors see.
Should I send the parent product of a variable product?
No. Google says to use the parent SKU as item_group_id and not submit the parent as a separate product. Send each variation with its own ID and URL.
Can I use my WooCommerce SKU as the GTIN?
No. Google says not to use internal SKUs as identifiers. If a GTIN exists but you can’t find it, leave the field blank.
Do WooCommerce shipping zones automatically fix missing shipping in Merchant Center?
Not necessarily. Check that Merchant Center has a shipping policy for every target country, with costs and currency matching checkout.
Where can I find current Google for WooCommerce setup steps?
In the official Google for WooCommerce documentation on woocommerce.com, which covers setup, the product feed, reviews and campaigns.
Need help with WooCommerce feed errors?
We find where your theme, plugins, caching and feed disagree and fix the store setup behind the errors.
Sources
- WooCommerce Docs — Google for WooCommerce: Get started
- WooCommerce Docs — Google for WooCommerce documentation
- Google Merchant Center Help — How to fix: Mismatched product price
- Google Merchant Center Help — How to fix: Mismatched product availability
- Google Merchant Center Help — Automatic item updates
- Google Merchant Center Help — Item group ID [item_group_id]
- Google Merchant Center Help — About unique product identifiers
- Google Merchant Center Help — Set up shipping settings for an entire account
- Google Merchant Center Help — Free listings for products
- Google Merchant Center Help — How to fix: Product page unavailable
- Google Merchant Center Help — Image link [image_link]
- Google Merchant Center Help — Sale price [sale_price]
- Google Search Central — Merchant listing structured data
Last reviewed October 10, 2026 against the official documentation listed above. Google changes Merchant Center features and policies regularly — always confirm details in your own account.
