Shopify sale prices stuck after uninstalling a discount app? How to get your original prices back
Why sale prices survive an uninstall, how to find the affected variants, three ways to restore them (reinstall, CSV import, bulk editor), and how to make sure it never happens again.
By Beacon Wave Studio · · 7 min read
You ended the sale. Maybe you even uninstalled the app that ran it. The storefront still shows the discounted price, and the original price is nowhere to be found. This is one of the most common complaints in App Store reviews of bulk-discount apps, and it has a simple cause and a slightly tedious fix.
Why the prices are still discounted
Most bulk-sale apps run a sale by rewriting the price of every variant: the current price is copied into the compare-at field and a new, lower price is written into the price field. Shopify then shows the compare-at price crossed out. That is a real edit to your product data, exactly as if you had typed it in the admin.
When the sale ends, the app has to write every original price back. If the app crashes, hits an API limit, or loses track of what the original was, the discounted price simply stays. And once you uninstall, Shopify revokes the app’s access token, so even a well-behaved app cannot touch your products any more. Uninstalling does not undo the edits an app already made; it only stops it from making new ones.
A second, nastier variant of the problem is compounding: the app computes the sale price from the current (already discounted) price instead of from the original, so a 20% sale applied twice becomes 36% off, then 49%, and so on.
Step 1: find every affected variant
- In Shopify admin go to Products and export all products as a CSV. Keep this file; it is your “before” record.
- Open the CSV in a spreadsheet and look at the
Variant PriceandVariant Compare At Pricecolumns. Rows where the compare-at price is filled in and higher than the price are (or were) on sale. If the app rounded to .99 or .95, filter on those endings to spot them quickly. - If the sale was a percentage, check the ratio between the two columns. A ratio that does not match the sale you configured is a sign that discounts compounded, and the compare-at price may itself already be a discounted value.
Step 2: restore the original prices
Option A: the app kept a snapshot
Some apps store the original price of every variant before they change it and let you restore it, including after a reinstall. Check the app’s help pages for “restore”, “revert” or “rollback” before you try anything manual. Reinstalling to restore should not require paying for a plan; if it does, move to option B.
Option B: fix the CSV and import it
Shopify’s product import can overwrite prices in bulk. In your exported CSV, copy the correct original price into Variant Price and either clear Variant Compare At Price or set it to the value you really want shown crossed out. Then go to Products, click Import, upload the file and tick Overwrite products with matching handles. Shopify’s own guide is at Importing products with a CSV file. Import only the columns you changed plus Handle, Variant SKU (or the option columns) so you do not accidentally overwrite descriptions or images.
Option C: the bulk editor
For a few dozen variants the bulk editor in Shopify admin is faster: select the products, choose Edit products, add the Price and Compare-at price columns and type the values in a grid. It saves as you go, so work in small batches.
Step 3: what if you do not know the original prices?
- Older product CSV exports, if you ever made one, are the best source.
- Past orders record the price paid per line item; look at orders placed before the sale started.
- Some apps e-mailed a confirmation with the affected prices when the sale started.
- Your supplier price list or cost data (the
Cost per itemfield) together with your usual margin gets you close when nothing else exists.
Step 4: make sure it cannot happen again
There are two ways to run a sale on Shopify, and only one of them can leave prices stuck.
- Automatic discounts apply at cart and checkout and never modify the stored price. Shopify itself switches them off at the end date. If you uninstall the app that created one, the worst case is a leftover entry on the Discounts page that you delete in one click; no product price is ever wrong. See Shopify’s automatic discounts guide.
- Price rewrites show a crossed-out compare-at price on the product page, which many stores want. They are safe only when the app records the original price and compare-at of every variant before it writes anything, computes the sale price from that record rather than from the current price, and restores the exact record at the end.
Whatever app you use: before uninstalling, end every sale and wait until the app confirms every variant is restored. Only then uninstall. And keep a product CSV export from a quiet day; it costs nothing and is the fastest recovery path you can have.
How SafeSale avoids stuck prices
We built SafeSale around this failure. Sales run as automatic discounts by default, so stored prices are never touched. If you opt into strike-through pricing, SafeSale snapshots the original price and compare-at of every variant first, computes each sale price from that immutable snapshot (so discounts can never compound), restores the exact snapshot with a retrying job when the sale ends, and keeps snapshots for 90 days after uninstall. Reinstalling and clicking “Restore all original prices” needs no plan, and the snapshot is downloadable as a CSV in Shopify’s import format so you can restore without the app at all. The details are in our emergency restore guide.