How to stop discounts codes stacking on items already on sale?

How to stop Shopify stacking discounts on items that are already on sale? Surely this should be native / built in?

Yes it’s built in. Shopify gives you the Discounts, which lists all the discounts you create and maintain. When you create a discount, it gives you the options and flexibility to stack it or not. It’s completely up to you. If you want them stacked, then you can stack them. If you want to limit that, you are free to limit the stackable discounts. It’s really very easy. You are in charge of your discounts.

Where is the setting for this in the discount setup? I don’t see a tickbox to not apply discounts to items already on sale.

What Maximus means is this:

You’re talking about not applying discounts where price < compare_at_price

This is not built-in.
There are ways to achieve this.

  • Yes, I want to not apply the overall order discount, if the item is already on discount (compare_at_price)
  • What are they ways to acheive this?
  • Why is this simply thing not a simply checkbox in the discount setup inside Shopify, I don’t get it.

There are a lot of ideas that Shopify could implement but did not.

One way to approach this is to apply this discount only to products in specific collection and then put in this collection only products which do not have a compare_at price higher then price.
This can be done with Flow or with some other collection automation app.

This would not work for “overall order discount” because order level discounts do not care about what products are in the order, they apply to entire order.

When on plus, custom app using checkout functions allow for more granular control.
Some public apps may have similar functionality for other plans.

You can’t achieve this with Shopify’s native discounts, so you would need to use an app.

If you’re open to using an app, you can easily achieve this with Stack Discounts Pro.

In the app settings, enable:
Sale price handling → Skip discounts for products on sale

Once changed, any discounts created in the app will automatically be skipped for products that have a compare-at price (are on sale).

  • This honestly just makes me shake my head. It shouldn’t be that hard to implement.
  • And there’s no where to ask for a “feature request” to the Shopify devs right?
  • And there’s no way to know what they’re working on or what has been approved/scheduled to be done either right?
  • Using a “specific” collection is not good, because that would break our website nagivation when items move in and out of individual sale
  • We’re reluctant to use third party apps, we’ve been down that path many times before and usually ends up giving some sort of other issue with the website coding/theme or simply doesn’t work (though I will check out Stack Discounts Pro).
  • I just firmly believe that a basic fundamental, to not apply discounts on items already on sale, should never require a third party app. Gets a bit ridiculous to be honest.

Hi @Chris13371337 , you should be able to include or exclude products using various conditions using our app, Discount Bot.

For your specific need regarding items on sale, you can use this section:

You can also combine that with other inclusion/exclusion conditions like collections, variants, customer tags etc. You can use this logic for product, order and shipping discounts.

Most importantly, Discount Bot is built on top of Shopify functions so they behave just like regular Shopify discounts and won’t affect your themes in any way.

If there are questions, please let us know.

Hi @Chris13371337

Apply automatic discount with minimum requirement based on compare at price, product tags or certain collections to exclude on sale items. Another safe way is to duplicate the sale products into a different collection and hide codes over there. Apps running Scripts Functions can be used to also block stacking at checkout in a more elegant way now.

Thats not safe. It effects SEO & advertising

I just don’t understand how Shopify didn’t put a simply checkbox that if there’s any value in the compare at price, don’t apply discount code on top. It cannot be that difficult, it just cant.

if you have a nonplus store, then you have to use apps. There are free apps too which can resolve your issue the only thing is tryouts :sweat_smile:

but if you have a plus store, you can use your own logic as per requirement, let me know if you have a plus store i will give you logic

Also, the best way is to resolve this is using some JAVASCRIPT, i can do that for you let me know if you need the script will write for you

Hi @Chris13371337 , Shopify doesn’t natively support setting a condition like

Do not apply a discount on items that have a compare at price set on them

There are two approaches you could take to solve for this.

  1. Create a smart collection with condition compare at price exists and then set the discount to only apply for that collection (natively supported but with a catch)
  2. Create a discount on a app like Dollarlabs: Ultimate Discounts with the condition “Compare at price is not exist”

Limitation of approach (1)

It is that it only works on the product level since collections are fundamentally a list of products. If you need it to work on the variant level - you’d need to go for approach 2.

Here’s a quick screenshot of how this discount config would look like on the app.

If you need any further help / suggestions on how to approach this, please feel free to reply to this thread.

Best,

Hi @Chris13371337,

This is Vineet from Identixweb, a Shopify Development Agency.

Yeah, this is one of those things that feels like it should be built in, but Shopify doesn’t automatically treat a compare at sale price as something that should be excluded from discount codes.

One small warning, though before you do this, which I learned the hard way lol:

If your products have multiple variants, Shopify’s compare-at condition can behave differently depending on whether some variants have compare-at prices and some don’t. So test a few products before relying on it fully.

So now back to your solution. The cleanest workaround is to create a separate automated collection for full-price items only, then apply your discount code only to that collection.

Go to Products > Collections > Create collection > Automated, then set a condition like:

Compare at price is empty

Then, when creating the discount, choose Specific collections and select that full-price collection. That way, items already on sale should not receive the extra discount. Shopify supports discount eligibility by products/collections, and compare at price is how sale pricing is normally handled.