Nobody plans for two discount codes to meet on one order. The welcome code came from a popup, the 15% came from an email three weeks ago, and the customer, quite reasonably, tries both. When they combine, you’re funding a discount nobody designed.
Shopify has settings for this. They’re better than nothing and worse than people think, and the gap between those two is where the money goes.
How stacking actually happens
Since 2022, every Shopify discount has combination checkboxes: can this combine with product discounts, order discounts, shipping discounts. Two discounts stack only when both sides agree to combine.
Sounds airtight. In practice, three doors stay open:
The forgotten discount. Combination settings are per-discount. Your team configures the new ones carefully, but the evergreen code from two years ago combines with everything, and it’s the one on all the coupon sites.
Other apps’ defaults. Loyalty, referral, and email apps create real Shopify discounts with their own combination settings. Some default to combinable. You didn’t choose that; you inherited it.
Same-class blind spots. The checkboxes govern classes (product/order/shipping), not intent. Two product-discount codes that both allow product combinations will happily stack, even though no human ever wanted BUNDLE10 and INFLUENCER20 on one order.
So the honest answer to “does Shopify stop stacking?” is: it stops the stacking you remembered to prevent, discount by discount, forever.
Configuration vs. enforcement
There’s a useful way to think about this. Combination settings are configuration — they describe how each discount would like to behave. What most merchants actually want is a policy: one code per order, period, with a short list of exceptions.
A policy needs to be enforced somewhere every code passes through. That’s checkout, and that’s what PromoLock’s stacking lock does.
One switch, store-wide
In PromoLock’s Controller, turn on Discount Stacking Lock. From that moment, every checkout on your store accepts one discount code. The first code stays, extras are rejected with a message you write. It covers native codes, PromoLock codes, and codes minted by any other app, because it acts on the checkout itself rather than on individual discount settings.
No auditing old discounts. No hoping the next app’s defaults are sane. The forgotten 2023 code can allow every combination it likes; it still can’t stack, because the policy outranks it.
Keeping the combinations you actually want
Most stores have exactly one legitimate stack: free shipping riding along with a discount. The lock has an exceptions list for this. A code you put there always applies and doesn’t count toward the one-code limit, so FREESHIP works alongside anything while everything else stays single. The list takes patterns too — SHIP# covers every code starting with SHIP.
That’s the whole setup, honestly. A switch, a message, maybe one exception.
What it’s been costing you
Here’s the part worth doing even if you don’t install anything: measure it. Stacked discounts are invisible in day-to-day order review because each order looks like it just had “discounts” on it. PromoLock’s analytics separates the stack — on regular-priced items it treats the largest discount as the one you intended and counts everything piled on top of it as loss. That number, over your last 90 days, is what the open doors have been costing you. For most stores it’s the second-biggest leak after codes on sale items, and closing it is one switch.