Run an inventory sync for a year or so and the spreadsheet gradually gets heavier. Most of that weight is rows for products you no longer handle: last year's limited edition, a discontinued model, items from a supplier you stopped working with. All of them could go, and somehow none of them have.
The hesitation is understandable. Removing something might cause a problem, and depending on how you remove it, stock might go to zero when you did not intend that. Those worries are, in fact, well founded. This article walks through retiring discontinued SKUs from both Shopify and your sync sheet safely, including the order in which to do it.
Sheets always get fatter on their own
Start with what happens if you never tidy up. Beyond the file getting heavier, there are effects that land squarely on day-to-day work. Seeing them makes the job much harder to keep postponing.
The invisible cost of dead rows
Rows nobody uses are still read, processed and written to Shopify on every run. The cost per row is tiny, but multiply it by several hundred and sync time noticeably stretches. At stores running a full sync, that difference shows up directly in the clock.
The human cost is worse. Every time somebody opens the sheet to do a count, products you no longer stock are in their field of view. Finding the right row takes longer, and the odds of typing a number into the wrong one go up. Cluttered data is a breeding ground for entry errors.
Setting it to zero is not retiring it
The most common treatment for a discontinued product is leaving it at zero. It prevents overselling and requires no courage to delete anything. It is convenient, but it is worth being clear that this is not retirement — it is maintaining an out-of-stock state indefinitely.
A row sitting at zero carries a permanent risk that somebody eventually decides stock was forgotten and types a number in. That is exactly how a product from three years ago reappears on the storefront. Anything that is finished should look finished.
The other overlooked effect is that a product left at zero keeps appearing on the storefront as sold out. From a customer's point of view, something they cannot buy is permanently on display. Beyond making collections look worse, it can leave the impression that the shop is thinly stocked.
Purely in inventory sync terms, zero causes no harm. Viewed across the whole store, it costs you something. Treat the cleanup as the same kind of work as tidying how the shop looks and its priority tends to shift. The difference between zero and blank is covered in should missing rows count as zero?
Agree on what discontinued means
Before tidying anything, decide what qualifies as discontinued. Is it the moment stock hits zero, the moment you decide not to reorder, or ninety days after the last unit sold? If that judgement gets made case by case in the moment, the cleanup will never progress.
Drawing the line by time works well. Something like: any SKU with zero stock for ninety days and no planned order is a retirement candidate. With a number in place anybody can make the call, and nobody spends time deliberating. Criteria can change later, so committing to a provisional one is how you get moving.
What to do on the Shopify side
Retirement involves work on both the Shopify side and the sheet side. Start with Shopify, because the choice you make here determines how the sheet should be handled.
Archive versus delete
Shopify lets you either archive or delete a product. Archiving hides it from your storefront and from the main product list in the admin, moving it to the Archived tab of the Products page. Unlike deletion, it can be undone later.
A deleted product, by contrast, is permanently removed from Shopify and cannot be restored. The Help Center frames the choice as archive when you might reuse the product information, delete when you want it gone entirely. In an inventory sync context, archive is the safer default when you are unsure. If a whole location is going away, see deactivating or merging locations safely.
What happens to past orders and figures
The biggest worry when tidying products is what it does to order history. Archiving only hides the product, so past orders and sales records are unaffected. If there is any chance of wanting to look back at historical data, that alone is reason enough to archive.
Deletion is irreversible, so treat it with more care — particularly if you plan to reuse the same SKU number on a future product. SKU is the linchpin of matching in inventory sync, and a world where one SKU means two different products across time is a reliable source of confusion later.
Show as sold out, or hide entirely
Before full retirement there is an intermediate choice about how sold-out products appear. Shopify can automatically hide out-of-stock products from collections, keeping them out of sight on the storefront. That suits items that are not truly discontinued but are not coming back soon either.
Conversely, watch out for products configured to keep selling when out of stock. With that setting on, customers can buy even at zero. Always check it is not still enabled when retiring a product — it is precisely how orders keep arriving for something you set to zero last week.
What to do in the sync sheet
With the Shopify side decided, on to the sheet. Getting the order wrong here produces stock changes you never intended. None of it is difficult, but it is worth fixing as a written procedure once.
Get the order right
The basic order is archive in Shopify first, remove the sheet row second. Reverse it and you get a product that still exists in Shopify with no row driving it, so its stock sits frozen at whatever number it had, outside the scope of the sync. If it is still visible on the storefront, it can still sell.
The other safeguard is pausing the sync while you work. A scheduled run firing mid-cleanup pushes a half-edited sheet into Shopify. On days when you are retiring a batch of items, either pause the schedule or work in a window when nothing runs.
Blank cell or zero
If you keep the row but clear the quantity, you need to know how that blank is interpreted. Whether blank means skip this row or means write zero produces opposite outcomes. Since it affects every cleanup you ever do, this is worth confirming at the start.
Confirming it is easy: set up one test SKU, blank its quantity and run a sync. If you can run a connection test, you can observe the behaviour without touching live stock at all. One experiment and you never have to wonder again.
Move rows to an archive tab rather than deleting
When taking rows out of the sheet, cut and paste them into an archive tab in the same spreadsheet instead of deleting outright. They fall outside the sync range so they stop being processed, but the information survives. SKU, product name, final stock figure and retirement date are plenty.
With that tab in place you can answer how many of these did we have last year in seconds. And if a retired product comes back, you just move the row home. Deletion is final; moving is always reversible. That asymmetry is worth exploiting.
Once the archive tab grows, splitting it by year keeps it manageable — retired 2025, retired 2026 and so on. Thousands of rows on one tab makes it slow to open, and in practice nobody consults records from several years back on a regular basis.
Google Sheets does keep version history, so an accidentally deleted row can be recovered. But recovery assumes you remember when it was deleted. Choosing to move rather than delete means never having to rely on that memory in the first place.
- 01Pull the candidate list using your criterion (zero stock for a set period, no order planned)
- 02Check that continue selling when out of stock is not still enabled on those products
- 03Archive the products in Shopify — delete only when reuse is genuinely off the table
- 04Pause the scheduled sync, or work in a window when nothing runs
- 05Cut the rows into your archive tab and record the retirement date
- 06Run the sync once and confirm the remaining rows still process correctly
Making it a few-times-a-year habit
Do the cleanup once and it will undo itself. Products keep arriving, so removing them has to be periodic too. It does not have to be a big exercise, though — thirty minutes a quarter is genuinely enough.
Thirty minutes a quarter
Book half an hour at each quarter boundary. Pull the SKUs matching your criterion, look down the list, and process the ones that are obviously finished. Anything you are unsure about can wait for next time. Trying to clear everything at once is what stops this becoming a habit.
Scheduling it right after a stock count is efficient. Having just walked the shelves, everyone remembers which products no longer physically exist. Marking things you no longer handle while you count means half the cleanup is already done.
Take a copy of the sheet before you begin. Cleanup means moving batches of rows, and it is genuinely easy to lose track of how far you got. With a copy sitting there, you can work knowing that starting over is always available.
Keep a short record of what you did, too. Something like retired 42 SKUs in Q3 2026, three of which may return is plenty. Knowing where the last pass finished makes the next one much easier to start, which is most of the battle with recurring work. The wider maintenance habit is data hygiene for Shopify stores.
Keep the criteria numeric
Stores where cleanup never happens share one trait: the decisions are made on opinion. Everybody feels that something might still sell, and that feeling is very hard to argue down. Which is exactly why drawing the line numerically in advance is so effective.
Something like zero sales in the last twelve months, zero stock for ninety days, and no order planned — meet all three and you are automatically a candidate. Choose conditions you can pull from Shopify's inventory reports or your sheet's sales record and the extraction takes minutes each time.
What not to touch
Finally, a word on what should stay. Never touch a SKU that still has unfulfilled orders against it. Retiring a product while stock is committed creates confusion at the fulfilment stage. Checking for open orders before retiring anything is a mandatory step, not an optional one.
The other category is seasonal lines. Winter goods sit at zero all summer without being discontinued. A criterion based purely on elapsed time will sweep them all into the candidate list. Flag seasonal products and exclude them from the extraction — one small step that prevents an embarrassing cleanup.
Retiring discontinued SKUs is unglamorous work. It does not raise revenue, and skipping it costs nothing today. But a tidy sheet syncs faster, produces fewer entry mistakes and shortens stock counts. The benefits are diffuse, and they are real.
Beyond that, a sheet containing only the products you actually sell is simply nicer to look at. Inventory sync is something you live with daily, so whether its foundation is orderly quietly shapes how heavy the work feels. At the next quarter boundary, give it thirty minutes.