How to exclude sale items from a discount on Shopify

Stop a discount code or automatic discount from applying to items already on sale: how to skip anything priced below its compare-at price.

A painted valley under a green aurora with the heading No extra discount on items already on sale and the subline Skip anything below its compare-at price, next to a DiscountOS card tagged Sale items skipped, titled Autumn savings · 10% off, with a pill reading Exclude items on sale: on and four cart lines: Linen shirt $60 at −$6.00, Canvas tote $40 at −$4.00, Jacket on sale Skipped, and Sneakers on sale Skipped, above a Save discount button.

DiscountOS is a Built for Shopify discount app that runs multiple offers inside a single automatic discount, including market-specific and tiered discounts.


What does Shopify do natively to exclude sale items from a discount?

A sale item is a product whose price is below its Compare-at price, the crossed-out price shoppers see next to the sale price. Excluding sale items means a discount code or automatic discount skips those items, so a shopper cannot add 20% off on top of a 30% markdown. The Shopify Help Center page on amount off discounts walks through Value, Applies to, Minimum requirements, Maximum discount uses, Combinations and Active dates, and describes no setting that skips items on sale. The native workaround goes through collections. The Help Center page on collection conditions defines Compare-at price is not set: “A product matches when any of its variants has an empty Compare-at price value.” A merchant can build an automated collection with that condition and pick it under Applies to. Two limits follow from the same page: the condition reads whether the field is empty, not whether the price sits below it, and “Zero (0) isn’t the same as empty.” DiscountOS checks each item against its own compare-at price instead.

Native collection workaround vs DiscountOS

Native: collection with Compare-at price is not setDiscountOS sale-item settings
What is checkedWhether the Compare-at price field is empty, per productWhether the compare-at price is higher than the price the customer pays, per item
A product with a compare-at price equal to its priceLeft out of the collection, so no discountGets the discount, it is not on sale
A product with one variant marked down and one notIn the collection, because any variant with an empty compare-at price matches, so the marked-down variant is discounted tooThe marked-down item is skipped, the other is discounted
Works on an order-wide tiered discountNot described on the amount off pageExclude items on sale on Spend More Save More

Which DiscountOS discount types can skip sale items?

DiscountOS discount typeSettingWhat the docs say it does
Spend More Save MoreExclude items on sale (in Applies to)“Skips any item priced below its compare-at price, so this discount is not added on top of an already reduced price.”
Price ListExclude items with a compare-at price (in Price List Configuration)“Skips any item whose compare-at price is higher than the price the customer is paying”
Multi-offer, product offersCompare-at price · is not higher than the current price, in Qualifying itemsDiscounts the items that are not marked down
Multi-offer, product offersDiscount type Percentage off compare-at priceCharges the Compare-at price minus your percentage; an item whose current price is already lower keeps it

Each setting works on automatic discounts and on discount codes. For a percentage off chosen products that skips sale items, use a Multi-offer product offer. For quantity tiers that skip sale items, use a Price List discount.

How do you stop a discount code from applying to sale items?

Spend More Save More: a percentage off the order that skips sale items

  1. Open DiscountOS, click Create discount, and choose Spend More Save More. It sits under Product page offers, with the example “Spend $100, save 15%”.
  2. Choose the discount method and name it. Pick Automatic and type a Title, or pick Discount Code and type the code.
  3. Set the spend tiers. Edit Spend (amount) and Get (% off the order) on each tier, and use Add tier for more rungs.
  4. Turn on Exclude items on sale. It sits in the Applies to card, under Exclude specific items.
  5. Set combinations, markets and dates, then save. Save from the bar at the top of the page.
The Applies to card of a DiscountOS Spend More Save More discount: Entire order with the line Each tier's percentage comes off the whole order, Exclude specific items switched on with the Select products to exclude and Select collections to exclude pickers and the Spend tiers and conditions choice, then the Exclude items on sale row, switched off, with the help text Skips any item priced below its compare-at price, so this discount is not added on top of an already reduced price.

Price List: quantity tiers that skip sale items

  1. Open DiscountOS, click Create discount, and choose Price List. It sits under Product page offers.
  2. Set the Discount Type. Pick Percentage off, Fixed amount off or Fixed price per item. The rest of the card appears once you do.
  3. Tick Exclude items with a compare-at price. It sits in Price List Configuration, under Count tiers.
  4. Click Add rule for each tier. Fill in Quantity and the amount, for example Quantity 5 and Discount % 10.
  5. Narrow the products, set markets and dates, then save.
The Price List Configuration card of a DiscountOS discount: Discount Type set to Percentage off, Tiers are based on set to Total quantity of items, Count towards tiers set to Selected products only, Count tiers set to Across all selected items, and the unticked checkbox Exclude items with a compare-at price with the help text Skips any item whose compare-at price is higher than the price the customer is paying, so this discount is not added on top of an already reduced price. On the right, Convert to customer's currency is switched on.

Multi-offer: a product offer on full-price items

  1. Open DiscountOS, click Create discount, and choose Multi-offer Discount. It sits under Advanced.
  2. Turn on Product discount under What does this discount give?, then set Discount type to Percentage off and the value.
  3. Add a group in Qualifying items with the condition Compare-at price · is not higher than the current price. The operator matches items whose compare-at price is not higher than the current price. Add more conditions to the same group, such as Specific collections, with Match all of these conditions.
  4. Under Applies to, set Discount these items to that group.
  5. Set dates and save.

Every condition and operator is listed in the Conditions docs.

What to know before you exclude sale items

  • Set compare-at prices in Shopify admin. Every DiscountOS sale-item setting reads the Compare-at price on the product. An item marked down without a compare-at price looks full-price to the discount.
  • Full-price items still get the discount. Items with no compare-at price are not skipped by Exclude items on sale or Exclude items with a compare-at price.
  • Storefront widgets follow the setting. On Spend More Save More, the tier table and cart goal bar stay off the product pages of skipped items.
  • Badges can follow it too. A DiscountOS Sale Badge has Skip products with a compare-at price, so a “20% off” badge does not show on items already marked down.
  • Other discounts are separate. Skipping sale items in this discount does not stop a different discount from reaching them. Combinations are Shopify’s call.

Leaving gift cards or chosen products out as well? Read how to exclude products or gift cards from an order discount. Putting a ceiling on the same discount? Read how to cap a percentage discount at a maximum amount. For what stacked discounts do to margin, see the break-even guide.

Questions merchants ask

Can Shopify exclude sale items from a discount automatically? The Shopify Help Center page on amount off discounts describes no setting that skips items on sale. The native workaround is an automated collection with the condition Compare-at price is not set, used as the Applies to collection. DiscountOS skips sale items with Exclude items on sale on Spend More Save More, Exclude items with a compare-at price on Price List, and a Compare-at price condition on Multi-offer.

What counts as a sale item? An item priced below its compare-at price, the crossed-out price you set on the product in Shopify admin. DiscountOS Exclude items on sale skips any item priced below its compare-at price, so the discount is not added on top of an already reduced price.

Does this work for discount codes? Yes. Spend More Save More, Price List and Multi-offer each take Automatic or Discount Code as the method, and the sale-item settings work with either.

What happens to products with no compare-at price? They are full-price items, so they get the discount. The DiscountOS settings skip items whose compare-at price is higher than the price the customer pays. On Multi-offer, the app describes the operator is not higher than the current price as matching when the product has no compare-at price as well.

Which DiscountOS discount types can skip sale items? Spend More Save More (Exclude items on sale), Price List (Exclude items with a compare-at price) and Multi-offer product offers (a Compare-at price condition in Qualifying items). DiscountOS is free.

Sources