How to Put a Whole Shopify Collection on Sale, With the Old Price Crossed Out

One discount across a collection, a tag or the whole store, the old price crossed out on every product, and the prices put back when the sale ends.

by Mahbod MortazaviUpdated 12 min read

A boutique owner hangs a dress on a rail while a customer browses.

In Discounty: Bulk price editor See how the Shopify bulk price editor works 

To put a whole Shopify collection on sale with a strikethrough price, every product in it needs its old price in the Compare-at price field and the sale price in the Price field. Your theme then shows the old price crossed out next to the new one. Shopify's own bulk editor can fill both fields for many products at once, but you type every price and type them all back after the sale. A bulk price app does the arithmetic for a collection or the whole store and puts the prices back on the end date.

To create a bulk discount on Shopify, set one discount for a whole group of products, such as a collection, a tag or the whole store, instead of editing each price by hand. In Discounty this is a Bulk price editor campaign.

How does Shopify show a strikethrough sale price?

Two fields on each product variant decide it:

  • Price: what the customer pays.
  • Compare-at price: the old price. Shopify treats a product as on sale only when this is higher than the price. More in what a compare-at price is.

Your theme reads those two fields. It draws the crossed-out "was" price, and usually a Sale badge, on product pages, collection pages and search results.

A discount works differently. Shopify's Help Center page on sale prices says discount savings are not shown as crossed-out prices on product and collection pages by default. Shoppers see the saving in the cart and at checkout. So if you want the strikethrough on every product in a collection, the prices themselves have to change.

In your Shopify admin
Price$40.00
Compare-at price$50.00
On your storefront
Wool scarf$40.00$50.00Sale

Compare-at must be higher than price.

The strikethrough is your theme reading two price fields. Change the fields and every page that shows the product follows.

Can you put a collection on sale in Shopify without an app?

Yes, in three ways.

Option 1: the bulk editor

  1. Go to Products. Search or filter the list so it shows the products in the sale.
  2. Tick those products and click Bulk edit.
  3. Click Columns and add Compare-at price if it is not showing.
  4. For each variant, copy the current price into Compare-at price and type the sale price into Price.
  5. Click Save.

The editor has no percentage tool. For 20% off, you work out each sale price yourself.

Option 2: a CSV file

From Products, export the products to a CSV file. In a spreadsheet, copy the Price column into Compare-at price, then write a formula for the new price, such as the old price times 0.8 for 20% off. Back in Products, click Import, add the file, choose Overwrite products with matching handles and import. Shopify accepts product CSV files up to 15 MB. Keep the untouched export: it is your way back.

Option 3: an automatic discount

Go to Discounts → Create discount → Amount off products. Under Method choose Automatic discount and enter the Discount value. Under Applies to, pick Specific collections. Set the start in Active dates, click Set end date, and save.

This one does the maths and ends by itself. It applies in the cart and at checkout, though, so product and collection pages keep showing the full price.

Where it breaks

Bulk editorCSV importAutomatic discount
Strikethrough on product and collection pagesYesYesNo, by default
Works out the sale priceNo, you type each oneWith your own formulaYes
Starts and ends on a dateNoNoYes
Getting the old prices backType them againImport the saved exportPrices never changed
Limit to watchSlow on big selections15 MB per file25 active automatic discounts, app discounts included

Other things that trip merchants up:

  • Nobody is awake at midnight. The bulk editor and CSV have no schedule. Someone has to make the change when the sale opens and undo it when it closes.
  • A typo hides the sale. If a compare-at price ends up equal to or lower than the price, that product shows no sale at all.
  • Mixed variants. If some variants of a product have a compare-at price and others do not, a collection page may not show the product as on sale.
  • Fixed market prices. A product with a fixed price in a Shopify market shows that fixed price to shoppers there, so changing the store price does not reach them.
  • EU shoppers. Shopify Markets has a setting that hides compare-at prices for customers in the European Economic Area. When it is on, they see the sale price with nothing crossed out.

How do you put a collection on sale with Discounty?

Create a Bulk price editor campaign: go to Campaigns, click Create campaign and choose Bulk price editor. It is on every Discounty plan, including the free Starter plan (see plans). The campaign writes the sale price into each variant's Price and keeps the old price as the Compare-at price, so your theme shows the strikethrough as it would for any sale.

Step 1: Name the campaign and choose the discount

Give the campaign a name only you will see, such as "Winter coats, 20% off". Then, in the Discount card, choose:

  • Percentage: for example 20% off.
  • Fixed amount: for example $10 off each product.
  • New price: every product in the sale costs, for example, $25.

With Percentage, the Prices to change card also offers Catalog prices. Tick it and the fixed prices in your Shopify Markets and B2B catalogs drop too, so shoppers there see the sale. Variants with quantity price breaks are left as they are. A fixed amount or a new price changes the product's own price only.

