Tier discounts: eligibility, exclusions & combinations
A field-by-field reference for tier discounts — automatic vs code, eligibility methods, the two exclusion toggles, conditions, and combinations.
This page is the deep reference for tier (volume) discounts. If you just want to build a basic "spend more, save more" ladder, start with Tier (volume) discounts. Here we document every field on a tier discount — how the type changes the underlying Shopify discount, which products get the discount, the two easily-confused exclusion toggles, customer and condition gating, scheduling, combinations, and performance — plus worked recipes for the tricky scenarios.
Automatic vs Code tier discounts
Every tier discount has a type that decides how a shopper unlocks it. You pick this when you create the discount, and it controls which underlying Shopify discount the app builds for you.
| Type | How shoppers get it | Backed by | Underlying Shopify object |
|---|---|---|---|
| Automatic | Applies on its own once the cart qualifies — no code to type | A Shopify discount function (automatic app discount) | Automatic app discount |
| Code | Shopper must enter a discount code at checkout | A Shopify discount code (code app discount) | Code app discount |
For a Code tier discount, the app uses the discount's title as the code the shopper enters. So if you title a Code tier discount SUMMER15, that is the code shoppers type at checkout. Choose a clean, shopper-facing title for Code discounts.
Only Automatic carries a totalSales figure back from Shopify — see Performance tracking for why a Code discount may show sales while an Automatic one shows usage only.
What happens when you switch type on a live discount
Automatic and Code discounts are different objects in Shopify. When you change the type of an existing tier discount, the app cannot simply re-label the old one — it deletes the old function or code and creates a fresh one of the new type. As a result:
- The underlying Shopify discount id changes.
- All usage and performance history resets — the usage count and total sales start again from zero, because they belong to the discount you just deleted.
- Any external links, QR codes, or printed campaigns that reference the old code stop working (the old code no longer exists).
Switching the type of a live tier discount is a destructive change. The old Shopify discount is deleted and replaced, so its usage count and total sales are lost and the discount id changes. If you are mid-promotion, finish the promotion (or duplicate the discount) before switching type rather than flipping it on a running campaign.
Building the tier ladder
A tier discount holds a list of rungs. Each rung is one discount band with these fields:
| Field | What it does | Notes |
|---|---|---|
| Title | A label for the rung so you can tell tiers apart in the editor | Internal; helps you manage a long ladder |
| Minimum subtotal | The cart subtotal at which this rung starts applying | The qualifying floor for the band |
| Maximum subtotal cap | An upper subtotal limit for the rung | Only used when the cap toggle below is on |
| Cap enabled | Turns the maximum into an active ceiling | When off, the rung has no upper bound |
| Value | The size of the discount | A number, paired with the type below |
| Type | Fixed (a currency amount off) or Percentage (a percent off) | Set per rung — you can mix fixed and percentage rungs |
The core rule, repeated here because it drives every edge case: the highest qualifying rung applies. The app looks at the cart subtotal, finds every rung whose band the cart falls into, and applies the one with the highest minimum subtotal.
What "cart subtotal" means here: the minimum and maximum on every rung are compared against the sum of each eligible line's original, pre-discount price — that line's unit price × quantity, before any discount is applied to it, and excluding tax and shipping. A line counts toward this sum unless it's tagged under Exclude subtotal tags (see Exclusions below). This is not the same as the discounted running subtotal a shopper might see live in their cart — because the check is based on original pricing, stacking a tier discount with another discount doesn't shrink the subtotal used to decide which rung applies.
Edge cases when laying out the ladder
Capped rungs can create gaps. If you turn on the maximum cap, the rung only applies while the subtotal is inside its band. A cart above the cap of a capped rung — with no higher rung to catch it — receives no discount. Use caps deliberately, and make sure a higher rung (or an uncapped top rung) covers everything above the cap.
Which products receive the discount
The products eligibility setting controls how a qualifying tier's discount is spread across the cart. It has two parts: a method and a discounted quantity.
| Method | What it discounts |
|---|---|
| All eligible products | Every item in the cart that isn't excluded |
| Highest-priced | Only the most expensive items, up to the discounted quantity |
| Lowest-priced | Only the least expensive items, up to the discounted quantity |
The discounted quantity field only matters for the Highest-priced and Lowest-priced methods. It sets how many items those methods cover. With All eligible products, the discount spreads across everything and the quantity is ignored.
How discounted quantity interacts with cart quantity
The discounted quantity is a ceiling, not a fixed count. The method covers up to that many of the highest- or lowest-priced units, but never more than the cart actually holds:
- Lowest-priced, quantity 1 — the single cheapest unit in the cart is discounted. With a 100% percentage value, this is the classic "cheapest item free" deal.
- Highest-priced, quantity 2 — the two most expensive units are discounted; everything else is left at full price.
- If the cart holds fewer units than the discounted quantity, every eligible unit is discounted (the method simply runs out of items before it reaches the ceiling).
"Lowest" and "highest" rank by unit price, so a single line with quantity 3 is treated as three units when the method picks which to discount. A discounted quantity of 1 on a 3-pack line discounts one of those three units, not the whole line.
Cart-wide vs matching-products scope
Two things combine to decide the final set of discounted items: the scope (whole cart vs only matching products) and the eligibility method above.
- Whole cart — the eligibility method runs against every non-excluded item in the cart. "Lowest-priced, quantity 1" picks the cheapest item anywhere in the cart.
- Only matching products — the method runs against just the items that match the discount (after exclusions), so the "highest" or "lowest" pick is made from that narrower set, and "All eligible products" discounts only those matching items.
The method always operates inside the scope. Pick the scope first to define the pool, then the method decides which items in that pool get the discount.
Exclusions: the two independent toggles
This is the most-confused part of tier discounts, so read it carefully. There are two separate exclusion toggles, each with its own tag list, and they do different things:
| Toggle | Tag list | Effect on a tagged product |
|---|---|---|
| Exclude product tags | Excluded product tags | The product does not receive the discount (but still counts toward the subtotal) |
| Exclude subtotal tags | Excluded subtotal tags | The product does not count toward reaching a tier (but can still be discounted) |
They are independent. A product can be on one list, the other, both, or neither — and each list produces a distinct outcome.
All four combinations
| Product appears in… | Counts toward the tier subtotal? | Can receive the discount? | Use this when… |
|---|---|---|---|
| Neither list | Yes | Yes | Normal product — the default |
| Exclude product tags only | Yes | No | Gift cards should help the cart reach a tier but should never be discounted |
| Exclude subtotal tags only | No | Yes | A clearance item shouldn't inflate the subtotal toward a tier, but is fine to discount once the cart qualifies |
| Both lists | No | No | Fully carve a product out — it neither helps reach a tier nor gets discounted |
It is easy to reach for the wrong toggle. "Exclude product tags" is about who gets the discount; "Exclude subtotal tags" is about what counts toward qualifying. If gift cards are accidentally discounting at 100% off, you turned on the wrong one — gift cards belong on Exclude product tags, not the subtotal list.
To exclude a product, tag it in Shopify with a tag you've added to the relevant list. Tagging is the mechanism for both toggles.
Customer eligibility
The customer eligibility setting decides which shoppers a tier discount is offered to.
| Method | Who qualifies |
|---|---|
| All customers | Everyone, signed in or not |
| By customer tags | Only signed-in customers whose account carries one of the listed tags |
With By customer tags, you supply a list of customer tags. A shopper must be logged in and have a matching tag — a guest checkout can never match a tag, because tags live on the customer account. Use this to build VIP-only or wholesale-only tiers.
Conditions (the rule engine)
Tier discounts can use the same condition rule engine as campaigns. This is gated by a single conditions enabled toggle:
- Off — the tier discount applies to every qualifying cart (subject to eligibility, exclusions, and scheduling).
- On — the cart must also satisfy your condition rule groups before the discount applies.
Rules are organized into groups with AND/OR logic, exactly like campaign display rules. For the full catalog of selectors and matchers, see Condition selectors reference and How conditions work.
Two tier-specific recipes:
- Only for a collection — add a rule that the cart contains a product from a given collection, so the tier discount only fires when the cart includes items from that collection.
- Gated by a cart attribute — add a cart attribute rule matching a key your theme sets (for example, a hidden flag from a landing page), so the discount only applies to carts carrying that attribute.
When a tier discount's first rule targets a cart attribute, the app passes that attribute key through to the discount so it can be evaluated at checkout. Keep the attribute key consistent between your theme and the rule.
Scheduling & markets
Two fields control when and where a tier discount runs:
- Start date and End date — schedule the active window. If you leave the start empty, the app starts the discount immediately; leave the end empty for no expiry.
- Markets — limit the discount to specific Shopify markets. When no markets are selected (the markets list is empty), the discount applies to all markets.
Combinations
Tier discounts carry their own combination toggles, separate from any campaign or shipping discount. There are three:
| Toggle | Default | Lets the tier discount combine with… |
|---|---|---|
| Combine with order discounts | On | Other order-level discounts |
| Combine with product discounts | On | Other product-level discounts |
| Combine with shipping discounts | On | Shipping discounts |
All three toggles default to on — a new tier discount opts in to combining with every category until you turn a toggle off. These map directly to Shopify's own combination settings — the app does not override Shopify's combination logic. Whether two discounts actually stack also depends on the combination settings of the other discount and on Shopify's platform rules for your store. For the full picture of how app discounts stack, see Applying discounts and How features interact.
Performance tracking
Each tier discount reports two performance figures pulled from Shopify:
| Metric | Meaning | Availability |
|---|---|---|
| Usage count | How many times the discount has been applied | Both Automatic and Code |
| Total sales | Sales attributed to the discount, in your store currency | Code discounts only |
You see these on the tier discounts list and on each discount's detail view. The asymmetry is by design: Shopify reports total sales for code discounts, so an Automatic tier discount shows a usage count but a total-sales figure of 0. Judge Automatic discounts by usage count, and lean on store analytics for their revenue impact.
Because these figures live on the underlying Shopify discount, switching a discount's type (see above) resets both to zero — the metrics belonged to the deleted discount.
Recipes
A whole-cart percentage tier that never discounts gift cards but still lets gift cards help reach the threshold.
Set the type
Choose Automatic so it applies with no code.
Build one rung
Add a rung with Minimum subtotal 100, cap disabled (so every cart over $100 keeps qualifying), Type Percentage, Value 15.
Spread the discount
Set products eligibility to All eligible products.
Exclude gift cards from the discount only
Turn on Exclude product tags and add the tag you use for gift cards (for example gift-card). Leave Exclude subtotal tags off so gift cards still count toward the $100 threshold.
The classic "cheapest item free once you have three" deal.
Gate on quantity with a condition
Turn on conditions and add a rule requiring the cart to contain at least 3 qualifying items (using the quantity selector). See Condition selectors reference.
Make the reward 100% off
Add a rung with Type Percentage and Value 100.
Limit it to the cheapest single unit
Set products eligibility method to Lowest-priced and discounted quantity to 1. The single cheapest unit becomes free; everything else stays full price.
Give tagged VIP customers a richer tier than everyone else by running a second, VIP-only tier discount.
Keep your public tier discount as-is
Leave your standard tier discount on All customers.
Create a second, gated discount
Create another tier discount with a higher reward (for example a steeper percentage at the same threshold).
Restrict it to VIPs
Set its customer eligibility to By customer tags and add your VIP tag. Only signed-in customers with that tag will see the richer tier.
Decide whether the two stack
Use each discount's combination toggles to control whether the VIP tier can combine with the public one, keeping Shopify's combination rules in mind.
Each subscription plan caps how many active tier discounts you can run. A VIP variant counts as a second discount — disable an unused one or upgrade if you hit the limit.
Troubleshooting
Related guides
Tier (volume) discounts
The basics of building a spend-more-save-more ladder.
Condition selectors reference
Every rule you can add to gate a tier discount.
Schedule, market & customer tags
How date, market, and tag targeting work across the app.
Discount not applying at checkout
Troubleshoot a discount that isn't showing at checkout.
