Skip to content
GetProfit

What Is Dead Stock? The Warehouse View vs Your Ad Account

Calculate dead stock from stock and sales data, and see why your ad account flags other dead products: ones never shown or spending without a sale.

Dead stock is inventory that has stopped selling and is unlikely to sell again, and it ties up cash and warehouse space. You calculate it from stock and sales data: products with no sale past your cut-off, valued at cost, plus inventory turnover and days inventory outstanding. Your ad account sees stock only as availability, so it flags other dead products: ones never shown, or ones that take clicks and budget without a sale. The two lists overlap only partly, and each needs its own fix.

What does dead stock mean?

Dead stock, also called dead inventory or obsolete inventory, means goods you bought or made that no longer sell. Lightspeed’s retail guide (What Is Dead Stock? Definition and Management Guide) defines it as products that have never sold and are unlikely ever to sell. The step before it is slow-moving inventory. Shopify (Slow Moving Inventory: How to Identify and Reduce It) describes it as products that have been in stock for an extended period without selling.

The difference is whether the product still sells. A slow mover sells too rarely for the stock you hold; dead stock has stopped selling. Both cost you the same things: cash frozen in goods, warehouse space, and what Shopify calls holding costs, the cost of storing goods.

Both guides leave the cut-off to you. Lightspeed’s “dusty inventory report” finds stock that hasn’t sold in a period you choose. Shopify suggests watching products that stay in stock longer than the typical sales cycle for their category. A fair cut-off is longer than the product’s typical sales cycle and covers its full season.

For a shop that advertises on Google, there is a second, separate question: how many products in the feed never reach a shopper at all. That wider question of why most products get no impressions has its own guide. This article stays with dead stock and compares it with what your ads see.

How do you calculate dead stock?

You calculate dead stock from stock and sales data, not from ad data. Four measures do most of the work:

MeasureHow to calculate itWhat it tells you
Inventory turnoverCost of goods sold ÷ average inventory, where average inventory = (starting + ending inventory) ÷ 2How many times your average stock sold through in the period. A low figure for a product line points to slow-moving or dead stock
Days inventory outstandingInventory value ÷ cost of goods sold × 365 (use 90 for a quarter, 30 for a month)How many days your current stock would last at the current pace of sales
Days since last saleToday minus the date of the product’s last sale, in any channelThe direct test: past your cut-off, the product is dead stock
Dead stock valueUnits on hand × unit cost, for products past the cut-offHow much cash the dead stock ties up

The turnover formula comes from Shopify’s guide Inventory Turnover Ratio: Formula and How to Improve. The days inventory outstanding formula comes from its guide DIO Meaning Inventory: Formula and How to Improve It. Together, the four measures need unit costs, units on hand and the full sales history, which only your shop or warehouse system holds.

To build the list:

  1. Export your stock: product ID, units on hand and unit cost.
  2. Add the date of each product’s last sale from your order history, across every channel you sell in.
  3. Set the cut-off. Make it longer than the product’s typical sales cycle. Judge seasonal products by their last full season, not by the off-season months.
  4. Mark every product past the cut-off as dead stock and value it at cost.
  5. Divide that value by your total inventory value. Track this share month by month.

Example store, not client data.

A tableware shop with 3,000 products sells 180,000 a month at a 35% gross margin. Its cost of goods sold is 117,000 a month, or 1,404,000 a year. It holds stock worth 351,000 at cost on average. Inventory turnover is 1,404,000 ÷ 351,000 = 4.0 a year, and days inventory outstanding is 351,000 ÷ 1,404,000 × 365 ≈ 91 days.

Of its products, 240 have stock on hand but no sale in 12 months. Valued at cost, they tie up 35,100, which is 10% of the inventory value.

What counts as a dead product in your ad account?

Google Ads and Merchant Center know your feed, each product’s availability, and its impressions, clicks, spend and conversions. They see stock as availability, not as how long goods have sat on your shelves. They also miss what sold in your shop, on a marketplace or over the phone.

What you paid for a product reaches them only if you send the optional cost of goods sold attribute, which Google lists for gross profit reporting. Our own data has the same boundary: we see stock only through Merchant Center’s availability flags.

Google’s Merchant API reference (ProductAttributes) lists the availability values: in stock, out of stock, preorder, backorder and limited availability. The feed can say “we have none of this”, and it has no value for “we have too much of this”. So your feed can tell Google that a product is gone, but not that it is stuck on your shelves.

