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

  1. Mark the items to protect. Give them a tag such as no-discount, or keep them in their own collection (for example "New arrivals").
  2. 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).
  3. 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.
  4. 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:

The reliable fix is a tag: tag sale items sale (by hand or with bulk edit) and exclude the tag.

Limits of the workaround

LimitWhat it means
Exclusions work on productsShopify 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 sourceFine for a few tags; tight if you exclude long lists by title or vendor.
5 collections per store that exclude another collectionIf 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.
UpkeepOne "eligible" collection per exclusion set. Each new product needs the right tag before the next sale.
StackingWhether 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

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.