Discount Master for WooCommerce

Description

Discount Master runs automatic, rule-based discounts and dynamic pricing, no coupon codes required.

  • No custom code: Bulk discounts, tiered pricing, BOGO deals, and role-based wholesale pricing, all from one rules engine.
  • Full control: Drag-and-drop rule priority with AND/OR conditions, so overlapping discounts behave exactly as you intend.
  • Matches your ads: Optionally push discounted prices to your Google, Facebook, Bing, Pinterest, and TikTok product feeds.

Features

  • Percentage Discounts: Offer store-wide percentage discounts or apply them to specific products or categories.
  • Bulk Discounts: Set up volume or quantity-based discounts to encourage larger purchases.
  • Cart-Based Discounts: Provide discounts based on cart total, item quantity, or specific products in the cart.
  • Product-Specific Discounts: Assign unique discounts to individual products or variations.
  • Category Discounts: Apply discounts to entire product categories to promote specific collections.
  • BOGO Deals: Create «Buy X, Get 1» offers with flexible quantity thresholds, not just strict one-for-one. Tiered BOGO deals are available in Discount Master for WooCommerce Pro.
  • User Role-Based Discounts: Customize pricing for different user roles, such as wholesale customers or subscribers. Pro unlocks more targeting, including specific users, purchase history, and coupon usage.
  • Scheduled Discounts: Plan promotions in advance by setting start and end dates for discounts.
  • Exclusion Rules: Exclude specific products or categories from discount rules as needed.
  • Product Feed Integration: Optionally publish your discounted prices to your Google, Facebook, Bing, Pinterest, and TikTok product feeds, so the price in the ad matches the price on your site.

Highlighted Discount Types

  • Storewide Percentage Discount: Implement a universal discount across all products.
    Example: A 10% discount on all items during a holiday sale.

  • Bulk Purchase Discount: Encourage larger orders by offering tiered discounts based on quantity.
    Example: Buy 3-5 items for a 5% discount; 6-10 items for a 10% discount.

  • Cart Total Discount: Reward customers who reach a certain cart value with a discount.
    Example: Spend over $200 and receive a 15% discount.

  • Product-Specific Discount: Apply discounts to particular products to boost their sales.
    Example: Get a 20% discount on Product X for a limited time.

  • Category Discount: Offer discounts on entire product categories.
    Example: All items in the «Winter Collection» category are 25% off.

  • BOGO (Buy X, Get 1) Offers: Encourage larger purchases with flexible-quantity BOGO deals.
    Example: Buy 3 T-shirts and get the 4th at 50% off.

  • User Role-Based Pricing: Provide special pricing for specific user groups.
    Example: Wholesale customers receive a 30% discount on all products.

  • First Order Discount: Attract new customers by offering a discount on their first purchase.
    Example: New users get a 10% discount on their first order.

Compatibility

Discount Master for WooCommerce integrates seamlessly with WooCommerce and is compatible with various themes and plugins, ensuring a smooth experience for both store administrators and customers.

  • High-Performance Order Storage (HPOS): Fully compatible, and declared as such to WooCommerce. All order data is read and written through the WooCommerce order API, so the plugin behaves identically whether your store keeps orders in the legacy post tables or in the high-performance order tables.
  • Cart & Checkout Blocks: Fully compatible, and declared as such to WooCommerce. Discounts apply, savings are recorded, and the «You saved» and before-discount price rows are shown on both the classic shortcode checkout and the newer block-based cart and checkout. The Mini Cart drawer shows the savings on its subtotal too.
  • Product Catalog Feed by PixelYourSite: Optional integration, off by default. Switch it on under Settings > Pricing and your discounted prices are written into every feed it generates, for every provider it supports, in both the free and Pro editions. You choose whether the discount goes into the sale price or the price.
  • Product Feed Manager for WooCommerce by RexTheme: Optional integration, off by default. Switch it on under Settings > Pricing and your discounted prices are written into the sale price and the current price of every feed it generates, for every merchant it supports, including Google Shopping, Facebook, Bing, and Pinterest.

Screenshots

Installation

Download the Plugin

  • Obtain the Discount Master for WooCommerce plugin .zip file from the official website or WordPress plugin repository.

