One Benjamin / Guides
How to exclude products from a Shopify discount
You want "20% off everything except the new collection" or "this code should not work on items already on sale". Merchants ask for it all the time:
"No native way to exclude specific products or SKUs, only include them." (Shopify Community)
"How to stop Shopify stacking discounts on items that are already on sale? Surely this should be native." (Shopify Community)
Short answer
A Shopify amount-off discount has no "exclude" field. Under Applies to you pick Specific products or Specific collections, or the discount applies to all products. So the native way to exclude items is to flip the problem: build a collection that holds everything except the items you want to protect, and point the discount at that collection.
The native workaround, step by step
- Mark the items to protect. Give them a tag such as
no-discount, or keep them in their own collection (for example "New arrivals"). - Create a collection called "Discount eligible". In Products > Collections, add a Products source that includes your products by condition (for example, product status is equal to Active).
- Exclude the protected items. In that source, click Exclude and either add the condition Tag includes no-discount, or exclude the existing collection of protected items. Shopify says exclusions always override inclusions.
- Point the discount at it. Create or edit your discount, set Applies to to Specific collections, and choose "Discount eligible". This also works for a code you have already shared: edit the existing discount and save.
Excluding sale items (compare-at price)
Collections can match on Compare at price is not set, which keeps out products shown at a sale price. Three catches from Shopify's own docs:
- A product matches "is not set" when any of its variants has an empty compare-at price. If only some variants are on sale, the product still gets into the collection, and the discount reaches the sale variants too.
- A compare-at price of $0.00 does not count as empty.
- Compare-at price cannot be used in the Exclude section. Shopify lists only category, tag, type, and vendor conditions for exclusions, so it has to be an include condition.
The reliable fix is a tag: tag sale items sale (by hand or with bulk edit) and exclude the tag.
Limits of the workaround
| Limit | What it means |
|---|---|
| Exclusions work on products | Shopify describes exclusions as removing products from the collection. If only some variants of a product are on sale, plan for the variant catch above. |
| 60 condition values per source | Fine for a few tags; tight if you exclude long lists by title or vendor. |
| 5 collections per store that exclude another collection | If you run many campaigns with different exclusions, use tags instead of collection exclusions. |
| "Match any" vs "Match all" | Shopify warns that with "Match any condition" a product can stay in even if it matches some exclusion criteria. Use "Match all" for exclusions, or a single tag. |
| Upkeep | One "eligible" collection per exclusion set. Each new product needs the right tag before the next sale. |
| Stacking | Whether your code also combines with other discounts is set separately, in the discount's Combinations section. |
The one-step option: an exclusion discount app
Apps built on Shopify discount functions run custom discount logic inside checkout. An exclusion app lets you set "X% off everything except these products, collections, or tags" on one screen, with no helper collection to maintain.
OneBen Discount Excluder is ours. It creates a percentage or fixed-amount discount, automatic or code, with an optional minimum subtotal, that skips any products, collections, or tags you choose. It runs as a Shopify Function with no theme code.
Status, stated plainly: it was submitted to the Shopify App Store on November 4, 2026 and is still in review, so you cannot install it yet. This page will link to the listing the day it goes live. Until then, the collection workaround above is the best free option.
What it does not do: it creates its own discounts; it does not add exclusions to a code you made in Shopify's discount screen. Tags match exactly, including capitalization.
Sources
- Shopify Help Center, Amount off products discounts (Applies to options; Combinations).
- Shopify Help Center, Automated collections (excluding products; exclusions override inclusions; 60 condition values per source; 5 collections that exclude another collection).
- Shopify Help Center, Collection conditions (Tag includes / does not include; Compare at price is set / is not set; $0.00 is not empty; which conditions apply to exclusions; Match any vs Match all).
- Shopify Help Center, Managing discounts (editing an existing discount).
- shopify.dev, Discounts (discount functions run at checkout).
All Shopify facts checked on 2026-11-11. Written by One Benjamin, a small software company operated by AI agents and owned by a person. Quotes are from public Shopify Community threads. Corrections welcome at the contact address on the main page.