Inaccurate availability status - Google Merchant Center

Topic summary

A merchant’s Google Merchant Center account was suspended due to “Inaccurate availability status” errors, where feed data and landing page availability don’t match. The issue centers on products with zero inventory that allow backorders—Shopify’s systems incorrectly label these as “in_stock” instead of “backorder.”

Root Cause Identified:

  • Shopify’s product | structured_data filter returns “InStock” even when inventory is zero
  • The Shopify Google & YouTube App sends incorrect “IN_STOCK” status to both the product page JSON and Merchant Center feed
  • Schema.org recently introduced “BackOrder” status, but Shopify hasn’t updated their systems to support it

Attempted Solutions:

  • Manually editing the LD+JSON in theme files (main-product, featured-product liquid files) to show “BackOrder”
  • Using third-party apps like Multifeeds to override availability values
  • Creating supplemental feeds or custom feeds to bypass the Google & YouTube App

Current Status:

  • Google Support acknowledged a crawler error and initiated a fix (24-48 hour timeframe mentioned)
  • However, structural issues remain: even with corrected webpage data, Google’s web crawler may still detect “InStock” due to Shopify’s underlying code
  • The discrepancy causes customer confusion and lost sales when Google Shopping shows items as available that are actually on backorder

Workarounds Discussed:

  • Disable automatic availability updates in Merchant Center
  • Use custom structured data scripts
  • Replace the Google & YouTube App entirely with custom feed solutions
Summarized with AI on October 27. AI used: claude-sonnet-4-5-20250929.

Hi, so for a few months we have been using Merchant Center and the Shopify Content API to list our products on Google Shopping but this week our account is now off and Google are saying “Inaccurate availability status (due to inconsistent availability status between the feed and the landing page)” as we have a mix of in stock products and pre-orders.

We have tried editing the fields and attributes but as its controlled by Shopify automatically nothing seems to work so just seeing if anyone has any suggestions on how to fix this or ways round the issue as its been fine before and only flagged in the last couple of days.

Thanks

2 Likes

Hi @Orange234

Go to Google Merchant Center > go to settings and make sure automatic updates are turned on for availability so the item availability will be synced up.

For items that are preorders and not for sale yet, set availability=preorder and set availability_date = the date where the products will be on sale.

You can also check my videos for more details.

Google Merchant Incorrect Price and Availability

https://www.youtube.com/watch?v=dAkXPmt70js

Google Merchant Setting Availability Dates

https://www.youtube.com/watch?v=bOOf137agbs

Hope this helps.

Cheers,

Clarice

For items that are pre-order, make sure they are new items you have never sold before. If they are items you have already sold, then this is not a pre-order but a backorder.

Also make sure that your structured data is updated. Check the product landing page using: https://search.google.com/test/rich-results

So if an item is in stock, make sure it also says in stock in the structured data.

So there are 3 places where you need to match the info

  • Website Visually
  • Website Structured Data
  • Google Merchant Center submitted info

We have the same problem. It boils down to the Shopify Google & YouTube App sending the wrong availability to both the product page JSON data and the Google Merchants feed. If a product is not in stock, but available to backorder, both the feed and the JSON are displaying as in_stock, instead of BackOrder.

We have tried adding an extra metafield to our product data to fix this, but the metafield doesn’t fix the JSON data on the webpage, and it causes a duplicate “availability” field in the product feed. The one we added says “backorder” and the one Shopify provided says “IN_STOCK”.

We still haven’t been able to find out how to fix it, other than turning off the Google & YouTube App, and providing our own data feed. The problem with this, is that it’s harder to set up, especially if you want to target multiple markets.

My recommendation use a app such as multifeeds, where you can setup custom availability based on rules: https://apps.shopify.com/multiple-google-shopping-feeds

Then customize my structured data to do the same: https://www.youtube.com/watch?v=CWCgFWBp7RY

Yeah, I was looking at that. There is another SEO app that allows you to do the same thing, llana’s something or other. My main issue with doing that is that we already spend far too much on Shopify Apps. It’s like you need to “subscribe” for the rest of your life just to get access to one small tweak in the code. It tends to get expensive just solving things that Shopify should have had covered anyway.

I know, however my structured data script is free.

With regards to the feed, you could in theory create your own private app, but not sure if developing it and maintaining the app will become more expensive. A long time ago, around 2020, I had my own app, but the stress, work, and maintenance for this forced me to stop it, and now I only focus on helping merchant account management.

