Skip to content
← Back to blog
GuidesFounder · 5 min read

Shopify Lets Discounts Stack Now. Your Settings Decide Whether They Should.

Unico CommerceUnico Commerce, Founder

Shopify Lets Discounts Stack Now. Your Settings Decide Whether They Should.

Most stacking is not a shopper trick. It is a settings accident.

A sitewide automatic runs. A creator code goes out. A free-shipping threshold fires. Each looked safe alone. At checkout Shopify's engine does what it is built to do — apply the best permitted combination — and the three combine into a margin outcome nobody approved.

If you never set combination rules deliberately, you did not prevent stacking. You left it to defaults and timing.

How Shopify's engine actually combines

Shopify's documented rules, not folklore:

  • Classes are separate surfaces. Product discounts act on lines. Order discounts act on the subtotal after product discounts. Shipping discounts act on delivery options. They can coexist on one order when each side permits it.
  • Combining is mutual opt-in. Two discounts combine for a class only when both sides allow it. A product code and an order code combine only if each allows the other's class.
  • When combining is blocked, best wins. If two discounts cannot combine, Shopify applies the best discount or best permitted combination for that cart — it does not apply both.
  • Order of math is fixed. Product first, then order on the reduced subtotal. Multiple percent-off order discounts each calculate off the original subtotal; a percent-off plus fixed-amount order pair applies percent first, then fixed.
  • Limits are hard. Maximum 25 active automatic discounts per store. A customer can use up to 5 product-or-order codes plus 1 shipping code on one order. Only one shipping discount ever applies — shipping discounts never combine with each other.
  • Same-line product stacking is gated. Multiple product discounts on the same line item require explicit same-line tag matching (the productDiscountsWithTagsOnSameCartLine mechanism, API 2026-04), reciprocal on both sides. On same-product stacking outside that gate, expect best-only. This is also where Plus-only behavior appears — do not assume non-Plus stacks like Plus.

None of this is hidden. It is in Shopify Help under discount combinations and in the Discount Function docs. Almost nobody reads it before launching three promos at once.

Where the accident happens

The classic stack is not exotic:

  1. An automatic 10% off the order for a seasonal push.
  2. A creator code for 15% off products, left combinable with order discounts.
  3. A free-shipping automatic above a threshold.

Each team saw one promo. The shopper sees all three. Product discount reduces the lines, order discount applies to the reduced subtotal, shipping zeroes out — a triple that was never priced as a triple.

Multi-class app discounts make it sharper. A single app discount declaring product + order + shipping classes combines with another discount only if that discount allows all declared classes. A code that allows product and order but not shipping will not combine with it at all — while a code that allows all three will. One checkbox decides whether a stack exists.

The audit to run this week

1. List every live discount and its class. Automatic and codes, product / order / shipping, plus any app-declared multi-class discounts. Include thresholds and minimums — eligibility decides which stacks are even reachable.

2. Read combinesWith on each. For every pair that could meet in one cart, ask: do both sides mutually allow the other's class? If yes, assume they will combine when a shopper qualifies. If you cannot answer in under a minute per discount, you do not have governance — you have hope.

3. Price the reachable stacks, not the singletons. Take the two or three discounts most likely to meet (sitewide + creator + shipping is the usual trio) and compute the combined outcome on a representative basket as an illustrative stack. Example shape, not a claim about your store: product reduction first, order percent off the reduced subtotal, shipping removed. That combined number is the promo you are actually running, whether you named it or not.

4. Decide the default. The safe default is narrow: new discounts ship non-combinable unless a named reason says otherwise. Creators and affiliates get codes scoped to products or a window, with order-combining off unless the campaign priced the stack. Shipping stays single by platform rule — use that constraint instead of fighting it.

5. Keep a ledger. Who approved the stack, why, what combined cost was priced, when it expires. Without an audit trail, a "10% push" becomes a 25%-effective outcome nobody can reconstruct.

What to do instead of banning stacks

Some stacks are good business — a product launch code plus free shipping can be the cheapest way to win a hesitant basket. The goal is not zero combining. It is priced combining: every permitted stack has an owner, a reason, and a combined-cost ceiling tested against a holdout.

Run that holdout at the stack level, not the singleton level. Withhold the combination from a slice of qualifying carts and compare incremental contribution. Single-discount tests will tell you each promo "works" while the stack quietly loses.

The takeaway

Shopify's engine does not prevent stacks. It optimizes permitted ones for the buyer.

If you didn't deliberately set what combines with what, you are already running stacks — you just haven't priced them. List them, gate them, ledger them, and test the combination, not the parts.


Running more than one promo at once? Connect your Shopify store and Unico will map which discounts can legally meet in one cart — and gate the stack behind shoppers who actually need it.

Subscribe to our newsletter

Get the latest updates, articles, and resources sent straight to your inbox. No spam, unsubscribe at any time.

unico commerce

The Intelligence Behind Better Commerce.

Resources

© 2026 Unico Commerce. All rights reserved.