Shopify keeps no history of product prices, and bulk edits cannot be undone from the admin. There is no edit history on a product, no revert on the bulk editor, and no record anywhere of what a price used to be. If a sale or a bulk edit changed the wrong prices, your old values exist only wherever you happened to have written them down.
There are four ways back. Each one loses something, and which applies depends entirely on what you did before the change.
This is the only route that recovers exact values, and it only works if you exported first.
The thing to understand before you press go: the import writes every column in the file, not just the price. If the export is a week old, re-importing it also puts back a week of other edits — descriptions, tags, inventory, SEO fields — silently, in bulk, and with no undo of its own. Delete every column you do not want restored, keeping only Handle, the variant identifier columns and the price columns, and you turn a blunt instrument into a precise one.
If the sale set compare-at price to the old price, the original is still sitting on every variant.
Two limits. It only works where compare-at was genuinely set from the old price — if a product already had a compare-at price for some other reason, this overwrites the real price with the wrong number. And it recovers nothing for products the sale skipped but something else changed.
With no export and no compare-at price, past orders show what each variant actually sold for. Export orders, find the most recent full-price line for each variant, and work back from there.
It is slow, and it has a hole: anything that has not sold recently has no recent price in the data, which tends to be exactly the long tail nobody checked before the bulk edit.
Store backup apps take scheduled snapshots and can restore products to a point in time. If you had one running before the change, this is the cleanest route available to you.
It has to have been installed before. A backup app installed after the bad edit has nothing to restore from, because its first snapshot is of the broken state.
Every route above is recovery after the fact, and the two reliable ones depend on something you did beforehand. None of them can be made dependable, because the information they need is not being kept.
So the only real fix is to record what every price was before it changes, and to check each change actually landed. That second part matters more than it sounds: a bulk price update that silently fails on some variants looks identical to one that worked, and you will not find out from the admin.
Worth being plain about the limit, because it is the question everyone arrives with. Any tool of this kind cannot undo a change made before it was installed — those prices are gone, nothing recovers them, and anything implying otherwise is selling a rescue that will not arrive. What a tool can do is make the next change reversible.
If you take nothing else from this page: before any bulk price edit, run Products → Export, filtered to the products you are about to touch, and keep the file somewhere you will find it. It takes under a minute and it converts the worst case from “reconstruct from orders” to “import one file”.
Not from the admin. The bulk editor has no undo once you save, products have no edit history for prices, and Shopify support cannot retrieve previous values because they are not stored. Recovery depends entirely on what you kept before the change: an export, compare-at prices, order history, or a backup app that was already installed.
No. There is no price history on a product and no record of what a field used to say. This is also why a re-import is the only route that recovers exact values, and only when you exported before the change.
Cut the file down to one row and import that first to check the result. Then delete every column you do not want restored, keeping only the handle, the variant identifier columns and the price columns. An import writes every column in the file, not just the price, so a week-old export otherwise puts back a week of unrelated edits as well.
Only where the sale set compare-at from the old price. Open the products in the bulk editor with both columns showing, copy compare-at into price, then clear compare-at. If a product already had a compare-at price for another reason, this overwrites the real price with the wrong number.
Only if it was installed before the change. Backup apps restore from their own snapshots, so one installed afterwards has nothing to restore from: its first snapshot is of the broken state.
Record the original values before anything changes, and check each change actually landed afterwards. A bulk update that silently fails on some variants looks identical in the admin to one that worked. The simplest manual version is to export the affected products to CSV immediately before editing them.
Instilus apps · Built by Instilus, a trading name of A Star Supply.