See fixed amount vs percentage discounts for which to use.

The Discount card of a Bulk price editor campaign: Discount/Pricing set to Percentage and 20 in the amount field. Below it, Advanced price change features with three unticked options: Set specific price endings; For product already discounted, calculate the discount based on compare-at price; and Keep current price and set a higher compare-at price.
The Discount card set to 20% off, with Advanced price change features right below it.

Step 2: Fine-tune the prices (optional)

On the Essential plan and up, open Advanced price change features (for Percentage and Fixed amount only):

  • Set specific price endings. Round sale prices to an ending such as .99: 5.68 becomes 5.99.
  • For product already discounted, calculate the discount based on "compare-at price". On a product that is already marked down, the new discount is taken from the original price instead of the current sale price.

Step 3: Choose the products

For a collection sale, pick Collections and choose the collection. For a storewide sale, pick All store. You can also include products by Product tags, Vendors or Product types, or pick Products and variants by hand. On the Lite plan and up, tick Excludes to leave some products out, such as one colour of a boot. If some products don't join the sale, here is why.

On the Discounty plan and up, Product availability lets you choose whether to include products published on the Online Store, on POS, or either. It only decides which products join the sale; the new price shows everywhere the product is published.

The Products card of a Bulk price editor campaign. The filter drop-down, set to Products and variants, is framed in green, next to a search box and a Browse button. Below: an Excludes checkbox, a greyed-out Auto-update the campaign's products when items are added or removed from your store checkbox, and the Calculate items count button, framed in green and greyed out until products are chosen, beside a count of 0 Products and 0 Variants.
Choose the filter, then click Calculate items count to see how many variants the sale will cover.

Step 4: Schedule, combine and keep it up to date

  • Schedule: set the Start date and Start time, tick Set end date, and set when it ends. The campaign starts and ends by itself. The times follow the time zone of the browser or device you save the campaign from, not the store's time zone, so check it before a midnight launch.
  • Countdown timer (Essential plan and up): show a timer on the product page or homepage, counting down to the end date.
  • Automatically update eligible products (Discounty plan and up): products you add later to the chosen collection or tag join the sale. Products that no longer match leave the sale and go back to full price. Discounty checks for changes every 30 minutes and updates each campaign at most once every 2 hours, so allow about 2 hours, longer if several campaigns use auto-update. Auto-update is not available when you pick products by hand.
  • Campaign combinations (Discounty plan and up): let a Quantity discount or Cart goal campaign apply on top of this sale price. Unticked, a product stays in one campaign only.
The Schedule card of a Bulk price editor campaign: Start date and Start time filled in, Set end date ticked and framed in green, and the End date and End time fields it opens below.
Tick Set end date, or the sale runs until you deactivate it.

Step 5: Check the summary and activate

The preview shows how the price looks on a product page and in the cart. The Summary card lists the name, the discount and the dates. Save or activate the campaign. On a large catalog, applying the prices takes a while; the status shows Applying until it is done.

What shoppers see

A Bulk price editor campaign writes two fields on each product in Shopify:

  • Price: the new, lower price the customer pays.
  • Compare-at price: the old price. If the product had none, Discounty saves the old price there. If it already had one, Discounty keeps it and never lowers it.
The On product page part of a Bulk price editor Discount preview, both cases framed in green. Without a compare-at price, $10.00 becomes $8.00 with $10.00 crossed out. With a $12.00 compare-at price, $10.00 becomes $8.00 and $12.00 stays crossed out.
The preview shows both cases: a product with no compare-at price, and one that already had one.

Your Shopify theme draws the strikethrough and the sale badge from those two fields. Discounty does not add a badge of its own for this campaign type. To change the badge wording, go to Online Store → Themes, open the … menu on your theme and choose Edit default theme content, then search for "Sale". To change its colour or shape, look for Badges in your theme settings; not every theme has it. On plans that include sale-badge customisation, Discounty's support team can help with a small theme change. See discount badges on Shopify for what to show.

Because the price itself changes, the sale price shows wherever the product is published, including collection pages, search, your Google channel and the product data AI shopping assistants read.

How do you run a storewide sale on 10,000 or more products?

In Discounty, pick All store in Step 3 and one campaign covers the catalog. At that size, three things decide whether Black Friday morning goes smoothly.

1. Count variants, not products. Plan limits count live variants, and a product in three sizes is three variants. A store with 10,000 products in three sizes is putting 30,000 variants on sale. Every plan below Ultimate has a cap on live variants, and Ultimate has none, so compare your count with the plan limits before the sale. A campaign that goes over shows Needs upgrade. See what goes wrong at Black Friday for why this one tends to surface in the last week.

2. Give it time. Writing new prices to a large catalog takes a while, and very large catalogs also wait longer for the first product count. The campaign shows Applying until every price is written. Allow for that when you pick the start time.

