2.2 – 2026-09-22
- NEW New “Except” section on the user restrictions, to block chosen customer accounts and email addresses from using a coupon, whatever the other restrictions allow
- NEW Blocked email addresses accept wildcards, so you can block a whole domain at once, and are checked against the email entered at checkout as well as the account email, so they work for guest customers too
- NEW New “Only for” section on the user restrictions, to reserve a coupon for chosen customer accounts, which unlike an email restriction cannot be used by anyone who simply knows the address
- NEW The user roles restriction now has a “Guests (not logged in)” option, so a coupon can be allowed for chosen roles and guest shoppers at the same time, for example customers and guests but not wholesalers
- NEW The coupons list now links the usage count to the orders that used each coupon
- TWEAK WooCommerce no longer lists the plugin as untested with the Cart and Checkout blocks
- TWEAK The license key is now hidden as you type it, instead of being shown in full on the settings screen
- TWEAK Activating the plugin now takes you straight to its settings page, where the license key goes
- FIX A coupon that combines a product taxonomy restriction with a quantity or user restriction now enforces both. The taxonomy check could previously re-approve a coupon that a quantity or user rule had already turned down
- FIX Coupons no longer cause a fatal error when a product or a taxonomy term they were set up with has since been deleted
- FIX Coupons applied to an order in the admin are now checked against that order’s customer, instead of against the staff member placing it, so user, role and amount-spent restrictions work when you order on a customer’s behalf
- FIX WPML: tag/category exclusion restrictions now correctly apply in translated languages, not just the coupon’s original language
- FIX WPML sites using a different domain per language: the license is now recognised as active in situations where it previously read as inactive, switching every restriction off
- FIX Clearing the license key now actually clears it, instead of leaving the plugin reporting the license as active until the page was reloaded
- FIX A license key that fails to activate is now cleared and reported with an error, instead of being saved while nothing works
- FIX Guest shoppers trying a coupon restricted to specific user roles now see a message explaining why, instead of a generic error or, in some cases, the error message left over from another coupon
- FIX Subscription restrictions applied to an order in the admin now look at that order, so a renewals-only coupon works on a renewal and a coupon excluded from renewals is correctly refused on one
- FIX Coupon groups can no longer be managed by Editors, matching the capability the menu already required
- DEV Coupon validation no longer writes PHP warnings to the log when the checkout has no state field
- DEV Hide the license key field and the renewal link (which includes the license key) on our demo sites
- DEV Updater v13.4
- DEV The release ZIP no longer includes CHANGELOG.md
- DEV Tagging a release now rebuilds the translation template and sends it to our translation site, so new strings are ready to translate straight away
- DEV Tested up to WordPress 7.2-alpha-63789 and WooCommerce 11.2.0-beta.1
2.1 – 2026-06-04
- NEW WooCommerce Subscriptions: new restriction tab to allow or disallow coupons for new subscription initial orders and renewal orders
- FIX “Billing or shipping” country and state restrictions now correctly accept the coupon when at least one address matches, instead of requiring both
- FIX Postcode interval matching no longer corrupts subsequent exact/wildcard checks when mixed in the same postcode list
- FIX State and postcode restrictions now work correctly on the blocks checkout
- DEV Tested up to WordPress 7.1-alpha-62456 and WooCommerce 10.8.0-beta.2
- Update live from WordCamp Europe 2026
2.0 – 2026-05-25
- TWEAK Add WooCommerce-style “And” separators between coupon restriction subsection groups in admin
- FIX Remove debug hardcoded “user spent” value that could bypass spending-based coupon restrictions
- FIX Correct postcode interval matching for non-numeric ranges in billing and shipping validations
- FIX Persist saved “Type of address” value on coupon edit screen
- DEV Remove debug
console.logfrom coupon admin screen script - DEV Update GitHub Actions for the Naked Cat Plugins organization
- DEV Tested up to WordPress 7.1-alpha-62411 and WooCommerce 10.8.1
1.9 – 2026-02-13
- FIX Build release ZIP GitHub action to make sure WordPress detects a direct upload as the same plugin instead of creating a new folder
1.8 – 2026-02-03
- FIX False positive restrictions were applied when coupons were automatically generated by 3rd party plugins instead of created in the admin interface
- FIX Rename filters for taxonomy terms to be excluded to
ptwoo_coup_res_tax_exclude_idsinstead ofptwoo_coup_res_tax_idswhich is for terms to be included - DEV Improve WordPress Coding Standards
- DEV Updater v13.1
- DEV Implement automated release GitHub actions
- DEV Tested up to WordPress 7.0-alpha-61557 and WooCommerce 10.5.0-rc.2
1.7 – 2025-07-03
- NEW New taxonomy “Coupon groups” to allow for better WooCommerce coupons organization
- DEV Tested up to WordPress 6.9-alpha-60403 and WooCommerce 10.0.0-rc.2
1.6 – 2025-04-17
- NEW We are now called Naked Cat Plugins 🎉
- NEW Quantity based restrictions: minimum and maximum number of items in cart
- NEW Quantity based restrictions: minimum and maximum number of unique products in cart
- DEV Tested up to WordPress 6.8 and WooCommerce 9.8
1.5 – 2024-11-15
- FIX Fatal error when WooCommerce is running update routines for 9.4
- DEV Implement demo mode (for internal usage)
- DEV Tested up to WordPress 6.7 and WooCommerce 9.4.1
1.4 – 2024-10-30
- FIX Checkout failed when no postcode restriction was set
- DEV License validation on websites with WPML set to have different domains per language
1.2 – 2024-10-23
- FIX Updater
1.1 – 2024-10-15
- FIX Several i18n strings
1.0 – 2024-10-10
- First release