Upload and Install

  • Navigate to your WordPress dashboard.

  • Go to Plugins > Add New > Upload Plugin.

  • Choose the downloaded .zip file and click «Install Now.»

Activate the Plugin

  • After installation, click «Activate» to enable Discount Master for WooCommerce on your WooCommerce store.

FAQ

Can I set up multiple discount rules simultaneously?

Yes, Discount Master for WooCommerce allows you to create and manage multiple discount rules concurrently, each with its own set of conditions and priorities.

Does Discount Master for WooCommerce support discounts for specific user roles?

Absolutely. You can define discounts exclusive to certain user roles, such as wholesalers or premium members.

Is it possible to schedule discounts for future dates?

Yes, you can set start and end dates for each discount rule, enabling automated promotions during specific periods.

How does Discount Master for WooCommerce handle overlapping discount rules?

Discount Master for WooCommerce allows you to set priorities for each discount rule. In cases where multiple rules apply, the rule with the highest priority will take precedence.

Can I exclude certain products from a discount rule?

Yes, Discount Master for WooCommerce provides options to exclude specific products or categories from selected discount rules.

Is Discount Master for WooCommerce compatible with High-Performance Order Storage (HPOS)?

Yes. The plugin declares HPOS compatibility to WooCommerce and handles all order data through the WooCommerce order API, so it works the same way whether your store uses the legacy post tables or the high-performance order tables. You can turn HPOS on under WooCommerce > Settings > Advanced > Features without deactivating the plugin, and no compatibility warning will be shown on that screen.

If you switch an existing store over to HPOS, the savings totals recorded before the switch are moved across to the new order tables automatically, in the background, the next few times you load the WordPress admin.

Can my discounted prices appear in my Google or Facebook product feed?

Yes, if you generate your feeds with Product Catalog Feed by PixelYourSite or Product Feed Manager for WooCommerce by RexTheme. Both integrations are off by default. Switch the one you use on under Settings > Pricing, and your discounted prices are written into the feeds it builds, so the price in your listing matches the price on your site. Your feeds do not change until they are next generated.

Only discounts that can be worked out from the product on its own are published: rules based on product, category, tag, or a start and end date. Rules that depend on the cart, the shopper, or the page they arrived from are left out, because there is no cart and no visitor at the moment a feed is built. Rules you have hidden on the single product page are left out too, since that page is where the shopper from the ad lands.

A few things worth knowing:

  • Buy-one-get-one and tiered rules are only published when they already apply to a single item.
  • A scheduled discount is published as a plain price, without its start and end dates attached, so regenerate your feed when the promotion ends.
  • With Product Feed Manager, check that your feed maps a Sale Price attribute. Most of its templates map Regular Price but not Sale Price until you add it.
  • Variable products are discounted through the variation the feed prices them from, and grouped products through the cheapest product in the group. Composite and bundled products keep their usual feed price, because their price is added up from the parts they are built from.

Does the plugin set any cookies?

One, and only for the «URL & traffic source» conditions. It is a first-party cookie named dmfwc_attribution, written by your own site in the visitor’s browser.

Those conditions ask how the shopper reached your store, but a discount is worked out on the cart or checkout page – long after the visit that carried utm_source=facebook. The cookie is what carries that answer forward.

It holds the page the visitor landed on, any campaign parameters in that link (utm_source, gclid, and similar), the site that referred them, and the pages they have visited on your store, each with a timestamp. It holds no name, email address, IP address, or order data. It is never sent to us or to any third party – only your own site reads it. It expires at the end of the attribution window you set under Settings > Attribution, or when the browser closes if you set that window to «browser session only».

It is only set if you actually use the feature. The plugin checks whether any active discount rule uses a URL condition, and if none does, the cookie is never written and the script behind it is never loaded – so a store that does not use these conditions has nothing extra to put in its cookie notice. If you do use them, list it as a first-party marketing cookie.

You can also switch it off outright, whatever your rules say, with a single line in your theme’s functions.php:

add_action( 'wp_enqueue_scripts', function() { wp_dequeue_script( 'dmfwc-attribution' ); }, 20 );

The URL conditions will then simply never match, and every other discount type carries on working as normal.

Does the plugin ask me to review it?

Once. After you have had it installed for two weeks, a notice appears on Discount Master’s own dashboard page asking for a WordPress.org review. You can snooze it for another two weeks or dismiss it permanently, and it never appears on any other admin screen.

