MarketingDiscount rulesStacking & priority

Stacking & priority

How coupons and discount rules combine, covering per-rule stacking toggles, priority order, the store-wide Stacking Mode (Stack All / Apply Best / Apply First), and why a rule didn't fire.

When a cart qualifies for more than one discount, Brainerce needs to know whether they all apply, only the best one applies, or just the first. That's controlled at two levels: per-rule toggles for one-off exceptions, and a store-wide Stacking Mode that sets the default policy. Get the store-wide mode right first; reach for per-rule toggles only for exceptions.

Coupons and rules can stack, but both sides must opt in

A customer with a coupon code can also trigger automatic discount rules, and the order summary shows each discount as its own line so the customer sees exactly what they're getting. Stacking requires both sides to agree:

  • The coupon must have Can combine with other discounts turned on (it is by default).
  • The rule must have Combines with coupons turned on, and this is off by default on new rules.

If either side opts out, the rule won't apply when a coupon is on the cart.

Coupon plus discount rule: what the customer actually pays

Take a $100 item, a 10% discount rule, and a customer entering a 20% coupon. There are three outcomes and the default is the one that surprises people.

Default setup: the customer pays $80. You created the rule and changed nothing, so Combines with coupons is off. The coupon applies and the rule does not. $100 minus 20% is $80.

Rule opted in: the customer pays $70. You switched Combines with coupons on. Both now apply, and this is the part to read carefully: each discount is calculated from the original $100, and the two amounts are then added together. 10% of $100 is $10, 20% of $100 is $20, total $30 off, so the customer pays $70.

It is not $72. Discounts are never applied one after the other, so the 20% is never taken off an already-reduced $90.

No coupon entered: the customer pays $90. Only the rule applies.

Two consequences of discounts being summed rather than compounded: two 50% discounts on a $100 item make it free rather than $25, and the combined total is capped at the cart subtotal so an order can never go negative.

Per-rule stacking toggles

Each rule has three controls, in its Stacking section:

  • Combines with coupons goes on if a customer with a coupon code can ALSO trigger this rule.
  • Combines with other rules goes on if other rules can run alongside this one.
  • Exclusive stops every rule after this one. It does not cancel rules that already ran.

"Exclusive" does not mean "only this rule"

This is the toggle that catches people out. Under Stack All and Apply First, rules are evaluated in Priority order, lowest number first, and Exclusive is checked only after the rule has been applied. So a priority-10 rule with Combines with other rules on applies, then your priority-20 Exclusive rule applies on top of it, and only then does evaluation stop.

To make an Exclusive rule genuinely the only discount on the order, give it the lowest Priority number in your store: 0, or lower than every other rule that could match the same cart. Under Apply Best it behaves the way the name suggests: an Exclusive rule wins outright regardless of priority or size.

Exclusive also has no effect on coupons. A coupon on the cart is governed by Combines with coupons, not by this toggle.

Priority

Every rule has a Priority (lower numbers run first, default 0). Priority decides the order rules apply in under Stack All, and which single rule wins under Apply First. A common setup: shipping discount at priority 10 (runs first), item discounts later.

Store-wide Stacking Mode

The store-wide mode decides how multiple matching rules combine. Find it at Discount Rules → ⋯ → Discount Rules Settings → Stacking:

ModeWhat happensWhen to use
Stack All(default) Rules apply in priority order for as long as each one permits stacking. Evaluation stops at the first rule whose Combines with other rules is off, and that is off by default, so out of the box this mode still applies just one rule. Turn the toggle on for every rule you want to layer.Layered promos, once the per-rule toggles are set.
Apply BestAll matching rules are computed; only the product-discount rule with the largest total discount applies. A shipping discount is handled separately and still applies on top, and an Exclusive rule wins outright regardless of size.Stores that promise "always the best deal" or want to avoid stacking edge cases.
Apply FirstRules are evaluated in priority order (lowest first); the first matching rule applies, the rest are skipped.When you want explicit control: "first the storewide sale, then nothing else."

The per-rule toggles are not applied uniformly across modes. Stack All honours Combines with other rules and Exclusive, but Exclusive only stops the rules that come after it in priority order; see above. Apply Best ignores Combines with other rules, since it only ever applies one product rule anyway, but still respects Exclusive, and there it does win outright. Apply First stops after the first match no matter what any toggle says.

Only one shipping discount is ever applied

Free-delivery rules sit outside the product-discount stack, so one of them can apply alongside a product discount. But shipping discounts never stack with each other: if two Shipping Discount rules both match the same order, checkout honours a single one and silently drops the other: "10% off delivery" and "$5 off delivery" do not add up to both. Neither the cart nor the rules table warns you. Build one shipping rule per outcome, and if you need a bigger saving in some cases, express it in that one rule's conditions rather than layering a second rule on top.

Troubleshooting "my rule didn't fire"

  1. Check status = Active and the validity window covers now.
  2. Check Filters. Does any cart item match? This includes a Shipping Discount: filters on one restrict it to carts holding a matching item, so a filtered free-delivery rule stays quiet on a cart that has nothing matching in it.
  3. Check Conditions. Do all (or any, in OR mode) conditions pass?
  4. Check Stacking Mode. In Apply Best a higher-discount rule wins; in Apply First a lower-priority rule won.
  5. A coupon on the cart? The rule won't fire unless Combines with coupons is on (it's off by default). Enable it in the rule's Stacking section.
  6. Filtering by SKU? SKU and attribute filters are exact, case-sensitive text and are never checked against your catalog, so one typo and the rule matches nothing while still showing as Active. See Filters.

Troubleshooting "my rule fired when it shouldn't have"

The case that produces a bigger discount than you set up:

  1. An Order Discount with Filters on it. On an Order Discount the filters decide only whether the rule fires; the discount then comes off the whole cart subtotal, both for Percentage and for Fixed Amount. So "$50 off, filtered to Electronics" as an Order Discount takes $50 off the entire cart. Switch the rule to a Product Discount if the saving must stay on the filtered items; that type is confined to them and capped at what they are worth.

A quieter case: a typo in an Exclude filter row. Exclusions are never validated, so a misspelt exclude excludes nothing and the rule covers products you meant to hold back.

What's next?