Skip to content
Prices and compare-at prices on Shopify

How to put items on sale on Shopify

To put an item on sale on Shopify, open the product, enter its original price in Compare-at price and the lower sale price in Price, then save. The compare-at price must be higher than the price for the sale to show. For a collection or the whole store, use the bulk editor, a product CSV or a sale scheduling app.

Key takeaways

  • On Shopify, Price is what the customer pays; Compare-at price holds the original price and must be higher for the sale to display.
  • Sale prices are set per variant, so every size and color you put on sale needs its own compare-at price.
  • For a collection or the whole store, a product CSV lets you copy prices into Compare-at price and calculate sale prices with one formula.
  • Plan the end before the start: keep the original prices, then move them back into Price and clear Compare-at price when the sale is over.
  • Discount codes and automatic discounts apply in the cart and at checkout; by themselves they don't put a crossed-out price on product pages.

How does a sale price work on Shopify?

A Shopify sale is two numbers on each variant. Price is what the customer pays. Compare-at price is the original price you show next to it. When the compare-at price is higher than the price, your theme can show both on product and collection pages, often with a Sale badge (Shopify's sale price guide).

So putting an item on sale means moving its current price into Compare-at price and entering the lower price in Price. A $40 hoodie at 25% off gets a compare-at price of $40.00 and a price of $30.00. The formula is: sale price = original price × (1 − discount % ÷ 100). The discount calculator also works backward, if you start from a target sale price and want the percentage.

Nothing in that setup ends the sale on its own. When the sale is over, you move the original price back into Price and clear the compare-at price. Keep that in mind when you choose a method below, because the way back is as much work as the way in.

How do you put one product on sale?

For a single product, the product page in your Shopify admin is quickest. Prices are stored per variant, so a product with sizes or colors needs the compare-at price on every variant you want on sale. Shopify also lets you bulk edit several variants of one product at once. These are the desktop steps:

  1. In your Shopify admin, go to Products and open the product.
  2. If the product has variants, open the variant you want to change from the Variants section.
  3. In the price section, click Compare at to show the Compare-at price field.
  4. Enter the original price in Compare-at price.
  5. Enter the sale price in Price.
  6. Click Save, then open the product on your storefront to check that both prices show.

How do you put a collection on sale?

For a collection of a few dozen products, use the bulk editor. The order of the steps matters: record each original price in Compare-at price before you overwrite Price, or you lose it.

If a variant already has a compare-at price from an earlier sale, check that it's still a genuine former price before you reuse it. An old reference left over from last season is one of the most common ways stores end up advertising a discount that isn't real.

  1. Go to Products and narrow the list to the products in the sale with search and filters.
  2. Select them and click Bulk edit.
  3. Click Columns and add Price and Compare-at price.
  4. For each variant, enter the current price in Compare-at price. Drag a cell's fill handle to copy a value down when several variants share it.
  5. Enter the sale price in Price for each variant.
  6. Click Save, then check a few products and the collection page on your storefront.

How do you put the whole store on sale?

Store-wide, a CSV file is faster and less error-prone than typing, because two spreadsheet steps do all the work. In Shopify's current template the columns are Price and Compare-at price; older files call them Variant Price and Variant Compare At Price. Export first and keep one untouched copy as your backup and your way back.

If you don't need crossed-out prices on product pages, an automatic discount on all products is the other native route. The next section compares the two.

  1. Go to Products, click Export, choose All products and a CSV format.
  2. In a working copy, copy the Price values into Compare-at price, except on rows that already have a higher compare-at price you want to keep.
  3. In a helper column, multiply each compare-at value by 0.8 for 20% off and round to 2 decimals, then paste the results into Price as values.
  4. Don't sort the sheet, and leave the other columns as exported. With overwrite selected, a blank cell replaces the existing value.
  5. Go to Products, click Import, select Overwrite products with matching handles, review the summary and click Import products.
  6. Check a product with variants and a collection page on your storefront.

Should you use a sale price or a discount?

Shopify has three native ways to lower what a shopper pays, and they show the saving in different places. Automatic discounts are applied in the cart and at checkout, and discount codes are entered at checkout (discount methods). To show discount savings as crossed-out prices on product pages, Shopify says you need a third-party discount app or a Shopify Partner.

Use sale prices when you want shoppers to see the offer while they browse. Use discounts when the offer depends on conditions, such as a minimum order, or should reach only people who have a code. Our guide to sale pricing vs discount codes covers the trade-offs in depth.

QuestionSale price (compare-at)Automatic discountDiscount code
Where the saving showsProduct and collection pages, as your theme displays itCart and checkoutCheckout, after the code is entered
Who gets itEvery shopper who sees the productEvery order that meets the conditionsShoppers who have the code
Start and endYou change the prices when the sale starts and endsActive dates: a start date and an optional end dateActive dates: a start date and an optional end date
Good forVisible sales on chosen products, clearance, seasonal eventsStore-wide or threshold offers without editing pricesEmail, influencer and targeted offers

How do you end a sale and restore the original prices?

Ending a compare-at sale is the reverse of starting one: put the original price back in Price, then clear Compare-at price. Clear the field rather than typing 0.00. Shopify's troubleshooting advice treats a 0.00 compare-at price differently from an empty field, and mixed values across variants can stop collection pages from showing sales correctly.

If you used a CSV, re-importing your untouched export with overwrite selected puts every price and compare-at price back as it was. Only do that if nobody changed prices during the sale, because the import also overwrites newer edits, such as a price correction a colleague made last week.

Timing is the hard part. A sale that ends hours late sells at the wrong price, and one that ends early annoys people who saw the ad. If you run sales often, a tool that saves the original prices and restores them at a set time takes that job off your calendar. Our guide to undoing bulk price changes compares the restore options.

How do you schedule a sale with Sale Scheduler by SalePilot?

Sale Scheduler by SalePilot handles the start, the end and the restore as one sale. It changes catalog prices and compare-at prices, so shoppers see a normal Shopify sale, and it saves each variant's previous price and compare-at price before anything changes.

When the sale ends, the restore skips any variant whose price was changed somewhere else during the sale, so a newer price isn't overwritten. The sale scheduler page covers timing and restore in detail. The steps:

  1. Name the sale, then choose Decrease price, by percent or by amount. Add a price ending such as .99 if you use one.
  2. Set the compare-at action to Set compare-at price to original price, so the pre-sale price becomes the crossed-out one.
  3. Choose the products: all products, collections, products, specific variants, or one advanced condition such as a tag or vendor. Add one exclusion type if needed.
  4. Choose Schedule start and end. Pick the start date and time, then an end date and time or a duration.
  5. Review every variant's before and after price. Only Ready rows are applied; Warning and Skipped rows are not.
  6. Click Schedule this sale. Prices change at the start time, usually within about a minute, and the previous prices are restored automatically when the sale ends.

What should you check before a sale goes live?

A few checks catch most sale problems before shoppers do. Run them on a sample of products the day before, not the hour before:

  • Margin: at 25% off, a $40 product with a $16 cost earns $14 instead of $24. Make sure the sale price still covers cost, fees and shipping.
  • Variants: every variant in the sale has a compare-at price higher than its price, or none at all.
  • Theme display: check a product page and a collection page, on desktop and on mobile.
  • Markets: fixed prices in a market catalog override your admin price and compare-at price, so shoppers in that market may not see the sale.
  • Messaging: ads, emails and banners match the real discount and end date.

Use a genuine reference price. In many places a compare-at or "was" price must be a price you actually charged, and in the European Economic Area an announced price reduction must show the lowest price you charged in the previous 30 days or more (Shopify's summary). This isn't legal advice; check the rules where you sell.

Frequently asked questions

How do I show a sale price on Shopify?

Enter the original price in the variant's Compare-at price field and the lower sale price in Price, then save. Your theme shows both when the compare-at price is higher than the price.

Can I put just one variant on sale?

Yes. Prices and compare-at prices are set per variant, so you can put one size or color on sale and leave the others at full price. Check how your theme's collection pages display a product with mixed variants.

Why isn't my sale price showing?

Usually the compare-at price isn't higher than the price, a variant has a blank or 0.00 compare-at price, or your theme or a market's fixed prices hide it. Our compare-at troubleshooting guide walks through each cause.

Can Shopify schedule a sale automatically?

Shopify discounts have active dates with a start date and an optional end date, but its sale price steps are manual unless you build a Shopify Flow workflow. Sale Scheduler by SalePilot schedules the price change and restores the previous prices automatically at the end.

What happens to the compare-at price after the sale?

It stays until you change it. If it's still higher than the price, the item keeps showing as on sale, so clear the field when you put the original price back.

Run your next sale without the spreadsheet

Install Sale Scheduler from the Shopify App Store, build a sale, and review every price before it goes live. The free allowance lets you try it on a few variants first.

Chat with us on WhatsAppQuestions before or after you install