How to restore a deleted product in Shopify
You can't restore a deleted product in Shopify. Shopify's API documentation states that product deletion is irreversible and a deleted product can't be recovered. You can rebuild it from a CSV export taken before the delete, or from a history app that saved a copy, but either way it comes back as a new product with a new ID.
Delete vs archive
Shopify gives you two ways to take a product down:
- Archive sets the product's status to archived. It's hidden from sales channels but stays in your admin, and you can unarchive it at any time. It comes back as a draft, so set it to active again.
- Delete removes the product and its variants for good.
Shopify's own guidance is to archive or unpublish a product instead if you might need it later. If you're cleaning up old stock, archive.
How to restore a deleted product without an app
From a CSV export taken before the delete
- Open the export file. Find the rows for the deleted product: one row per variant, plus extra rows per image, all sharing the same
URL handle. - Copy the header row and those rows into a new file. Save it as CSV without sorting.
- Go to Products → Import and upload the file.
- Open the new product and check variants, prices, images, and status.
- Add it back to its manual collections and drag it to its old position in each.
- Set stock per location (the product CSV covers stock only for single-location stores).
What you won't get back this way:
- The original product and variant IDs. Anything keyed to the old ID won't follow: some review apps, ad feeds, and other apps' data.
- Collection membership. Shopify's export leaves out the
Collectioncolumn. - Variant metafields. Product CSVs don't support them.
- Images, possibly. The export lists image URLs on Shopify's CDN. If those files were removed with the product, the import can't fetch them. Keep your own image originals.
Without an export
- Check other copies: Google Merchant Center, a marketplace listing, a supplier feed, a cached product page, or old order line items for title, SKU and price.
- Re-create the product by hand.
- You can ask Shopify Support, but Shopify's docs say deleted products can't be recovered. Don't plan around it.
What Shopify can and can't undo for deleted products
| Situation | Shopify on its own | Notes |
|---|---|---|
| Archived product | Yes | Unarchive it; it comes back as a draft |
| Draft or unpublished product | Yes | Change status or sales channels |
| Deleted product | No | Irreversible per Shopify's API docs |
| Rebuild from a prior CSV export | Partly | New ID; no collections; no variant metafields |
| Restore position in a manually sorted collection | No | Re-sort by hand |
| Products deleted in bulk | No | Same as one product, times N |
More cases: what Shopify can and can't undo.
How it works with Trailmark
Trailmark saves a version of each product whenever it changes, and records when it's deleted. A restore uses the last version saved before the delete. Trailmark keeps its own copies of product images, so they're available even if the original image files are gone. It must be installed before the delete: it starts tracking from install.
To restore:
- Open Trailmark, set the date range to include the delete, and search by title or SKU. Deleted products carry a "deleted" badge.
- Open its timeline and choose the version you want.
- Click Restore this version and confirm.
The delete must be inside your plan's history window.
To restore many at once, select them in the product list, pick a date, and preview. Deleted products are marked as "comes back as new" before anything runs.
What a restore brings back:
- Title, handle, description, vendor, type, status, tags, options
- Variants with SKU, price, compare-at price and barcode
- Images from Trailmark's own copies, with alt text and order
- Product metafields. References to items that were since deleted are dropped, and the count is reported.
- Manual collection membership
- Position in manually sorted collections: right after the product that used to precede it, or its old index if that product is gone
What it doesn't bring back:
- The old IDs. Shopify's API has no way to create a product with a chosen ID. The restored product is linked to the old one in Trailmark's history.
- Stock. Stock history is shown per location, but restores never set stock. Count and set it yourself.
- Membership in rule-based (smart) collections isn't sent directly. It follows from the restored fields (tags, type, vendor, price and so on), as long as the rules haven't changed. Rules based on stock follow current stock.
- Collections that mix rules and hand-picked products. Trailmark can't tell how the product got in, so it leaves them alone. Add the product back by hand if it was hand-picked.
- Videos and 3D models. Only images are copied.
A restore can't be undone from Trailmark. If you restored the wrong product, delete it in Shopify.
Checklist before deleting products
- Ask whether archive is enough. It usually is.
- Export the products you're about to delete and keep the file.
- Save the original images somewhere outside Shopify.
- Note the manual collections they're in and their positions.
- Check for apps that store data by product ID (reviews, bundles, subscriptions).
- For bulk deletes, double-check the filter. Select a page, not "all products in store", unless you mean it.
FAQ
Can Shopify Support recover a deleted product?
Don't count on it. Shopify's API docs say a deleted product can't be recovered.
Is there a trash or recycle bin in Shopify?
No. Shopify has no recycle bin for products. Archive is the closest built-in option, and it only works if you archive instead of delete.
Will the restored product have the same URL?
The URL uses the handle. If the handle is restored and no other product took it, the URL is usually the same. The product ID is always new.
Do reviews come back with a restored product?
That depends on the review app. Apps that link reviews to the product ID won't attach them to the new product automatically. Apps that link by handle may.
Can I restore products deleted before I installed a history app?
No. The app needs a saved copy. Use a pre-delete CSV export instead.