Shopify Automatic Discount Limit: Why You Hit 25 and What Actually Works
Shopify caps stores at 25 active automatic discounts. What the limit counts, why it exists, and three honest ways past it — including one that never touches your existing discounts.
Shopify Automatic Discount Limit: Why You Hit 25 and What Actually Works
It's mid-October. You're staging your BFCM setup and you go to create one more automatic discount. Shopify refuses. Not with a warning, not with a soft nudge — it just won't save, and tells you (in effect) to go deactivate something first.
If this has happened to you, you already know the number: 25. That's the maximum number of active automatic discounts a Shopify store can hold. For a store running two or three campaigns a year, it's a number you'll never meet. For a store that treats promotions as an operating system — quantity breaks, regional thresholds, VIP tiers, seasonal rotations — it arrives faster than you'd expect.
Here's what the limit actually counts, why it exists, and the three ways stores get past it, including one that doesn't require deleting a single existing discount.
One disclosure before the details, so you know who's talking: we build Markdo, and one of the three options below is ours. The other two need no app at all.
What the limit actually is
Shopify's help documentation puts the cap at 25 active automatic discounts — the number as of October 2026. A few things worth knowing about how that count works:
- Every automatic discount type shares the same pool. Percentage off, fixed amount, BOGO, Buy X Get Y, free shipping thresholds, quantity breaks — they all count toward the same 25.
- Discount codes don't count. Coded discounts are a different mechanism with a much higher ceiling. But codes require customers to enter them, which defeats the whole point of always-on offers. Your VIP tier can't silently apply 5% if the customer has to type something into a box.
- App-created discounts live in a separate pool. Discounts created through Shopify Functions (the framework most serious discount apps run on) are counted separately. That pool was capped at 5 for years — Shopify raised it to 25 in November 2024, which tells you something about how many stores were bumping into it.
So the good news buried in all this: hitting the wall on automatic discounts doesn't mean your store is broken. It means your store has gotten serious about promotions.
Why Shopify caps it at all
It's worth being fair to Shopify here, because the limit isn't arbitrary greed or a paywall trick.
Automatic discounts apply silently. There's no code for the customer to enter, no confirmation screen — the discount just appears in the cart when conditions are met. Every active automatic discount is a standing set of conditions evaluated against every qualifying cart at checkout. Stack enough of them and two things go wrong: checkout gets more work to do, and — more importantly — you lose the ability to reason about what any given cart will actually receive. Which discount wins? Do they combine? Did the VIP tier stack with the BOGO on the collection that was already 20% off?
The cap is a guardrail against that fog. It's a defensible default for a platform serving millions of stores. It's just the wrong ceiling for the stores that run promotions year-round, because those are precisely the stores whose promo logic has grown past what 25 one-off discounts can express.
How fast 25 slots actually burn
Here's what 25 looks like for a hypothetical mid-size store in October — the numbers are invented, the shape isn't. Assumptions: one main market plus three international ones, always-on segmentation, a serious BFCM plan. Every row is currently active.
| Promotion running right now | Slots used |
|---|---|
| Quantity breaks on your 5 bestseller collections | 5 |
| Country-specific free shipping thresholds (US, CA, UK, AU) | 4 |
| VIP tier: 5% off for repeat customers | 1 |
| First-order welcome offer | 1 |
| BOGO on the slow-moving SKU group | 1 |
| "Buy 2, save 10%" bundles across 3 collections | 3 |
| Seasonal campaigns currently live | 11 |
| Total | 26 |
You're over the cap without running anything exotic. No flash sales, no loyalty tiers beyond one VIP level, no wholesale channel. Notice which row hurts most: the 11 seasonal campaigns. Those are the ones you keep re-creating all year, and each re-creation is admin work — pick the products, set the value, check the dates, test at checkout.
Your three options, honestly ranked
Option 1: Delete and recreate (free, and sometimes the right call)
If you're running fewer than 10 active promotions at any time, this is the correct answer. Archive the expired ones, create what you need, move on. Don't install an app for a problem you don't have.
The tradeoff appears at scale. Deleting a discount loses its configuration, so every seasonal rotation means rebuilding conditions from scratch. And BFCM is the worst possible moment to discover this, because it's exactly when you want the most discounts staged at once — the cap and your busiest quarter arrive together.
Option 2: Consolidate (limited, and the limits bite)
The advice you'll get on forums is "combine your discounts." Sometimes that works — two 10% campaigns on adjacent collections can become one. But the most slot-hungry discount types can't consolidate, because native conditions don't express what you actually want:
- One free-shipping discount can hold a single minimum-purchase threshold. Four countries, four different thresholds, four discounts. That's not merchants being stubborn — it's how the condition model works.
- One quantity discount holds one tier table. Different tier tables for different collections means separate discounts.
Consolidation trades away the specificity that made the discounts worth having. You end up choosing between the cap and the strategy.
Option 3: Move the logic out of the discount list
This is the approach we built Markdo around, and it starts from an observation: the 25-slot cap counts discounts, not promotions. Those are different things.
Markdo installs a single Shopify Function — one discount, occupying one slot in the separate app-discount pool. All of your rules live behind that one discount. Ten rules, forty rules, quantity breaks on every collection and thresholds for every country you ship to: still one slot. Your existing 25 automatic discounts stay exactly as they are, untouched.
At checkout, the Function reads your full rule set and computes what applies. That's why it can do things the discount list can't: rules that target different segments with different logic, thresholds per country inside a single rule, quantity tiers per collection without multiplying discounts. (If you're curious about why this runs fast enough to not hurt checkout, we wrote about the Shopify Functions architecture separately.)
The free plan includes 3 active rules with no credit card, which is enough to move your two or three most slot-hungry promotions and get under the cap again.
What happens to your existing discounts
The question every careful merchant asks before trying Option 3: do the app's discounts collide with the ones I already have?
Short answer: not automatically. Whether any two discounts stack is governed by Shopify's combination settings, and discounts don't combine by default — Markdo's discount ships with combinations off. A cart qualifying for both your native BOGO and a Markdo quantity break receives one discount, not two.
Two honest caveats while you migrate:
- Don't run the same promotion in two places. If a quantity break exists both as a native discount and as a Markdo rule, you've re-created the exact fog this article opened with. Recreate it as a rule, test a cart at checkout, then deactivate the native one.
- Reporting sees one discount, not one per rule. Everything behind the single Function node reports in Shopify analytics under that one discount's name. If per-promotion revenue attribution matters to you, keep it in your own tracking — that's the real price of compressing 25 slots into one, and we'd rather you know it now than discover it in February.
And that, in full, is the migration checklist: recreate the slot-hungry promotions as rules, test a cart at checkout, compare the amounts against the old discounts, deactivate the native equivalents one at a time.
If you only run a few promotions
One last thing, because a blog post telling everyone to install an app is not what you should trust: if your store runs a handful of campaigns and you've never seen the limit error, none of this is for you. The 25-slot cap is a feature at that scale. It keeps your discount list readable and your margins checkable.
This post is for the other store — the one with a spreadsheet tracking which discounts exist, why they exist, and what happens if two of them meet in the same cart. If the spreadsheet exists, the cap isn't a guardrail anymore. It's a constraint on the strategy.
The cap counts discounts, not promotions. Once those are different things in your store, 25 stops being a ceiling. Install Markdo free and keep your existing discounts untouched.