← All articles

What out-of-stock pages are really costing you (and how to fix it)

Out-of-stock pages don't just lose sales - they actively drain your ad budget and erode profit margins. Here's how to calculate the real cost and fix it at two levels.

It’s not just a lost sale - it’s negative profit

Most Shopify merchants think of out-of-stock pages as a missed opportunity. The product isn’t available, so the sale doesn’t happen. That feels like a neutral outcome - you didn’t gain anything, but you didn’t lose anything either.

That’s wrong. Every visit to an out-of-stock page costs you money, especially if that visit came from a paid channel.

In ecommerce finance, there’s a concept called contribution margin - the amount left over after you subtract all variable costs (product cost, shipping, fulfilment, payment fees, and ad spend) from your net sales revenue. It’s the money that actually goes towards covering your fixed costs and generating profit.

When someone clicks a paid ad and lands on an out-of-stock page, your contribution margin on that visit isn’t zero. It’s negative. You spent money to acquire that click, but there’s no path to purchase. The ad spend is gone with no revenue to offset it.

How to find the leak in your store

The first step is to quantify how much this is actually costing you. It’s usually more than people expect.

Here’s what to do:

  1. Pull your landing page report from Google Ads or Meta Ads Manager
  2. Cross-reference those URLs with your current inventory - which of those landing pages are for products that are currently out of stock?
  3. Calculate the wasted spend - how much budget went to clicks on those pages over the last 30, 60, or 90 days?

That number is your direct dollar leakage. It’s budget that produced zero revenue and negative contribution margin.

For stores running Google Shopping campaigns, this is particularly common. Your Merchant Center feed might still be serving Product Listing Ads (PLAs) for items that are no longer in stock. Every click on those ads is money down the drain.

Fixing it at two levels

This isn’t a single-fix problem. You need to address it at the ad platform level and at the page level.

Level 1: Stop paying for clicks that can’t convert

Google Shopping: Make sure your Merchant Center feed reflects real-time inventory status. When a product hits zero stock, the feed should mark it as out of stock so Google stops serving ads for it. Most stores have this integration set up, but many don’t have it synced properly - worth auditing.

Meta catalog campaigns: Same principle. Your catalog feed should exclude or deprioritise out-of-stock products. If you’re running dynamic catalog ads, check that your feed integration is set to exclude zero-inventory items.

Manual campaigns: If you’ve hardcoded a landing page URL to a specific product page in any ad, check whether that product is still available. If it’s not, pause the ad. Set a calendar reminder or inventory alert to re-enable it when stock returns.

This stops the bleeding at the top of the funnel. But it doesn’t help with organic traffic, direct traffic, or bookmarked links - and it doesn’t help when stock fluctuates frequently.

Level 2: Fix the page itself

Even with perfect ad feed management, people will still land on out-of-stock pages. Search engines index them. Customers bookmark them. Other sites link to them. You need a strategy for what happens when they arrive.

There are three approaches depending on the situation:

For products coming back in stock: A “notify me when back in stock” option can capture email or SMS leads - but be realistic about how effective this is. Most shoppers want to buy now. They’re not going to wait an unknown length of time for you to restock an item they can find elsewhere today. Back-in-stock notifiers work best for own-brand products that customers can’t get anywhere else, or when you have particularly loyal customers willing to wait. For everything else, showing an available alternative right now will convert far better than asking someone to wait. We cover exactly how to do this in our article on the 2-minute fix that recovers revenue from dead-end product pages. The two approaches are complementary - capture the email and show an alternative - but don’t rely on a notifier alone.

For discontinued products: If you’re absolutely certain a product is gone for good and the page has no further value, a 301 redirect to the most relevant live product or category page preserves your SEO equity. Don’t let it 404 - that destroys the link authority you’ve built.

But in practice, “discontinued” isn’t always permanent. You might bring in more stock, find a new supplier, or launch a replacement. A 301 redirect is a one-way door - once you redirect the page, it’s gone. If you’re not ready to write off the page entirely, a better approach is to flag the product as discontinued and show an alternative in its place. The page stays live, keeps its SEO value, and customers still land somewhere useful instead of a dead end. If you do restock later, you simply remove the flag.

For products with viable alternatives: This is where the biggest opportunity sits. Instead of showing a dead end, proactively show customers alternative products they can actually buy - right on the same page. A newer model, a similar product, your own-brand equivalent.

The key word here is proactively. Most Shopify themes have related product blocks, but they sit at the bottom of the page. A customer who lands on a product page and sees “sold out” doesn’t scroll down to browse - they leave. The alternative needs to be prominent and immediate: an inline recommendation, a banner, or a popup that catches their attention before they bounce.

The contribution margin maths

Let’s put some rough numbers to this.

Say your store gets 10,000 product page visits per month. Industry data suggests around 15-30% of those could land on unavailable products, depending on your catalogue size and stock turnover. Let’s use 20% - that’s 2,000 visits per month hitting dead ends.

If your average order value is $60 and your conversion rate on available products is 3%, those 2,000 visits represent roughly $3,600 in potential revenue per month that’s walking out the door. Factor in a 40% contribution margin, and that’s $1,440 in lost profit every month - or over $17,000 per year.

Now add the wasted ad spend on top. If even half of those dead-end visits came from paid channels at an average CPC of $0.80, that’s another $800 per month in budget producing nothing.

You don’t need to recover all of it. Recovering even 10-20% of those visits makes a meaningful difference to your bottom line.

A simpler way to handle the page level

You could manually edit your theme’s Liquid templates to conditionally display alternatives - but that requires developer time, ongoing maintenance, and doesn’t scale well across hundreds of products.

Reroute is a Shopify app built specifically for this. You map your unavailable products to the alternatives you want to show, choose how the recommendation appears (inline block, popup, or banner), and it handles the rest. Setup takes a couple of minutes, and it works across your entire catalogue.

Start with the audit

Before anything else, run the landing page report exercise described above. Cross-reference your top-traffic product pages with your inventory status. The gap between traffic and sales on those pages is your contribution margin leak.

Once you can see the number, fixing it becomes a priority - not a nice-to-have.