3. Keep it easy to redo.

  • Test on a small collection first. Check that the prices look right before you run it on thousands of products.
  • Split a very large sale into smaller campaigns, such as one for T-shirts and one for hats. On a live campaign you can change only the end date and time; anything else means deactivating it, which puts the prices back, editing it and activating it again. Smaller campaigns are quicker to redo.
  • Do not edit prices by hand during the sale. Discounty puts the original prices back when the campaign ends. A manual change on a product in the sale can be overwritten or leave the wrong price after the revert.
  • Export your product prices before a big sale. It is a quick backup if another app or a manual edit changes prices while the campaign runs.

What does a 20% collection sale look like in numbers?

Take a made-up store with a Winter coats collection: 40 coats, each in three sizes. That is 120 variants, more than the free Starter plan covers and within the Lite plan's limit. The campaign is Percentage, 20%, Collections → Winter coats, from Friday 00:00 to Monday 23:59.

CoatBefore: price / compare-atDuring: price / compare-atWhat the theme shows
Wool coat$150 / none$120 / $15020% off
Parka$200 / none$160 / $20020% off
Rain jacket, already marked down$90 / $110$72 / $110About 35% off

The first two are plain: 20% of $150 is $30, so the coat sells for $120 with $150 crossed out.

The rain jacket is the one to watch. 20% of $90 is $18, so it sells for $72. Its compare-at price stays at $110, because an existing compare-at price is never lowered. Your theme measures the saving from $110: $38 off, about 35%.

If you would rather every product show 20%, tick For product already discounted, calculate the discount based on "compare-at price" (Essential plan and up). Then 20% of $110 is $22, and the jacket sells for $88 with $110 crossed out. That is $2 below last week's $90. If the jacket had been at $80, the same setting would raise it to $88, so check the preview first.

CoatBefore the saleFriday to Monday
Wool coat$150$120 $15020% off
Parka$200$160 $20020% off
Rain jacketalready marked down$90 $110$72 $110about 35% off

On Monday at 23:59 every price goes back to the Before column, the jacket’s $110 compare-at included.

Same 20% campaign, three results. The product that was already on markdown shows a bigger percentage unless you base the discount on compare-at.

At 23:59 on Monday the campaign ends and the coats go back to $150, $200, and $90 with $110 crossed out. Nobody has to retype anything.

How do you know the sale is live, and how do you end it?

The status next to the campaign tells you where it is:

StatusWhat it means
Queued, Retrieving, ApplyingDiscounty is finding the products and writing the sale prices. You cannot edit or cancel it yet.
ScheduledWaiting for its start date.
ActiveLive on your store.
Auto updatingRunning its scheduled check for new products.
RevertingPutting the original prices back.
ExpiredEnded, on its end date or because you deactivated it. You can activate it again.
Needs upgradeMore product variants than your plan allows.
ErrorSomething went wrong; the tooltip next to it says what.

How to undo it

  • To end the sale early, deactivate the campaign. It shows as Reverting while Discounty puts the prices back, then Expired.
  • To end it on time, do nothing. On the end date the prices go back by themselves.
  • To change the sale while it runs, you can move the end date and time. For anything else, deactivate, edit and activate again; the prices go back in between.
  • End the campaign before you remove Discounty. Uninstalling mid-sale leaves the sale prices on your products, and on a product that already had a compare-at price, the old price is kept only in Discounty. Use Safe uninstall in Discounty: it ends every campaign first. What happens when you uninstall.

How we counted

The Shopify steps are from Shopify's Help Center as it read on 27 October 2026. The Discounty steps, statuses and timings are from Discounty's Help Center and the app; plan gates are from the app's Plans page. The example store is made up, and this post uses no Discounty figures.

Questions

What is the best bulk discount app for a Shopify Black Friday sale?

Look at how the app applies the discount before you look at ratings. For strikethrough prices on every product page, it has to write the Price and Compare-at price fields. Then check that it puts prices back on an end date, that its plan covers your variant count, and what happens if you uninstall it mid-sale. Shopify discount apps compared sorts the options by the kind of sale. Discounty's Bulk price editor writes both fields, starts and ends on your dates and puts the old prices back. Ultimate has no variant cap, and Safe uninstall ends every campaign before you remove the app.

Can I schedule a Shopify bulk discount?

Yes. A Bulk price editor campaign takes a start and an end date, applies the sale prices when it starts and puts them back when it ends. Shopify's bulk editor and CSV import have no schedule.

Can I edit a bulk discount while it is running?

Only the end date and time. For anything else, deactivate the campaign, edit it and activate it again. When you activate it again, set the end date again too.

How long does auto-update take to add new products?

About 2 hours. Discounty checks every 30 minutes and updates each campaign at most once every 2 hours. If several campaigns use auto-update, they are refreshed one at a time, so it can take longer.

Set up your first sale

Discounty writes the sale prices on your start date and puts them back on your end date.