Filtering products by discount percentage

Hi everyone,

I’m trying to create smart collections in Shopify based on the discount percentage of products (using price vs. compare-at price).

For example, I’d like to:

  • Show only products with 40%+ discount

  • Or group products into ranges like 20%, 30%, 40%+, etc.

As far as I can tell, Shopify doesn’t natively allow filtering or sorting based on the calculated discount percentage, even though both price and compare-at price are available.

So I’m wondering:

  1. Is there any native way to filter products by discount percentage?

  2. If not, why isn’t this supported?

  3. What are the best workarounds (apps, metafields, automation, etc.)?

It feels like a very logical feature, especially for stores that rely heavily on discounted products.

Would really appreciate any insights!

Couple things to consider.

  1. Filtering and sorting on the front end are theme features. Being supported or not supported by Shopify is irrelevant. If your theme supports this, you’re good. You are also free to experiment with code to sort by sale %.
  2. When talking about compare-at vs regular price - this isn’t a “discount” in Shopify terms, it’s a sale. It’s important to know the difference, even though some apps interchange these words.

Just use tags, to auto tag setup a shopify-flow automation there should even be a premade one

Just because you have a specific need doesn’t mean MILLIONS of other people need the additional hand holding or yet more cruft changes done to the admin.
Especially when the feature building blocks to carry out some operation already exist: tags + automation.

For custom business needs build what you need.
Framing it as something some other business must provide you is both false entitlement and literally making yourself dependent on only what some other business puts in front you.

Thanks for the input — I get the workaround with tags and automation, and that’s likely the direction I’ll go.

That said, I think the core point still stands:

Shopify already has both price and compare-at price, so the discount percentage is implicitly there — it just isn’t exposed as a usable field for filtering or smart collections.

Relying on tags + automation works, but it introduces:

  • Extra complexity

  • Risk of inconsistencies

  • Maintenance overhead (especially with large or frequently updated catalogs)

This feels like something that could (and arguably should) be handled natively, similar to how other computed properties are used in filtering.

Curious if anyone has implemented a more robust solution (e.g. via metafields + Flow) rather than just tagging?

Shopify api also has contextualPricing,media, position, inventory connections, COGS, metafields, metaobjects, companies, locations, etc etc ad nauseum.
Do the combinatorics on what that means if your justification was applied to every merchant that had some specific need based on well X and Y are already there so of course it should be a conditional.
The collections conditions drop down would be 4 pages long.

Your not the first to think their need is important therefore logical.
And wont be the last.
Self awareness is a key part of automating things wasting your time.
Just submit a feature request directly to shopify then build it anyway instead of waiting by the phone.
https://help.shopify.com/

Yes I do this all the time for merchants using the mechanic app, or on lowcode stacks like zapier/make; or middleware if they already running their own server somewhere like python or n8n,etc
Mechanic has a bunch of samples to get started https://tasks.mechanic.dev/?tags=Metafields, https://tasks.mechanic.dev/?tags=Auto-Tag, https://tasks.mechanic.dev/auto-create-collections-by-metafield-values etc.

Good Luck.

Hello, regular shopify smart collections do not do that. If you have enough time and energy you can use the app Flow, they’ve discussed it right here Re: Creating workflow that put a product into collection based on price reduced by % - #18 by paul_n

Otherwise you may also try our app Smart Collection Pro , you can use the discount filter and pick a percentage, it will automatically add and removed products based on the discount percent you’ve selected.

This example would create a collection with product having a discount ranging from 10% to 19%.

Hope it helps!