Does it work with the Cart and Checkout blocks?

Yes. Discounts apply, savings are recorded, and the display rows are shown on both the classic shortcode checkout and the block-based cart and checkout. Compatibility with the Cart & Checkout Blocks is declared to WooCommerce.

On the blocks, the «You saved» row appears in the order summary just above the total, the same place it sits on the classic checkout. The crossed-out total and crossed-out subtotal appear as their own rows, labelled «Total before discount» and «Subtotal before discount», rather than being struck through on the total and subtotal lines themselves – the blocks do not allow anything to be added to those two lines.

The Mini Cart drawer shows a savings row under its Subtotal as well. That figure counts your product discounts only, not cart-level ones, because the drawer shows a subtotal and a subtotal never includes cart-level discounts – the full amount appears at the cart and at checkout, where the rest of the totals are worked out.

Is there a Pro version?

Yes. Discount Master for WooCommerce Pro is an add-on that runs alongside the free plugin, using the same rules screen. It adds more discount actions and a much wider set of conditions to build rules from.

Extra discount actions: product tiered pricing, tiered «Buy X get 1 at % off», «Buy X get 1 free», percentage, or fixed amount off the shipping cost, applying coupons automatically, and giving free gifts.

Extra conditions:

  • Product attributes
  • Product taxonomy
  • Product meta
  • Specific users
  • User roles
  • User email
  • User meta
  • Total orders made
  • Total spent
  • First purchase
  • Purchased products
  • Reviewed products
  • Number of reviews
  • Coupon applied
  • Coupon not applied
  • Payment gateway
  • Shipping method
  • Shipping zone
  • Sales flash badges
  • Tooltips

Where can I get support?

For support, please visit our support page or contact us through the plugin’s support forum.

Support Resources:

Unlock all Pro features with Discount Master for WooCommerce Pro.

Reviews

3. September 2025 1 reply
Super easy to set up and the discount rules work flawlessly. Exactly what my store needed.
Read all 1 review

Contributors & Developers

“Discount Master for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

“Discount Master for WooCommerce” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Discount Master for WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.1.0

  • Fixed: A discount set to apply only in the «Locations not covered by your other zones» shipping zone was saved without that restriction, so it applied in every zone instead. The zone is now kept, and a rule aimed at it applies only there. Worth checking any rule you set up that way: it will now hold back where it used to give the discount away.
  • Added: Optional integration with Product Catalog Feed by PixelYourSite. Switch it on under Settings > Pricing and your discounted prices are written into every feed it generates, for every provider it supports, so a shopper sees the same price in your Google, Facebook, Pinterest, or TikTok listing as they do on your site. Nothing needs remapping in the feed itself. You can choose where the discounted price goes: the sale price, which is the usual choice and gives you the crossed out price in Google and Facebook, or the price, which shows the discounted figure as the only price with no sale badge. A product you discount is also sent with no sale dates on it, so an old or upcoming sale schedule left on the product cannot knock your discounted price back out of the feed. If you also run WooCommerce Dynamic Pricing & Discounts, Discount Master leaves your feeds to that plugin, because Product Catalog Feed already prices them through it and using both would put a price in your feed that has been discounted twice over. You get a note in Discount Master when that happens, so you can pick which of the two prices your feeds. Off by default, and your feeds only change when they are next generated. Only rules that can be worked out from the product on its own are included: rules that depend on the cart, the visitor, or the page they arrived from are left out, as are rules hidden on the single product page.
  • Added: Optional integration with Product Feed Manager for WooCommerce by RexTheme. Switch it on under Settings > Pricing and your discounted prices are written into the sale price and the current price of every feed it generates, for every merchant it supports, including Google Shopping, Facebook, Bing, and Pinterest. The regular price is left alone, so your feed still shows what the product costs without the discount. Check your feed includes a Sale Price attribute – Product Feed Manager only writes out the attributes you have mapped, and most of its templates map Regular Price but not Sale Price until you add it. You also get three new options in the feed’s attribute list, under a Discount Master heading: Price, Price Include Tax, and Price Exclude Tax. Pick one of those when your channel has no sale price of its own, or when you want the discounted figure somewhere else in the feed. Off by default, and your feeds only change when they are next generated. The same rules apply as for Product Catalog Feed: only discounts that can be worked out from the product on its own are included. Variable products are discounted through the variation the feed prices them from – the default one, or the cheapest where no default is set – and grouped products through the cheapest product in the group. Composite and bundled products are left at their usual feed price, because their price is added up from the parts they are built from rather than taken from any one product.
  • Added: The Mini Cart drawer now shows a savings row under its Subtotal. It counts your product discounts only, because a subtotal never includes cart-level discounts and quoting the full figure there would not add up against the number beside it. The full figure still appears at the cart and at checkout.
  • Added: Saving a new discount while the «Activate discount» switch is off now asks you to confirm first, so a rule cannot be filed away inactive by accident and quietly never run. You get three choices: activate it and save, save it as inactive, or go back to editing. The reminder only appears when you create a discount, never when you edit one, so a rule you are deliberately keeping switched off can be saved again without being asked every time.
  • Fixed: The «You saved», crossed-out total and crossed-out subtotal rows now appear on the block-based cart and checkout. They previously only showed on the classic shortcode cart and checkout, so a store using the newer blocks got the discounted price with nothing to explain it. Discounts themselves always applied correctly on both. On the blocks the two crossed-out figures are shown as their own rows, «Total before discount» and «Subtotal before discount», because the blocks do not allow anything to be added to the total and subtotal lines themselves.
  • Fixed: If a discount’s settings failed to load when you opened it for editing, the error arrived as a browser popup that froze the page until you clicked it away. It now appears as a notification in the corner of the screen, matching every other message in the plugin.