That is why “dead” in an ad account means one of two other things:

  • Never shown. The product is in the feed but gets no impressions. The opposite measure is assortment coverage: the share of the catalogue that takes part in advertising.
  • Spends without selling. The product gets impressions, clicks and budget, but no sales. Products like this are often called zombie products.

Both differ from dead stock. A product can be dead in your ads and sell well in your shop. Or it can be dead stock that your ads never tested, because they never showed it.

Dead in the warehouse, dead in your ads: five combinations

Put your stock and sales data next to your ad data per product, and every product falls into one of five combinations:

In the warehouseIn your adsWhat it usually meansFirst move
SellsSellsHealthy productKeep it
SellsSpends without selling, or never shownDemand exists in another channel; the ads miss it or fail to convert itFix the ads and keep the stock
Dead stockNever shownOnline shoppers never had a chance to see itA short, capped test before you mark it down
Dead stockSpends without sellingBoth signals agree; you pay to advertise stock that doesn’t moveClearance price or exclusion from ads
Out of stockStill advertised as in stockFeed and stock are out of syncFix availability in the feed

Example store, not client data.

The tableware shop has 240 dead-stock products: stock on hand, no sale in 12 months. Its ad data splits them: 150 got no impressions in 12 months and 90 took clicks and budget without a sale. Another 110 products also spent without a sale on the shop’s website but sold through its marketplace listings, so they don’t count as dead stock. The ad account’s “spent without a sale” list has 200 products (90 + 110), the stock list has 240, and only 90 are on both.

Over 13 months, 55% of products got no ad budget at all

In our study of 1.4 million products (1,404,808 products in 130+ stores, over 13 months), the ad side of the catalogue looked like this:

What happened in ads over 13 monthsShare of productsShare of ad spend
Sold at least once7.9%78.1%
Got budget, but no sales37.1%21.9%
Got no budget at all55.0%none

Measured store by store, the median store put 40.5% of its budget into products that never sold in those 13 months. The two figures answer different questions: 21.9% adds every store’s spend together, while 40.5% describes the typical store.

What matters for dead stock is that products in the “dead in ads” group can still start selling:

  • Of 1,196,357 products that started the period with zero spend, 74.1% never received a single impression in 13 months, and 2.59% reached a conversion. The ones that did sell took a median of 4 months to the first sale.
  • Of the products that had spent at least the cost of one conversion without a sale, 35.4% converted in later months, after a median of 2 months. Among products that had spent less than that, 10.6% recovered.
  • A rule like “no sale after a set spend, switch it off” was right 88.1% of the time for products with $5+ spend, but only 66.2% for products with $500+.

So a product that is dead in your ads is often a product your ads never tested. And a product that is dead in your warehouse may be one nobody online ever saw. Our data can’t tell which of these products were also dead stock, because we don’t see units on hand. We also have no data-backed “acceptable” share of dead stock or of spend without sales, so track your own share over time.

On the Google side, stock shows up only as availability. In GetProfit data on 142 stores, collected in August 2026, “out of stock” was the second most common Merchant Center flag, on 209,328 products. The most common was “not eligible in any campaign”, on 263,483. Both counts come from a sample of 400,000 flagged products, which the largest catalogues dominate.

Both flags reflect decisions about campaigns and stock rather than errors in the data.

How to get rid of dead stock without wasting ad budget