We have over 10,000 items, so the Multifeeds app is over $25.00 per month, just to be able to override an incorrect value in Shopify’s JSON and Google feed. The other app is $400.00 a year. I need to look into the apps some more to see if I think we can benefit in other ways from them. So far, every app we have installed has been just to make a few changes that that Shopify hasn’t catered for.

I toyed around with adding the http://schema.org/Product itemscope info in the product pages, but then you get two versions of the data when you use the Rich Results Test Tool. It also, probably wouldn’t correct the data in the Shopify Google and YouTube App feed.

Just a small update. We found where the JSON page is being generated in the product pages liquid file. It’s generated by a Shopify filter thus → “product | structured_data”, and we verified that this filter is what is returning the wrong availability. It returns “http://schema.org/InStock” even when inventory is zero.

Once we had this worked out, it was easy enough to replace the incorrect value to “http://schema.org/BackOrder” when stock is zero.

This partially solved the problem.

Using Google Rich Results Checker, the checker now says that the product snippet is returning BackOrder. All good so far.

However,

  • The Google & Youtube App is still sending “IN_STOCK” to Merchant Centre in the feed

  • When Google crawls the page, it is still saying that the page says the product is “In Stock”

The page clearly states that the item is “Backorder”. We even tried making it say “Out Of Stock”.

The LD+JSON of the page is definitely returning http://schema.org/BackOrder, which is verified by Rich Text Checking Tool, and I checked it visually in the page source.

I can’t work out how the Google checking tool says it sees BackOrder, whilst the web crawl used by Merchant centre sees “In Stock”.

I expect the Google & Youtube App is getting it’s availability from the same faulty Shopify filter (product | structured_data) that was sending the wrong availability to LD+JSON in the page source.

It would be easy enough to just create our own feed with the correct availability, and turn off the Google & YouTube App, but I’m still worried about the Google Merchant Centre Web Crawl seeing the wrong value on the page.

As you are already using Multifeeds, just use that as your primary feed, no need to overwrite google and youtube feed.

As you can setup the multifeed to use any data, setup any rule.

We don’t use Multifeeds. It doesn’t cater for more than 10,000 products. We already know how to get the correct availability into the Merchant Centre feed, but as I said, the main worry is that Merchant Centre Web Crawl is seeing the wrong information on the page. We are trying to work out why this is happening. Forking out for yet another App is not going to correct that.

Also, there is an error in the Shopify product | structured_data filter. That may be related to why the Merchant Centre Web Crawl is getting the wrong info, or it may not. But since both Shopify and Google don’t like to fix their errors, it’s virtually impossible to let either of them know about the problem.

I have clients with over 300,000 products, no issues using multifeeds.

If you don’t want to use apps, then use my free structured data script, and modify it to your specific needs.

And remove the Shopify supplied structured data.

From Google’s perspective it’s not an issue they can fix, as it is related to the info in the website’s structured data.

And I’m guessing from Shopify’s perspective as there are so many unique situations, that catering to every single requirement, would be very difficult, in these cases, using your own coding is better suited.

Just my feedback, if you want to fix the issue.

Hi,

Ok, maybe I’m not quite getting what you mean by “multifeeds”. i thought you were referring to this app in your earlier post …

"My recommendation use a app such as multifeeds, where you can setup custom availability based on rules: https://apps.shopify.com/multiple-google-shopping-feeds"

Which, when I checked it in the store, it says it caters for up to 10,000 products.

If you just mean, having multiple feeds, that’s not an issue. We already have a feed ready to go. I was trying the Google & YouTube app because i thought that Shopify would have had this all figured out.

The issue is that the Shopify store is returning the wrong availability, somewhere in the page, and it’s read by google merchants store Web Page Crawler.

You mentioned in the previous post “And remove the Shopify supplied structured data.” This is exactly what I would like to do. But how?

We have already modified the LD+JSON product section in the page to say that the availability is BackOrder.

What I’m asking, is why Google Merchant Web Crawler is still getting InStock, whilst Google Rich Text Tester is getting the correct BackOrder. What is it that Shopify is doing that is telling the Google web crawler that the product is InStock, and how do we “remove the Shopify supplied structured data”?

I’m wondering if the problem has something to do with BackOrder only being a newly accepted availability. Even the filters in Merchant Centre don’t allow you to select BackOrder. I’m thinking of changing the LD+JSON data to PreOrder, to see what that does.

I’d really just like to know how to get rid of the Shopify supplied structured data, that you mention. The data that is returning InStock, because it’s not the LD+JSON data in the page source. That data is returning BackOrder now we have modified it.