2.0.0

  • Redesign release: Brand-new dark-theme admin UI with the «moss» accent palette across the Dashboard.
  • Added: Declared compatibility with WooCommerce High-Performance Order Storage (HPOS). The plugin works with either storage mode.
  • Added: Declared compatibility with the WooCommerce Cart & Checkout Blocks.
  • Added: New «Discount Master – applied discounts» metabox on the Edit Order screen. Replaces the small sidebar panel and shows the full rule behind every discount that fired on the order: its actions, conditions, schedule, which items it discounted, and a working link to the discount editor. Tells you when a rule has been edited since the order was placed.
  • Added: Every order line now records how much it saved, shown beside the item in the applied-discounts metabox.
  • Added: A new «URL & traffic source» condition group, so a rule can target how the shopper reached your store. Four conditions: campaign parameter (utm_source, utm_campaign, gclid, and the like), landing page URL, visited a page, and referring site. Example: give 10% off to everyone who arrived from a Facebook ad, or to anyone who has been to your size-guide page.
  • Added: Each URL condition compares with contains, is exactly, starts with, ends with, is one of, matches regex, has any value, and the negative of each. Matching is case-insensitive.
  • Added: A new «Attribution» section on the Settings tab, controlling how the URL conditions credit a visit. Choose first touch (the visit that first brought the shopper to your store) or last touch (their most recent one), and how long a visit stays eligible – from the browser session only, up to a year, with 30 days as the default. Both settings apply immediately, without clearing your page cache.
  • Added: The URL conditions store the visitor’s landing page, campaign parameters, referring site, and visited pages in a first-party cookie named dmfwc_attribution, so the rule can still see them later, on the cart or checkout page. The cookie is written in the visitor’s own browser and never sent to us or to anyone else; it holds no name, email, or IP address, and it expires with your attribution window. It is only set if one of your active rules actually uses a URL condition – stores that do not use the feature get no cookie at all. See the FAQ for what to put in your cookie notice.
  • Added: A one-off notice on the plugin’s own dashboard, after two weeks of use, asking for a WordPress.org review. It can be snoozed or dismissed for good, and never appears on other admin screens.
  • Added: New «Products already on sale» setting – choose whether a discount applies to products that are already on sale. Set it per discount or store-wide under Settings – Pricing.
  • Added: Settings field to show the extra discount in cart including/excluding vat depending on the store settings.
  • Fixed: Products on sale showed one price on the shop page and a lower one in the cart. Both now match.
  • Fixed: Editing a saved discount left the «Number of distinct products in cart» condition’s comparison and value boxes blank, and saving again wrote those blanks back over the rule.
  • Fixed: Product discounts shown to the customer were recorded on the order without a discount ID, so they could not be traced back to the rule that created them. The ID is now always recorded, on every order placed from this version onwards.
  • Fixed: On the Edit Order screen, a rule that gave a free gift (Pro) listed no items, because the gift line was not linked back to it. Gifts are now listed under the rule that added them and marked as gifts.
  • Fixed: Savings were not recorded on stores using the block-based checkout, which left the «You saved $X» line out of order emails, the applied-discounts panel on the Edit Order screen empty, and the dashboard savings totals reading zero.
  • Fixed: A product in the cart kept showing its «Discount» label after the rule was edited to no longer apply to that product. The price was already correct; only the label was left behind. Labels are now rebuilt every time the cart is recalculated, so they always match the rules currently in force – and an out-of-date label can no longer be carried onto an order.
  • Fixed: Discounts using a «URL & traffic source» condition did not apply on the page the visitor landed on. A shopper clicking a campaign link saw the regular price on that first page, and the discount only appeared once they moved to another page. The landing page now applies the discount straight away.
  • Fixed: A «Landing page URL» or «Visited a page» condition never matched when the full web address was pasted into it, because these conditions compare the page path only. Pasting a full address now stores it as a path automatically, and the field shows an example of the format it expects. Existing rules pick this up the next time they are saved.
  • Fixed: On the Edit Order screen, the applied-discounts panel listed shipping methods as internal codes such as «1:flat_rate:2». They now read with the same names the discount editor shows.
  • Fixed: On the Edit Order screen, the applied-discounts panel showed schedule dates in a fixed format and ignored the store’s timezone, so a rule scheduled for 15:00 could be listed at 18:00. Dates now follow the store’s date, time, and timezone settings, and the schedule is easier to read.
  • Fixed: «Total saved on this order» showed zero on orders whose only discount was free shipping, because the waived shipping cost was never counted. It is now included in the order savings and in the savings reports. Orders placed before this version keep their recorded amount.
  • Updated: All Dashicons replaced with Lucide inline SVGs across the admin interface (PHP templates, JS, CSS).
  • Updated: Translation template.

