Discounts

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.

TypeHow shoppers get itBacked byUnderlying Shopify object
AutomaticApplies on its own once the cart qualifies — no code to typeA Shopify discount function (automatic app discount)Automatic app discount
CodeShopper must enter a discount code at checkoutA 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:

FieldWhat it doesNotes
TitleA label for the rung so you can tell tiers apart in the editorInternal; helps you manage a long ladder
Minimum subtotalThe cart subtotal at which this rung starts applyingThe qualifying floor for the band
Maximum subtotal capAn upper subtotal limit for the rungOnly used when the cap toggle below is on
Cap enabledTurns the maximum into an active ceilingWhen off, the rung has no upper bound
ValueThe size of the discountA number, paired with the type below
TypeFixed (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.

MethodWhat it discounts
All eligible productsEvery item in the cart that isn't excluded
Highest-pricedOnly the most expensive items, up to the discounted quantity
Lowest-pricedOnly 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:

ToggleTag listEffect on a tagged product
Exclude product tagsExcluded product tagsThe product does not receive the discount (but still counts toward the subtotal)
Exclude subtotal tagsExcluded subtotal tagsThe 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 listYesYesNormal product — the default
Exclude product tags onlyYesNoGift cards should help the cart reach a tier but should never be discounted
Exclude subtotal tags onlyNoYesA clearance item shouldn't inflate the subtotal toward a tier, but is fine to discount once the cart qualifies
Both listsNoNoFully 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.

MethodWho qualifies
All customersEveryone, signed in or not
By customer tagsOnly 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:

ToggleDefaultLets the tier discount combine with…
Combine with order discountsOnOther order-level discounts
Combine with product discountsOnOther product-level discounts
Combine with shipping discountsOnShipping 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:

MetricMeaningAvailability
Usage countHow many times the discount has been appliedBoth Automatic and Code
Total salesSales attributed to the discount, in your store currencyCode 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

On this page