Some products should never be discounted.
Some should never be bought by the dozen.
CartRules is a small Shopify app where you attach simple rules to products: block discount codes on the items that shouldn't be marked down, and cap quantity per order on the items that shouldn't be bought by the dozen. Both enforced automatically, at checkout — no code, no theme edits.
| Rule | Applies to | Status |
|---|---|---|
| No discount codes | 12 products · tag: no-promo | Active |
| Max 2 per order | Collection: Plush XXL | Active |
| Max 1 per order | Product: Album Special Ed. | Active |
| Max 3 per order | Tag: heavy-item | Paused |
Two margin leaks Shopify doesn't fix natively.
Excluding products from discount codes isn't a native setting, and quantity caps aren't either. Merchants either build fragile workarounds or lose money finding out the hard way.
A 15% code stacks on a product that's already on sale. You find the double discount in your margin report — after the order shipped.
Merchants have filed feature requests on the Shopify forums for a "not eligible for discount codes" checkbox. It still doesn't exist.
A customer orders 6 giant plushies on flat-rate shipping. Past a certain quantity, the parcel jumps a carrier price tier — and the order loses money.
A limited edition drops. Without a per-order cap, resellers empty the entire stock in one checkout before real customers get a chance.
Built around the one combo merchants actually need.
Six principles behind CartRules — each one addresses a specific gap in the discount-code-exclusion and order-limit apps already on the App Store.
Discounts and quantity, together.
Order-limit apps don't touch discounts. Discount suites don't touch quantity. CartRules does both, in one tiny app, at a fraction of the price.
Native Polaris. No clutter.
Rule type → products → message. Three screens, no settings maze. Built for a busy, non-technical merchant, not a power user.
A custom message per rule.
A limit without explanation looks like a bug. Write the customer-facing message yourself, in any language — French, Japanese, anything.
Product, collection, or tag.
Tag a rule once — no-promo, heavy-item — and every future product with that tag is covered automatically.
Corrected, never blocked blind.
Quantity auto-adjusts in the cart with a clear note. A blocked discount code shows your message instead of a generic checkout error.
No revenue share, ever.
One flat monthly price. We undercut the category leader while doing the one combo it explicitly refuses to build.
The differences are concrete.
A side-by-side against the established order-limit apps and the big discount suites — based on our own market research, September 2026.
| Feature | Order-limit apps | Discount suites | CartRulesrecommended |
|---|---|---|---|
| Quantity limits per order | ✓ | — | ✓ |
| Discount-code exclusion | — | via app-managed discounts | ✓ |
| Target by product / collection / tag | basic | collections only | ✓ all three |
| Custom message, any language | English-only on cheap plans | — | ✓ |
| Rules dashboard with pause/activate | limited | buried in settings | ✓ |
| Cart quantity auto-adjust | — | — | ✓ |
| Must move all discounts into the app | n/a | yes, required | no |
| Entry price | 3.99–20 USD/mo | 10–30 USD/mo | Free |
Your first rule, in under 3 minutes.
No documentation required to get started — but if you want the deep, step-by-step version with every screen explained, the full guide is one click away.
Pick a rule type
Block discount codes, or limit quantity per order. Pick one to start — you can create as many rules as your plan allows.
Choose products
By individual product, by collection, or by tag — tag-based rules apply automatically to every future product with that tag.
Write the message
One line, in your own words, in your own language. Save & activate — it's enforced at checkout immediately.
Want every screen, explained?
The full guide walks through installation, both rule types, the dashboard, what customers see, and troubleshooting — everything needed to run CartRules without asking anyone.
Flat price. No revenue share.
No transaction fees, no percentage cut of sales. Upgrade, downgrade, or cancel any time from your Shopify admin.
Try both rule types on a small catalog.
- 3 active rules
- Both rule types
- Default customer messages
- Product & collection targeting
For stores actively protecting margin.
- Unlimited rules
- Custom messages, any language
- Tag & collection targeting
- Email support
For high-volume, high-touch stores.
- Everything in Growth
- Product-page notices
- Per-customer limits (v2)
- Priority support
On the roadmap.
V2 ideas we're planning after v1 is live on the App Store. Built around what merchants actually ask for — no fixed dates.
Per-customer limits across orders
Cap total quantity per customer across multiple orders, not just within a single cart — closes the "reorder to bypass" loophole.
Customer-tag exceptions
Let wholesale or VIP customer tags bypass a quantity cap, so B2B orders aren't blocked by a rule meant for retail shoppers.
Minimum quantity rules
The inverse of a max-quantity rule — require a minimum order size on products where small orders don't cover fulfillment cost.
Scheduled rules
Set a rule to activate and expire automatically — useful for time-boxed launches and short discount blackout windows.
Rule analytics
"This rule triggered 45 times this month" — see which rules are actually protecting margin, and which ones to retire.
Product-page notices
Show "max 2 per order" directly on the product page via a lightweight theme app extension, so customers see the limit before adding to cart.
Questions, answered.
The short version. For the full walkthrough of every screen, see the complete guide.
Get in touch, or read the guide first.
Whether you're stuck on a rule, found a bug, or have a feature request — we read everything and reply within 24 hours.
Get in touch
or read the guide first.
CartRules is owned end-to-end by one developer at MPC Trades — the code, the App Store listing, and the support inbox. There's no ticket queue and no outsourced help desk in between: your message goes straight to them.
CartRules