1.1.2

  • Fixed: Plugin icon in plugins list

1.1.1

  • Fixed: Plugin icon
  • Updated: flatpickr library

1.1.0

  • Added: BOGO (Buy X Get 1) discount type with flexible quantities
  • Added: free shipping discount action with per-method selection
  • Added: user login status targeting (show discounts only to logged-in or guest customers)
  • Added: cart quantity and distinct item conditions
  • Added: AND/OR logic toggle for combining multiple conditions
  • Added: duplicate discount button for quick rule creation
  • Added: internal notes field for admin reference
  • Added: discount rules search & filter in the list
  • Added: «You saved $X» summary in customer order emails
  • Added: bulk discount table display on product pages
  • Added: security checks to admin handlers
  • Updated: flatpickr library
  • Updated: sortable library
  • Fixed: discount conditions not evaluating correctly for cart-level actions
  • Fixed: cart/order total display issues
  • Fixed: discounts not applying on frontend in some cases
  • Fixed: pricing display for product variations
  • Fixed: date/timezone comparison issues
  • Fixed: XSS vulnerabilities in admin interface
  • Tweak: Optimized database queries for faster discount processing
  • Tweak: admin interface with better status badges (Active, Inactive, Scheduled, Expired) and colors
  • Tweak: discount rules with stop-processing flag to prevent rule stacking

1.0.4

  • Updated: Translations template.
  • Fixed: Issue with Pro plugin crashing & better Pro support.
  • Fixed: Fee calculation fix.

1.0.3

  • Updated: Plugin logo.
  • Fixed: Discounts not working in some cases due to post not being passed correctly.
  • Tweak: Redirect to discounts page after saving a new discount for better UX.

1.0.2

  • Added: More discount options, available in PRO.
  • Fixed: Populate discount function.
  • Fixed: Delete discounts.
  • Fixed: Improved kses – fixed pagination results #.
  • Fixed: Dropdown results scrollbar.
  • Tweak: Better integration with PRO plugin.
  • Tweak: Improved products search, first search by SKU.

1.0.1

  • Fixed: visibility issue with pagination, products field, and better escaping.

1.0.0

  • First version