Start from the stock and ad data together:

  1. Join the two lists. Put your stock export (units on hand, unit cost, last sale) next to 12 months of ad data per product (impressions, clicks, spend, conversions). Sort every product into one of the five combinations of warehouse and ad status.
  2. Test the never-shown dead stock before you mark it down. In our study of 1.4 million products, a minimum honest test was 15–20 clicks, about $3–4 at the sample’s average cost per click of $0.20. By category it ranged from 15 clicks for bags to 50 for hobby products. If a product gets that many clicks and still doesn’t sell, you have a signal rather than noise, though not yet a final verdict. Our guide to a product that hasn’t sold in 12 months walks through the full check: price, season, listing and ads.
  3. Give dead stock that spends without selling an exit price. Decide how low you will go and whether advertising at that price still pays. The arithmetic is in clearance pricing for dead stock.
  4. Label it in the feed. The product data has five custom labels, custom_label_0 to custom_label_4, which Google’s Merchant API reference describes as custom grouping of items in a Shopping campaign. You choose the values, so a “clearance” value can mark dead stock.
  5. Group or exclude by that label. The Google Ads API guide Listing Groups for Retail explains that Performance Max listing groups include or exclude products in each asset group. In Google Ads, the Merchant Center custom label is called Custom Attribute. Move clearance products to a separate campaign with a capped budget, or exclude them from your main campaigns.
  6. Keep in-stock products marked as in stock, even when you hide them. If you mark them “out of stock”, the feed contradicts what your site shows. To stop showing a product you still sell, use its excluded destinations or pause attribute. The Merchant API reference describes pause as pausing the product for all ads locations.
  7. Fix products advertised as in stock that you no longer have. Set them to out of stock in the feed. Our guide to out-of-stock products in Shopping and Performance Max covers what to do with their campaigns while they are gone.
  8. Use exits that cost no ad money. Lightspeed lists the warehouse routes: supplier returns, markdowns and clearance events, bundles with popular products, upcycling and donation. A bundle sells the dead-stock product on the back of a product people already buy. Once a product is gone for good, take it out of the feed.
  9. Fix the cause. If one category keeps producing dead stock, the fix is an assortment decision. Shopify’s guide to SKU rationalization describes it as checking whether each product generates enough revenue to cover its holding costs. If you advertise, check the ad history too, and give products your ads never showed a test before you cut them.

Products that sell in your shop but are dead in your ads skip these steps. Their stock is fine, and the work is in the ads.

How the portal shows products that are dead in your ads

The portal covers the ad side of the stock-and-ads comparison. In product labels, every product gets one label based on its behaviour in ads over 12 months. Two labels match the “spends without selling” kind of dead: Dormant products spend but don’t sell, and To remove products burned a noticeable budget with no sales.

The portal advises excluding To remove products from ads, as candidates for removal from the catalogue. Products with no history or not yet advertised get the Newcomers label, so an untested product counts as new rather than failed.

The Assortment section walks the whole catalogue through the stages from the feed to sales, with impressions, spend and sales over 90 days. It counts the products that were never shown and keeps two reasons apart: no campaign at all, or a campaign that gave them no impressions.

The portal reads Google Ads and Merchant Center, not your warehouse system, so units on hand and unit costs stay on your side. You can export any group as a list, set it against your own stock export and sort each product into one of the five combinations.

See which of your products sell and which only spend. Every product gets a label based on how it behaves in ads. The portal changes nothing without your consent.

Check your catalogue →

Sources

  • What Is Dead Stock? Definition and Management Guide (Lightspeed, 23 April 2024) — definition of dead stock; the dusty inventory report with a period you set; the list of ways to clear it. Checked 2 October 2026.
  • Slow Moving Inventory: How to Identify and Reduce It (Shopify, 18 November 2023) — definition of slow-moving inventory; watching items that exceed the typical sales cycle for their category. Checked 2 October 2026.
  • Inventory Turnover Ratio: Formula and How to Improve (Shopify, 9 June 2023) — the inventory turnover formula and average inventory; low turnover brings holding costs. Checked 2 October 2026.
  • DIO Meaning Inventory: Formula and How to Improve It (Shopify, 10 March 2022) — the days inventory outstanding formula and shorter periods. Checked 2 October 2026.
  • What Is SKU Rationalization? Benefits and Implementation (Shopify, 14 January 2025) — checking whether each SKU covers its carrying costs. Checked 2 October 2026.
  • ProductAttributes (Google Merchant API reference, last updated 23 September 2026) — availability values; optional cost of goods sold for gross profit reporting; custom labels 0–4 for custom grouping; excluded destinations and pause. Checked 2 October 2026.
  • Listing Groups for Retail (Google Ads API, last updated 30 September 2026) — listing groups include or exclude products per asset group; Custom Attribute equals the Merchant Center custom label. Checked 2 October 2026.
  • GetProfit study: 1,404,808 products, 130+ stores, 13 months — catalogue layers and their share of spend; median share of budget on products with no sales; zero-start products; later conversions; switch-off accuracy; minimum test clicks.
  • GetProfit data: 142 stores, collected in August 2026, sample of 400,000 products with Merchant Center flags — the most common flags.