

Every rule in one place: priority order, live status, uses and total saved, with JSON export and import
MTX Smart Discount Rules for WooCommerce turns your pricing strategy into rules you can actually see. Build a discount once in a visual editor, set the conditions it fires on, decide when it runs, and let the engine handle the rest. No coupon codes to hand out, no snippets to paste into functions.php.
Whether you run one evergreen “spend $100, save 10%” offer or a calendar full of weekend flash sales, the aim is the same: make WooCommerce discounting something you configure, not something you code.
✨ All Features | 💰 Upgrade to Pro | 📖 Documentation | 🆘 Support
WooCommerce ships with coupons, and coupons are fine as long as your customer knows the code, types it correctly, and the offer never needs to depend on anything more than a cart total. The moment you want “10% off for wholesale customers, but only on Fridays, and not on items already marked down,” you are writing PHP.
MTX Smart Discount Rules replaces that with a rule engine. Each rule is a set of conditions and a set of actions. Conditions decide when a rule applies; actions decide what it takes off. Rules have a priority order and a stacking mode, so you control exactly what happens when two of them match the same cart.
Discounts apply automatically as a negative cart fee, so there is nothing for your customer to type in at checkout.
/wp-json/mtxsdr/v1/, plus documented action and filter hooksThe free version covers real discounting, not a demo:
✅ Visual rule editor with condition and action builders
✅ Percentage discounts, on the entire cart or on products you select
✅ Fixed-amount discounts, capped at the value of whatever they target
✅ Cart subtotal condition with full comparison operators
✅ Specific products in cart condition
✅ Product categories in cart condition
✅ Customer role condition, including guest shoppers
✅ Total cart item quantity condition
✅ Scheduling: date range, recurring weekdays, and overnight time windows
✅ Skip products already on sale
✅ Priority ordering and three stacking modes: additive, exclusive, highest-first
✅ Dashboard: totals across every rule, with quick actions
✅ Analytics: total discount given, orders with a discount, and top performing rules
✅ Rules list with filtering by all, active, or inactive
✅ JSON import and export of every rule
✅ Rule logs with configurable logging level
✅ Up to 5 active rules at a time. Create as many as you like, activate five
Dates are shown in your site’s date format and evaluated in your site’s timezone, so a rule that ends “Sunday” ends when your store’s Sunday ends.
MTX Smart Discount Rules Pro is a separate plugin that installs alongside this one and unlocks the full engine:
✅ Unlimited active rules
✅ BOGO (Buy One Get One) actions
✅ Tiered pricing: quantity-based discount tiers
✅ More conditions: payment method, shipping method, user meta, visitor type, and behavioral triggers
✅ Purchase-history conditions: first-time buyer, order count, and lifetime spend
✅ Condition groups with OR logic, not just AND
✅ Per-rule usage limits, in total across the store and per customer
✅ Auto-apply coupons with human-readable codes like SAVE15-XY9K2A
✅ Abandoned cart recovery emails
✅ Behavioral tracking and product analytics
✅ AI-powered rule insights: ranks rules by real performance and explains what to adjust
✅ Storefront discount badges, pricing tables, and countdown timers
✅ Email notifications with customizable templates
✅ Rule testing simulator and an advanced data manager
👉 See the full Free vs Pro comparison
There is no shortage of WooCommerce discount plugins. Here is what actually separates this one:
Actions:
* mtxsdr_loaded – Fired after core components initialize (extensions boot here)
* mtxsdr_rule_evaluated – Fired when a rule is evaluated
* mtxsdr_discount_applied – Fired when a discount is applied to cart
* mtxsdr_evaluation_complete – Fired when all rules have been evaluated
* mtxsdr_cart_discounts_applied – Fired after cart discounts are applied
* mtxsdr_order_discounts_tracked – Fired after order discount usage is tracked
* mtxsdr_rule_saved / mtxsdr_rule_deleted – Rule lifecycle events
Filters:
* mtxsdr_evaluate_custom_condition – Implement custom condition types
* mtxsdr_calculate_custom_discount – Implement custom discount calculations
* mtxsdr_condition_types / mtxsdr_action_types – Declare custom types
* mtxsdr_evaluate_condition_groups – Combine condition groups (defaults to false, so grouped rules do not match unless an extension handles them)
* mtxsdr_rule_applies – Veto a rule after its conditions pass
* mtxsdr_rule_data – Add per-rule data of your own to the REST response
* mtxsdr_discount_result – Filter the evaluation result before caching
* mtxsdr_active_rule_limit – Change the active rule limit
* mtxsdr_settings_defaults / mtxsdr_sanitize_settings – Extend plugin settings
* mtxsdr_admin_localize_data – Extend admin app data
* mtxsdr_rule_allowed_fields / mtxsdr_sanitize_rule_data – Extend rule fields
GET/POST /wp-json/mtxsdr/v1/rules – List/create rulesGET/PUT/DELETE /wp-json/mtxsdr/v1/rules/{id} – Manage single ruleGET/PUT /wp-json/mtxsdr/v1/settings – Get/update settingsGET /wp-json/mtxsdr/v1/export / POST /wp-json/mtxsdr/v1/import – Rules backup{
"name": "10% Off for Members",
"description": "Give 10% discount to logged-in members",
"enabled": true,
"priority": 10,
"conditions": [
{
"type": "user_role",
"roles": ["customer", "subscriber"]
}
],
"actions": [
{
"type": "percentage_discount",
"percentage": 10,
"apply_to": "cart"
}
],
"stacking": "additive"
}<h3>Support</h3>
* 🆘 Free support: the WordPress.org support forum
* 📖 Documentation: sdrules.com/docs
* 💰 Pro and pricing: sdrules.com/pricing
MTX Smart Discount Rules for WooCommerce does not collect or track any store
visitor data, and loads no scripts on your storefront.
The plugin uses the Freemius SDK for optional,
opt-in usage analytics (admin-side only). On first activation you are
asked whether to share non-sensitive diagnostic data: WordPress and PHP
versions, plugin version, site URL, and admin email. You can skip this and
the plugin works identically either way. You can opt out at any time from
the Account page. Nothing is collected without your explicit consent.