DEV Community

Max
Max

Posted on • Originally published at storecanary.io

Shopify out-of-stock redirect breaks Merchant Center feed

TL;DR

  • A product URL that 301-redirects to the homepage triggers a Merchant Center "landing page mismatch" disapproval; the feed URL no longer resolves to the product it advertises.
  • The redirect almost always comes from an out-of-stock app with a redirect toggle enabled by default. A manual rule added in Shopify Admin is rarely the source.
  • Fix: keep the page live, set offers.availability to OutOfStock in JSON-LD and out_of_stock in the feed. Reserve 301s for discontinued products, pointed at a specific replacement.

Here is the failure chain: a client's product goes out of stock, an app redirects the product URL to the homepage, and within the next Merchant Center crawl cycle, the listing is disapproved for a "landing page mismatch." No error appears in Shopify admin. The product is still active, still priced, still in the feed. The only symptom is a disapproval accumulating in the Diagnostics tab.

This is a common side effect when out-of-stock apps are installed with default settings. The redirect toggle is often on by default, intended to stop shoppers from hitting a "sold out" page with no path forward. The unintended consequence: Google's feed crawler follows the same product URL and finds a homepage instead of a product, which fails Merchant Center's link attribute requirement.

This article covers the failure mechanism, where to locate the redirect rule in a client's store, the correct schema pattern, and an audit checklist.

What does the redirect actually break?

Three things break simultaneously.

The product's SEO equity. A product page that has been live for months carries indexed history, internal links, and sometimes external backlinks. A 301 to the homepage transfers none of that value to anything useful; it tells Google the product no longer exists at that URL, which is usually false.

The Merchant Center listing. The link attribute in the feed still points at the original product URL. Once that URL redirects to a non-product page, Google's crawler flags a mismatch and disapproves the listing.

The paid and organic click. A shopper who clicked a Shopping ad or an organic result for that specific product lands on a homepage with no context. Most will not search again for the item; the click is lost.

Where does the redirect rule come from?

The source is almost always an out-of-stock app. Most out-of-stock, back-in-stock, or "sold out" apps include a setting to redirect unavailable product URLs elsewhere. The default destination is usually / or a collection page. When that toggle is on, every product that hits zero inventory across all variants gets a redirect applied to its URL automatically.

Check the app's settings first. The redirect rule may not appear in Shopify Admin's URL Redirects list at all if the app manages it internally.

Why does Merchant Center flag this as a landing page issue?

Google's product data specification requires the link attribute to point directly to the page for that specific product. The link attribute specification and the product data specification overview both state the destination must let the shopper view and purchase the exact item advertised.

A redirect to the homepage fails that requirement regardless of the reason for the redirect. Google's crawler does not distinguish between "product gone forever" and "temporarily out of stock." It follows the URL, finds a non-product page, and disapproves.

The error label in Diagnostics is typically "landing page does not match" or "destination mismatch," and it lists the exact affected URLs.

This pattern is a close cousin of the price-mismatch disapproval covered in Products disapproved in Google Merchant Center: the price mismatch trap. Both failures come from a gap between what the feed claims and what the live page actually delivers.

What is the correct implementation for out-of-stock products?

Keep the page live. Signal unavailability through data, not through the URL.

In the theme's JSON-LD, set offers.availability to OutOfStock:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Name",
  "offers": {
    "@type": "Offer",
    "availability": "https://schema.org/OutOfStock",
    "price": "49.00",
    "priceCurrency": "EUR"
  }
}
Enter fullscreen mode Exit fullscreen mode

In the product feed, set availability to out_of_stock.

Add a restock notification form on the product page. This keeps the page converting intent rather than abandoning the visitor.

Reserve 301 redirects for genuinely discontinued products, and point them at a specific replacement product. A redirect to a real substitute preserves the shopper's intent and most of the page's SEO value; a redirect to / preserves neither.

This is the same discipline as in The phantom noindex: how Shopify apps silently hide your products from Google: a product can appear completely fine inside Shopify admin while the public-facing URL tells Google something entirely different.

How do you audit a client's store for this issue?

  1. Open Shopify Admin > Online Store > Navigation > URL Redirects and search for rules pointing product handles at / or a collection URL.
  2. Open the settings of every out-of-stock, back-in-stock, or sold-out app installed. Look for a redirect toggle (often labeled "redirect to another page" or "redirect when sold out") and disable it or change the behavior to keep the product page live.
  3. In Merchant Center, open the Diagnostics tab and filter for "landing page" or "destination" errors. These list the exact affected URLs.
  4. Spot-check a sample of currently out-of-stock products: visit each URL in an incognito window and confirm it loads the product page rather than the homepage.

None of this produces an error inside Shopify admin. The product stays active, the feed submits without a validation warning at first glance, and the only symptom is a slow accumulation of Merchant Center disapprovals.


Have you run into this redirect default on a client's store? Did you catch it through Merchant Center, or through something else?

The full version of this article, with screenshots and ongoing updates, lives on the StoreCanary blog.

Top comments (0)