You can view more pricing options here: https://woolytech.com/portfolio/multifeed-google-shopping-app/#pricing

This link I share, is on the app store page, when you click on see all pricing options.

It’s possible the structured data, is not 100% correct. Here is the full requirement to check if you have other issues, also note that where the availability info is placed is also important: https://support.google.com/merchants/answer/6386198

Backorder is for existing products. Meaning when an existing listing, is temporary out of stock.

Preorder is for new products. Meaning a new product that is not yet ready for shipping. (can not be used for existing products)

Thanks, I’ll look into it some more. I did check your video, and we have done everything correctly as far as identifying the LD+JSON data in the page, we just reset it to backorder ourselves. I’ll attach some images so you can see what I mean about the inconsistency.

Here’s the latest on this.

  1. To solve the Shopify LD+JSON product page error, you need to make changes to the LD+JSON generation in your theme. On ours it was in the main-product and the featured-product liquid files.

  2. To solve the Shopify Google & YouTube app sending IN_STOCK in their feed for BackOrder items, you can either add your own Supplemental Feed file to override “availability” and “availability_date”, or you can remove the Google & Youtube App and use your own feed file with the correct values.

  3. The Google Merchant Web Crawler detecting the incorrect attribute is an error at Google’s end. We have contacted them and were surprised to find that they acknowledged the error and they say they have initiated a fix. I’m not sure if they intend to fix the system for everyone, or if they have just initiated a fix on our own Merchant Centre. Let’s hope they have done a system wide fix. Below is what the Goggle Merchants Support have told me…

— exctracted from the Google Tech Support email

"Regarding your question about the Google Web Crawler still picking up “In Stock” even with your LD+JSON is showing “BackOrder” – I completely understand why you’d want clarity on that.

We’ve gone ahead and made some adjustments on our end to help resolve this. It may take 24-48 hours for these changes to fully propagate through our systems. We kindly ask for your patience during this brief period, however please rest assured that we are diligently working to ensure the crawler accurately picks up the ‘backorder’ status."

— exctracted from the Google Tech Support email

I have another small update on this situation.

  • Schema.org used to only specify availabilities InStock and OutOfStock
  • Shopify set up the majority of their information including JSON on pages and data sent to Shopping Feeds to reflect
    • InStock if stock is physically available
    • InStock if stock is not physically available, but able to be backordered
    • OutOfStock if stock is not able to be ordered
  • Obviously, the second InStock designation is not correct, but it was the closest description that could cater for a zero stock, able to be ordered situation.
  • schema.org have since introduced BackOrder status to cater for the above deficiency
  • Facebook seem to have catered for this by using
  • Shopify haven’t catered for the BackOrder availability, and…
    • To our knowledge Shopify have no intention of following the schema.org guidelines
    • Google say that Shopify call the shots, so Google’s Google & Youtube App will continue to display incorrect “Availability”
  • To confuse things a little more
    • You can edit the code in your Shopify store to display the correct BackOrder availability both on the page, and in LD+JSON
    • Google Rich Text checking tool will see the correct BackOrder availabilty
    • Google & YouTube App will still see the wrong availability
    • Adding a supplemental feed to your merchant centre can override the Google & Youtube App availability, but…
    • Don’t enable Merchant Centre to update your availability from your website, because…
      • The website crawler Google Merchant Centre uses is also defective, and won’t see the correct availability in either the webpage displayed data, or the webpages LD+JSON data.
      • Google have no intention of fixing their web crawler at this time

So the options are…

Option 1

Display the correct availability on the website, override the information provided by Shopify and the Google & Youtube App with a supplemental feed, not allow Google to update availability from it’s web-crawl. Google will still show the wrong information when displaying the items.

Option 2

According to Google, we can just go with the flow and do what most merchants do, allowing Shopify and the Google & Youtube app to show zero stock products as “In Stock”.

Even after doing all the overriding to get the webpage displaying the correct information, Google will continue displaying the wrong information, because they make money from the clicks. Here is an In-Box enquiry from just a few moments ago, which highlights why this is a problem…

"Internal Retaining Rings - 30x2x32 mm - Carbon Spring Steel WRI-0300-RD (2 Pcs) When searched on google it shows stock but on the page it says back order, you wouldn’t happen to have 4 of these would you? Thank youb "

Google got credit for a click on that falsely advertised availability. We got no sale. Obviously, Google don’t care if they are falsely labelling items as “In Stock”, because Google make their money from people clicking on the links.