Stranded Stock: Recover Inventory From Replaced Variants

Stock stuck on a variant Shopify replaced: how SKUSavvy finds it, moves it onto the replacement, and writes off what cannot be recovered.

What Stranded Stock Is

Stranded stock is inventory that is still in your Warehouse but is attached to an item that no live variant points at. The product reads zero on hand, and Shopify is told the item is sold out, while the units sit untouched in their Bins.

Nothing is lost. SKUSavvy still holds every quantity, Bin, lot, serial and cost. The stock only needs to be pointed at the variant that replaced the one it belonged to.

How stock gets stranded

Shopify sometimes replaces a variant instead of editing it. A CSV import, a Matrixify run, the bulk editor, an app that rewrites whole products, or deleting a product and relisting it can all create a brand new variant record with a new id.

SKUSavvy follows Shopify and retires the old variant. Its stock stays exactly where it was, but nothing sellable points at it any more, so the replacement variant reads zero and the next inventory resync pushes that zero back to Shopify.

Restoring the deleted variant does not fix this. That variant no longer exists in Shopify, so the next sync retires it again. Move the stock forward onto the replacement instead.

Signs You Have Stranded Stock

Open Stranded Stock whenever units are physically present but read as zero on the product. These are the usual reports:

  • Inventory disappeared after a bulk edit, a CSV import or a Matrixify run.

  • Shopify shows a product as sold out, but the units are on the Shelf.

  • The variant page says "No inventory for this item" and In Company reads 0.

  • Warehouse totals still count the units, but no product shows them.

  • A product was deleted and relisted in Shopify, and its stock did not follow.

  • A resync pushed 0 to Shopify for items you know you have in stock.

The screen lists any stock left on an item with no live variant, so it also catches variants deleted by hand in SKUSavvy, not only Shopify replacements.

Open the Stranded Stock Screen

Go to Company > Products > Stranded Stock. You need the View Inventory permission to open the screen, and Update Inventory to recover or write off anything.

Recoverable only is ticked by default, so you start with the stock SKUSavvy can move for you. Untick it to see every stranded item, including stock with no replacement to move onto.

What each column tells you

  • Product: the retired variant that held the stock. Open it to check the original record.

  • Recover onto: the live variant SKUSavvy believes replaced it, with a badge for how it was matched.

  • Blocked: stock records the replacement already holds in the same Bin, lot and serial. These are never merged for you.

  • Units: the total units held, across every Warehouse.

Expand a row to see each stock record with its Warehouse, Bin and serial. Check this before you act, because it tells you whether the units are on a Shelf or only a number in your totals.

How SKUSavvy Matches a Replacement

SKUSavvy suggests a replacement only when the evidence points at a single live variant. The badge in the Recover onto column tells you which rule matched, strongest first.

BadgeWhat it means

Same Shopify item

Shopify swapped the variant but kept the same inventory item. This is Shopify stating that the two are the same stock, so it is the strongest match.

Same product & SKU

A live variant on the same product carries the same SKU and the same options.

Relisted product

The same SKU and options sit on a different product with an identical title. This is the delete-and-relist case, and it is the most common one.

Same product, SKU changed

The same product and the same options, with the SKU rewritten.

Across different products the titles must be identical before SKUSavvy suggests anything. A SKU reused on an unrelated product is normally a different item, not a replacement, so matching on SKU alone would move stock onto the wrong variant.

If more than one live variant fits, the row reads Several possible matches and SKUSavvy suggests nothing. It never chooses between them for you.

Recover Stock Onto the Replacement

To move stranded units onto the variant that replaced them:

  1. Read the Recover onto column and confirm the suggested variant is the one that should hold the stock.

  2. Tick the rows you want to move. Rows SKUSavvy cannot act on have no tick box.

  3. Press Recover, which names the number of items it will move.

With nothing ticked the button reads Recover all and covers every unambiguous match in your company, not only the rows on this page. Tick rows first if you want to move a few items and check the result.

The move keeps the Warehouse, Bin, lot, serial and cost of every unit. It is written to the inventory log as a change on both items, with a note saying the stock was recovered from a replaced variant, so the units are never adjusted silently.

A company-wide recovery runs in batches. If the result says more are still waiting, press the button again until it stops reporting them.

Blocked rows are skipped, never merged. When the replacement already holds stock in the same Bin, lot and serial, a second physical unit and a unit you already recounted look identical, so adding them would double your count. Cycle count that Bin instead.

Push the Corrected Counts to Shopify

Recovering stock sends nothing to Shopify, and this is deliberate. Normal syncing applies a change on top of the count Shopify already holds, and that count is wrong here by definition, so the result would be wrong either way.

After you recover, go to Company > Shopify, and press Resync Inventory with the origin set to SKUSavvy. That sends your absolute quantities and corrects the store. The button is hidden for a while after a resync finishes, so wait if you have just run one.

For a handful of items, open the variant, go to its Inventory tab and press Resync there instead. It sends the same absolute quantities for that item only.

Rows You Have to Decide On

Two kinds of row carry no suggestion, and they mean opposite things. Read the Recover onto column before you act on either.

No match

No live variant could hold this stock. This is usually a product you genuinely discontinued whose last units were never counted out, rather than a sync fault. It is the only stock a write-off can remove.

Several possible matches

More than one live variant could own the stock, so SKUSavvy will not pick one. This stock is likely recoverable, and a write-off never touches it.

Decide which live variant should hold the units, then correct the counts by hand: cycle count the Bin, or adjust the inventory on the variant you are keeping. Once the stock is on the right variant it stops being stranded.

Write Off Stock That Cannot Be Recovered

Writing off removes stranded stock that has no live variant and no possible replacement. Use it to stop dead stock inflating your totals, once you are satisfied that the units are not coming back to a live product.

Press Write off. Nothing is removed yet: SKUSavvy first shows exactly what would go, split into three groups you tick separately, because they mean different things on the floor.

  • Not in a Bin: nobody can pick, count or walk to this stock, so it only inflates your totals. This group is ticked by default and is the safe one.

  • In a Bin: the units are physically on a Shelf. Removing them makes SKUSavvy report an empty Bin that is not empty, so a cycle count is usually the better answer.

  • Held by open work: an open pick or an unfulfilled Shipment still points at this stock, so that work will come up short. It is already stuck, because the variant it was for no longer exists in your store.

The confirm button names the exact number of units it will remove. Everything removed is written to the inventory log with your reason, so the units are traceable afterwards. Nothing is sent to Shopify, because the variant that held the stock is already gone from your store.

With rows ticked, the write-off covers only those rows. With nothing ticked it covers every unrecoverable item in your company, so check the counts in the confirmation before you press it.

What This Screen Never Does

The guardrails are worth knowing, because they explain results that look like nothing happened:

  • It never sends inventory to Shopify. Resync the store yourself after recovering.

  • It never merges units into a Bin where the replacement already holds the same stock. Those rows are reported as Blocked and left for you.

  • It never writes off stock that has more than one possible replacement.

  • It never restores a deleted variant, because Shopify would delete it again on the next sync.

  • It never matches across products unless the product titles are identical.

Prevent Stock From Being Stranded

Edit variants in Shopify rather than deleting and re-adding them. A relisted product arrives as an entirely new record, and its stock stays behind on the old one.

Treat bulk tools with care. A CSV import, Matrixify, the bulk editor, or an app that rewrites whole products can replace variants even when the SKU and the options do not change.

Open Stranded Stock after any large catalogue edit and clear what appears. SKUSavvy also asks Shopify to confirm that a variant is really gone before retiring it, so an incomplete or out-of-order webhook does not strand stock on its own.