All posts

How to Bulk Change Prices on Shopify (and Revert Them After a Sale)

Shopify can bulk edit prices but can't schedule a price change or undo one. Here are the free methods, their limits, and how to revert a sale safely.

Changing a few prices on Shopify is easy. Changing 400 prices for a weekend sale, and getting every one of them back afterwards, is where most merchants get burned. This guide covers the free, built-in ways to bulk change prices, what they can't do, and how to undo a sale without breaking prices you edited since.

The short answer

  • Under ~100 products, one-off change: use Shopify's bulk editor.
  • Hundreds or thousands of products, or a formula (e.g. 20% off): use a product CSV export/import.
  • Want the sale to start and end on its own, at checkout only: use a Shopify automatic discount.
  • Want strike-through sale prices on product pages that start, end and revert automatically: Shopify can't do this natively; you need a CSV backup routine or an app.

Sale price vs. discount: pick the right tool first

Shopify has two different ways to "put something on sale":

Automatic discount

Sale price (Price + Compare-at price)

Where the reduction shows

Cart / checkout

Product page, collections, search

Strike-through price

Depends on theme / not by default

Yes, when compare-at > price

Start and end date

Yes, built in

No

Changes your product data

No

Yes

Reverts by itself

Yes

No

If you only need a scheduled reduction and don't need shoppers to see the crossed-out price while browsing, an automatic discount (Discounts > Create discount) is free and ends on its own. The rest of this guide is about the other case: actually changing prices.

For a sale price, Shopify's rule is simple: set Compare-at price to the original price and Price to the new one. The compare-at price must be higher than the price, or no sale is shown. Note that a compare-at of 0.00 is not the same as an empty field; clear it completely when a sale ends.

Method 1: Shopify's bulk editor (free)

  1. Go to Products and filter the list (for example More filters > Collection, or by tag or vendor).
  2. Select the products (select all, or shift-click a range), then click Bulk edit.
  3. Click Columns and add Price and Compare-at price.
  4. Type the new values. You can drag a value down a column to copy it.
  5. Click Save.

Limits:

  • There is no "decrease by 20%" or ".99 rounding" rule. You type each price, or calculate them in a spreadsheet and paste them in, which is the workaround merchants describe in the Shopify Community.
  • It's practical for dozens of products, painful for thousands.
  • Changes apply the moment you save. There is no scheduling and no lasting undo.

Method 2: CSV export and import (free, best for large catalogs)

  1. Products > Export: export the products you'll change. Keep an untouched copy of this file; it is your only backup.
  2. Open a second copy in Google Sheets or Excel and edit the Variant Price and Variant Compare At Price columns. A formula handles percentages, e.g. for 20% off with the old price kept as compare-at:
plaintext
Variant Compare At Price  =  original price
Variant Price             =  ROUND(original price * 0.8, 2)
  1. Products > Import, choose the file and tick Overwrite products with matching handles. Don't edit the Handle column; it's how Shopify matches rows to products.
  2. Test with a few products first, then import the rest.

Limits:

  • Product CSV files must be under 15 MB; split big catalogs.
  • If your store sells in several markets with fixed local prices, those use separate Price / [Market] columns. A base price change doesn't touch them.
  • No scheduling: someone has to run the import when the sale starts and again when it ends.

How to undo a bulk price change

Shopify keeps no price history you can roll back to, and Shopify Support can't restore overwritten prices. Your options:

  1. Re-import the pre-change CSV (the untouched export from step 1). This is the fastest fix. But it is a blunt instrument: it overwrites every column in the file. Any price you or another app changed after the export, such as a supplier price increase or a fix for a typo, gets silently overwritten. Before you re-import, delete every column except Handle, the variant identifiers, Variant Price and Variant Compare At Price, and drop the rows for products you know were edited since.
  2. No backup? Rebuild the prices from supplier price lists, recent orders (order line items show the price paid) or another system such as your ERP or POS.
  3. Clear leftover compare-at prices. A common post-sale mistake is restoring Price but leaving Compare-at, so the store keeps advertising a discount that no longer exists.

A safe routine for scheduled sales (no app)

  1. Export a CSV backup the day before. Name it with the date.
  2. Prepare the sale CSV in advance.
  3. Import it when the sale starts, and spot-check 5 products on the storefront.
  4. Put a calendar reminder for the end time.
  5. At the end, re-import the trimmed backup (price columns only) and clear compare-at prices.
  6. Check that no "Sale" badges remain.

This works, but it depends on someone being at a laptop at midnight on Cyber Monday.

When an app makes sense

If you run sales often, have a large catalog, or sell in several markets, a bulk price app saves the original prices for you and puts them back on a schedule. Look for these:

  • A preview of every variant before anything is written
  • Saved original prices and a revert that doesn't overwrite later edits
  • Start and auto-revert scheduling
  • Support for compare-at prices and Markets fixed prices
  • A CSV export of what changed

One option is our own app, Lilya: Bulk Price & Revert. You target products by collection, tag, vendor or filters, preview each variant, and schedule a start and an automatic revert. When it reverts, it skips any variant whose price was changed after the campaign and reports it. There's a free plan for up to 100 products per campaign. Whichever tool you use, keep the habit from Method 2: back up before you change prices.

FAQ

Can Shopify schedule a price change? Not for product prices. Only discounts have start and end dates.

Can I bulk change prices by a percentage natively? Not in the bulk editor. Use a CSV formula or an app.

Why isn't my sale price showing? Compare-at must be higher than Price, and your theme decides how sales are displayed.