Coupon Affiliates – Affiliate Plugin for WooCommerce
Changelog
Version 8.1.0 – 29th July 2026
New: (PRO) The “Coupon Affiliate” box on the order edit screen now flags when the commission already granted to an affiliate is higher than the current calculated commission for the order (for example, after a partial refund), with a one-click “Deduct” link that removes the difference from the affiliate’s unpaid commission balance and updates the granted amount for the order. This also detects refunds that were not allocated to specific line items (amount-only refunds), which the automatic recalculation cannot see.
New: (PRO) Added a “Performance Bonuses” section to the “Design” settings tab (shown when performance bonuses are enabled) to customise the colours of the bonuses progress bar (bar and background) and the reward summary box (background and text) on the affiliate dashboard.
New: Added an option to the “Fraud Prevention” settings to not give commission to affiliates that use their own code.
New: (PRO) Added {firstname} and {lastname} merge tags to the “Payouts Emails” settings, so the affiliate’s first and last name can be included in the “New Payout Request” and “New Commission Payout” emails.
New: (PRO) Added an “Email Greeting Text” option to the “Affiliate Email Reports” > “Report Customisation” settings to customise the greeting at the top of the report email, with {first_name}, {last_name}, {display_name} and {username} merge tags (previously always the affiliate’s display name).
New: Added an “Exclude products the coupon does not apply to from commission” option to “Advanced Calculation Settings” (Settings > Commission). When enabled, products excluded by the coupon’s own WooCommerce “Usage restriction” settings – “Products”, “Exclude products”, “Product categories”, “Exclude categories” and “Exclude sale items” – earn no commission, neither percentage nor fixed. Category restrictions include sub-categories, matching how WooCommerce itself applies them. This is useful where certain products should never be commissionable, such as bundles or kits built from individually priced items. It is disabled by default, leaving the existing behaviour unchanged: commission is calculated on every product in the order, because the affiliate referred the sale regardless of which items the discount applied to.
Tweak: (PRO) On the edit user screen (and the “View Affiliate” page “Edit User” tab), the “Store Credit Balance” field has been moved out of the payment settings into its own “Store Credit” section below it, so it is always visible regardless of the affiliate’s selected payout method.
Tweak: (PRO) The plugin now declares compatibility with the WooCommerce “Cart and Checkout Blocks” feature, so it is no longer listed as incompatible in the block editor.
Tweak: (PRO) The “Custom Payment Method” #1 and #2 payout methods now have the same “Limit to certain user roles & groups?” option as the other payout methods, so a limit applied to them from an affiliate group can also be seen and changed in the settings.
Tweak: (PRO) Payout method role/group limits on the affiliate dashboard are now checked against the affiliate whose dashboard is being shown, instead of the logged-in user. Previously an admin viewing an affiliate’s dashboard was shown the payout methods available to their own user role.
Tweak: Statistics rebuilds are considerably faster and no longer time out on coupons with a long history. They are now split into batches by number of orders instead of 20 days at a time, so days with no orders are skipped and a coupon spanning several years finishes in a handful of requests rather than over a hundred; each order’s saved data is loaded once per batch instead of re-queried for every value; and the object cache is no longer switched off while orders are processed (which had prevented WordPress from caching that data at all). The “Batch size” option (Settings > Debug) is now the number of orders per request, and the order statuses and date column used to size the work now match those the calculation actually counts – previously a single old cancelled order could add years of empty batches.
Tweak: (PRO) The store credit redemption option now shows on the WooCommerce Cart and Checkout blocks. It previously only appeared on the shortcode based cart and checkout, so on block based checkouts (the default for newer stores) affiliates had no way to apply their store credit balance to an order.
Tweak: (PRO) The store credit checkbox at the cart and checkout now saves your choice more reliably. Previously the choice was only saved on requests where the cart totals were recalculated, which could leave the checkbox unresponsive.
Tweak: Affiliate commission can no longer be recorded as a negative amount. Large custom discounts or store credit could previously cause a negative commission to be saved to the order and shown in the admin new order email; the commission is now floored at zero before it is stored.
Tweak: Optimised the notifications bell in the admin header, which now also opens instantly on the first click showing the latest notifications, instead of often doing nothing until it was clicked again.
Tweak: (PRO) The store credit checkbox at the cart and checkout is now protected with a security nonce.
Tweak: (PRO) The product commission rates table now verifies a request token tied to the specific coupon it was shown for.
Tweak: (PRO) Corrected the multi-level affiliate relationship check used by the dashboard statistics and statistics refresh requests, which was being tested the wrong way round.
Tweak: (PRO) Removed an unused leftover template file that loaded WordPress directly and could be requested by anyone.
Fix: (PRO) Fixed an issue where the store credit option could stop appearing at the cart and checkout entirely if the “Wallet System” setting had been saved without a selection, even though store credit still showed as enabled throughout the admin area. An empty selection is now treated as the built-in store credit system.
Fix: (PRO) Corrected how custom discounts and store credit reduce percentage commission when an order contains products on different commission rates. Previously these order-level discounts were always deducted at the coupon’s commission rate, which could over-deduct – and even produce a negative commission – when the products actually earned a lower per-product rate. They are now deducted at the blended rate actually earned across the order’s products. This is controlled by a new “Deduct custom discounts & store credit at each order’s blended commission rate” setting (Settings > Commission > Advanced Calculation Settings, enabled by default); disable it to revert to the previous behaviour of always deducting at the coupon rate.
Fix: Fixed an issue with “Include taxes in fixed commission calculations” enabled, where tax was added to the fixed commission amounts once for every line item in the order instead of once in total, so it compounded on orders containing more than one product.
Fix: (PRO) Product and category commission percentages entered as a decimal were rounded down to a whole number when commission was calculated, so a product set to 2.5% paid only 2%, and a rate below 1% paid nothing at all. The rate entered in the settings is now used in full.
Fix: (PRO) Fixed payout methods disappearing from the affiliate dashboard (“No payout methods are available currently”) with nothing in the settings to show why. Saving an affiliate group rewrote the role limit of every payout method – including methods that were not shown on that page because they were disabled at the time – to “all of the user roles that exist right now, except this group”. Enabling such a payout method later left it unavailable for that group, and any group created afterwards was locked out of it as well. A group’s payout methods are now stored as an exclusion for that group alone, only the methods actually shown on the “Edit Affiliate Group” page are changed when it is saved, and groups created later are no longer affected. Existing limits are converted automatically when updating, so groups that were excluded from a payout method stay excluded (you can re-enable a method for a group by ticking it on its “Edit Affiliate Group” page).
Fix: (PRO) The “Limit to certain user roles & groups?” option in the “Payouts” settings could be applied while being completely invisible – the roles list was hidden because the option was switched off, while the switch itself was hidden because roles were selected, leaving nothing on the page but the label. The switch is now always shown, and switching it off clears the selected roles so a limit can never be left applied by checkboxes that are not visible.
Fix: (PRO) The “Payouts” settings now list any groups that have a payout method turned off on the “Groups” page, with a link to change it. Previously nothing in the payout method settings showed that a group level limit existed.
Fix: (PRO) The “Payout Methods” column on the “Groups” page showed the wrong payout methods for every group whenever a payout method had a role limit set, because it compared the group against the wrong part of the setting.
Fix: (PRO) Limiting the “Wise Bank Transfer” payout method to certain groups had no effect, because the “Edit Affiliate Group” page saved it under a different setting name to the one used by the affiliate dashboard and the payouts settings. Wise Bank Transfer also never appeared in the payout methods list on the “Edit Affiliate Group” page.
Fix: Affiliate dashboards could become permanently stuck on “Calculating statistics…”, with “Total Sales” and “Total Commission” showing only “…” in the admin. A coupon’s saved statistics were deleted before the rebuild started and only written back at the very end, so a rebuild that did not finish (a request timing out, or the affiliate closing the page) left the coupon with no statistics at all – which triggered another full rebuild on the next page load, indefinitely. Statistics are now kept in place until a rebuild has completed, an interrupted rebuild carries on from where it stopped, a failed request is retried before giving up, and a coupon with recorded usage but no countable orders (all cancelled, or placed before its start date) no longer rebuilds on every single load.
Fix: (PRO) The “Processing Commission” total is no longer set to zero at the start of a statistics rebuild. It is rebuilt separately and only replaces the stored value once the rebuild has completed, so an interrupted rebuild can no longer leave an affiliate showing 0.00. With pending commission turned off (and in the free version) the stored value is now left untouched, where previously loading a dashboard could clear a manually entered amount.
Fix: The “Latest Referrals” summary on the “Statistics” tab only searched the last 90 days, so an affiliate whose most recent orders were further back than that saw fewer than 5 referrals – often none at all – while the “Recent Orders” tab listed them correctly. It now looks across the full history; the query is capped by a row limit, so this does not depend on how many orders a coupon has.
Fix: (PRO) Fixed a “wpdb::prepare() must have a placeholder” notice appearing in the debug log, from the one-time migration that encrypts existing Wise bank details.
Fix: (PRO) Searching or changing page on the product commission rates table no longer switches it to the default commission rates when the “Show search box” option is turned off. The coupon was read from the search form, so with the form hidden it was sent empty and the table came back showing the default rates instead of the affiliate’s.
Fix: (PRO) The product commission rates table now shows the default rates when it is used without a coupon (the [couponaffiliates-rates] shortcode with no “coupon” set). It previously fell back to the individual commission rates of the author of the page the shortcode was placed on.
Fix: (PRO) The [couponaffiliates-rates] shortcode now works with coupon codes that contain characters such as “&”. The code was being escaped before it was looked up, so it matched no coupon and the table quietly showed the default commission rates instead of that affiliate’s.
Fix: (PRO) The information icon next to a payout method on the affiliate dashboard’s “Commission Payouts” tab showed no tooltip when hovered over, so the payout details recorded for that payment could not be read.
Version 8.0.0 – 9th July 2026
New: Added a new “Bulk Payouts” page that allows you to review all pending payout requests, and pay them all in one-click, for every payout method in one go. It shows the progress for each payout and any failures that occur.
New: Added a “Refresh Statistics” tool to the admin “View Affiliate” page and the coupon edit page. It recalculates a coupon’s all-time statistics directly from the admin area – going through every order one coupon at a time, with a live progress bar and log – without needing to open the affiliate dashboard first. On the “View Affiliate” page you can refresh multiple selected coupons at once, and the coupons table updates as each one completes.
New: Added all-time statistics boxes (Sales, Commission, Processing, and Unpaid) to the “Coupon Affiliates” box on the coupon edit page, which update automatically after running the new Refresh Statistics tool.
New: Added a “Reset Start Date” tool to the coupon edit page to set the “Coupon History Start Date” and recalculate the coupon’s statistics in a single step.
New: Added a “Password” field to the admin “View Affiliate” page (Edit User tab) with a button to send the affiliate a password reset email.
New: Completely modernised the affiliate dashboard “Settings” tab with a clean, boxed layout – the affiliate’s account details appear in a card on the left, with each remaining section (notifications, and the PRO payout and statement settings) in its own styled card on the right, each with its own “Save changes” button. Added hooks and filters throughout so the sections can be customised, reordered, added to, or removed.
New: Added a “Settings Tab Layout” option (under the “Settings Tab” settings) to switch the affiliate dashboard “Settings” tab between the new “Modern (boxed sections)” layout and the original “Legacy (tabs)” layout.
New: (PRO) Your registration form custom fields now appear in the “Account Details” section of the affiliate dashboard, pre-filled with the values each affiliate submitted when they registered, so they can view and update them. Includes a new per-field “Editable by user” option to choose which fields affiliates can edit, and an option to show or hide them all.
New: (PRO) Registration custom fields are now also shown, pre-filled, and editable on the admin “View Affiliate” page (in the “Edit User” tab under “Basic Information”) and on the standard WordPress edit-user profile screen.
Improvement: Cache invalidation is now fully compatible with persistent object caches (such as Redis) – creating a new affiliate, changing coupon assignments, or updating an affiliate’s group is now reflected immediately in the admin and affiliate dashboards, without needing to manually flush the object cache.
Improvement: Changing a user’s affiliate group (or role) now instantly refreshes the affiliate users list, admin dashboard widgets, and the user’s cached affiliate data, instead of waiting for the caches to expire.
Improvement: Assigning or unassigning an affiliate coupon now immediately updates the cached dashboard access checks, so newly assigned affiliates get instant access to their dashboard, and removed affiliates lose access straight away.
Improvement: Consolidated all cache invalidation into a central cache layer, and reduced unnecessary cache clearing (for example, customer registrations no longer clear the admin dashboard caches), improving cache efficiency on busy stores.
Improvement: (PRO) The “Export Payouts” button on the admin payouts page now opens a dropdown to customise the export before downloading – filter by status, payment method, and a start/end date range, optionally include each payout’s payment details, and choose between a CSV file or a new landscape PDF report containing a table of all the matching payouts.
Improvement: (PRO) The “Export Orders” button on the admin “Affiliate Orders” page now opens a dropdown to customise the export before downloading – filter by order status, affiliate group/role, and a start/end date range, and optionally limit it to only orders with an assigned affiliate.
Tweak: Made some design changes to the admin settings page.
Tweak: Redesigned the “Help & Support” section on the admin settings page.
Tweak: For the “Show customer last name” option on the referred orders table, a new sub-option is available to only show the first letter of the last name.
Tweak: (PRO) For “Scheduled Payout Requests” when set to “Weekly”, a new option is available to set the day of the week for the payout request to be generated (defaults to Monday).
Tweak: (PRO) Improved the “how to payouts work” section on the admin payouts page.
Tweak: (PRO) In the “Payouts” settings tab, the “Invoices & PDF Statements” section now includes toggles to enable the “Invoices” and “PDF Statements” features directly, each with a link to its settings once enabled.
Tweak: (PRO) Improved the design of the “Create Payout Requests” admin page.
Tweak: (PRO) On the “Create Payout Requests” admin page, in the “Manual Admin Requests” section, when an affiliate has not selected a payout method it now shows a notice with a “Configure payout method” option to set one for them inline (from the enabled methods), after which the row reloads so a payout request can be created.
Tweak: (PRO) On the “Create Payout Requests” admin page, when a coupon has no affiliate user assigned, an “Assign a user” option now lets you search for and assign a user to the coupon inline, after which the row reloads with the relevant next step.
Tweak: (PRO) On the “Create Payout Requests” admin page, when an affiliate’s payout details have not been set, a “Set payout details” button now links straight to their payout settings (the “Edit User” tab on the “View Affiliate” page), with a refresh icon next to it to re-check the row once their details have been entered.
Tweak: (PRO) Made a few tweaks to how PRO license deactivation handles some important PRO tracking functionality, to better prevent any disruptions if the PRO license is reactivated later.
Tweak: In the admin coupons list added a line that shows the commission rate for that coupon, and a tooltip that shows where that commission rate is coming from exactly.
Tweak: (PRO) For the product-level “Per-Affiliate Product Commission Rates”, the “User Role” type now uses a dropdown if available roles instead of a free text field, to prevent entering an incorrect role slug.
Tweak: Updated some strings on the admin settings page to be localised properly.
Tweak: Made a small optimisation improvement to loading saved options.
Tweak: Replaced the “REFRESH ALL DATA” link on the coupon edit page with the new Refresh Statistics tool, which recalculates the statistics immediately from the admin area instead of waiting until the affiliate dashboard is next loaded.
Tweak: On the “View Affiliate” page, the notice shown when a coupon’s statistics still need calculating now has a single button that opens the new Refresh Statistics tool, and the notice is hidden once the refresh completes.
Tweak: Changing a coupon’s “Coupon History Start Date” now automatically triggers a statistics refresh (the same way changing the commission rate does), since it affects which orders are included in the statistics.
Tweak: Made some changes to the edit coupon page “Coupon Affiliates & Commission” section.
Tweak: The activity log now only records manual admin edits to a coupon’s commission amounts and rates (unpaid, processing, pending, and the commission rates), and no longer logs the plugin’s own automatic updates to them. This prevents the activity log from filling up with thousands of entries when a coupon with a large order history has its statistics recalculated, which on some sites could slow down or time out the affiliate dashboard.
Tweak: On the affiliate portal, you can now click the coupon title in the dashboard header to copy the coupon code to your clipboard.
Tweak: On the affiliate portal, affiliates assigned to more than one coupon now see a dropdown menu next to the coupon title, to quickly switch between their coupon dashboards.
Tweak: On the registration form, the terms and conditions checkbox label now aligns next to the checkbox instead of dropping onto a new line below it.
Tweak: (PRO) Redesigned the “Custom Form Fields” section in the Registrations settings with a modern card layout, drag-and-drop reordering, and a delete button for each field.
Tweak: On the affiliate dashboard “Settings” tab, the “reset your password” link now emails the password reset link directly (after a confirmation prompt), the same as the WooCommerce “Lost password” form, instead of sending the affiliate to a separate page.
Tweak: On the “Affiliate Orders” admin page, the bulk actions (“Move to Trash” and the order status changes) now show a confirmation prompt before applying, including the number of selected orders and a warning that status changes may affect affiliate commissions. All bulk actions on this page now also check that at least one order is selected.
Tweak: The “Bulk Edit: Coupon Settings” tool now shows a confirmation prompt before applying updates, telling you how many coupons are about to be changed and that the changes cannot be automatically undone.
Tweak: The “Import/Export Database Tables” tool now shows a clear confirmation warning before importing, explaining that the import will permanently replace all existing data in the selected table, and checks that a CSV file has been chosen before submitting.
Tweak: Added an “Only show orders with an affiliate user” option to the “Affiliate Orders” admin page, and made a tweak to the groups/roles filter.
Fix: Made some improvements and fixes to the “Bulk Edit: Coupon Settings” tool “Import CSV” feature.
Fix: Added WooCommerce Checkout Block fix for URL conversion tracking and related checkout order processing hooks.
Fix: Fixed an issue where partial refunds were not correctly adjusting commission when “Include taxes in % commission calculations” was enabled.
Fix: Fixed an issue where the Copy button on the Rates tab stopped working after performing a search.
Fix: (PRO) Fixed an issue where store credit applied with the WooCommerce PayPal Payments (PPCP) gateway caused PayPal to capture less than the order total (short by the store credit amount), due to PPCP double-counting the negative fee in its amount breakdown.
Fix: Fixed an issue where some referred orders were missing from the referred orders table (while still counted correctly in the stats totals) on stores with a positive GMT/UTC timezone offset, such as most of Europe and Asia.
Fix: (PRO) Fixed a PHP notice logged on the affiliate dashboard payout tab, caused by a static database query being passed through wpdb::prepare() with no placeholders.
Fix: Fixed several PHP notices and warnings (logged when WP_DEBUG is enabled) that could appear when the referred orders table showed subscription renewal orders, including deprecated WooCommerce Subscriptions property access and an undefined variable.
Fix: Fixed an issue where the “Manage Registrations” links on the admin dashboard and notification bell could lead to a “you do not have permission to access this page” error when Affiliate Registration features were disabled; these links are now hidden while the feature is off.
Fix: Optimised the admin notification bell so it no longer slows down the wp-admin backend on larger sites – it now polls every 30 seconds instead of 10 (filterable via the “wcusage_admin_bell_poll_interval” hook), caches the notification lookups so the same queries no longer run on every poll, only builds the dropdown when it is opened, and prevents polls from stacking up if the server is slow.
Fix: (PRO) Fixed an issue where affiliates could see an “Email is required.” error when saving their Payout Settings from the dashboard “Settings” tab if the “Account Details” section was disabled, and prevented saved account details from being overwritten with empty values in that case.
Fix: (PRO) Fixed an issue where an affiliate using the “Direct Bank Transfer” payout method was treated as having entered their payout details even when the bank fields were left empty, which let payout requests be created (and skipped the “payout details not set” checks) without any bank details.
Fix: Fixed an issue on the admin “View Affiliate” page and coupons table where coupons with genuine 0.00 sales or commission kept showing the “needs refresh” indicator (and the notice) even after their statistics had been calculated – reappearing on page reload despite the Refresh Statistics tool updating them correctly. The indicator now only shows when a coupon’s statistics have never been calculated.
Fix: Fixed a potential PHP error on the “Affiliate Orders” admin page (on PHP 8+) when a bulk action was applied with no orders selected.
Fix: Fixed an issue where the affiliate registration table could be missing on sites that first installed the plugin on version 6.1.0 or later, causing a “table doesn’t exist” database error on the registration form and the admin Registrations page. The table is now created automatically on the next load.
Fix: Fixed an issue where logging in via the affiliate portal (or the affiliate dashboard, MLA portal, or registration page) redirected the affiliate to the WooCommerce “My Account” page instead of keeping them on the page they logged in from.
Fix: (PRO) Fixed an issue on the affiliate portal where submitting a payout request reloaded the page and returned to the “Statistics” tab instead of re-opening the “Payouts” tab.
Fix: (PRO) Fixed an issue where PDF statement pages (such as “/wcu-statement/…”) could show a “page not found” error after first enabling the “PDF Statements” feature. The permalink rewrite rules now refresh automatically when statements are enabled or disabled, and any affected sites repair themselves on the next page load.
Security: Made a few minor security hardening improvements as part of routine maintenance and precautionary measures.
Other: Updated the Freemius SDK.
Other: Updated translations.
Version 7.8.2 – 2nd June 2026
Fix: Fixed an issue where the referred orders table could show one fewer order than the date range stats summary.
Fix: (PRO) Fixed an issue with the direct domain feature incorrectly reporting that a valid affiliate coupon code does not exist when attempting to add a new direct domain.
Fix: Fixed an issue with the affiliate portal mobile hamburger menu not being clickable on some browsers, and the menu icon showing over the open sidebar menu.
Fix: Fixed an issue with administrators not being able to see affiliate orders table for other affiliates on the affiliate portal.
Fix: Fixed an issue where AJAX affiliate registrations could create an affiliate user account without a saved registration entry if registration storage failed.
Fix: Fixed a potential issue where in some cases the affiliate portal page would not load and show an error.
Fix: Fixed an issue with the MLA portal page slug option when changed not updating the MLA portal page link on the affiliate dashboard immediately in some cases.
Security: Fixed a security vulnerability that could potentially allow an unauthenticated user to view another affiliates recently referred orders stats (reported by Stefano via Patchstack).
Version 7.8.1 – 15th May 2026
New: Added a new “Privacy & Cookies” settings tab with related options moved into this so they are easier to find, to control the cookie storage and sessions options etc. Also changed sessions to use WooCommerce sessions for the auto-apply coupon backup.
New: (PRO) Added a new option in “Coupon Checkout Settings” to always allow any other non-affiliate discount coupon to be applied alongside zero-discount affiliate coupons, overriding all individual-use and other coupon restrictions, and an option to completely hide applied affiliate coupons with zero discount on the cart and checkout page.
New: (PRO) Added a new {coupon_description} merge tag for dynamic landing pages, which outputs the WooCommerce coupon description.
New: (PRO) Added a “Dynamic Landing Page Template Protection” option to the landing pages settings. When enabled, visiting the base template page directly without an affiliate code will redirect visitors to a configurable URL (defaults to the site root).
Tweak: (PRO) Improved dynamic creatives loading reliability, performance, and cache-busting when a creative is edited.
Tweak: (PRO) Affiliates whose saved payout method has been disabled can no longer request payouts (manual or scheduled) and are prompted to select a new method.
Tweak: Made some styling tweaks to the border radius styling of some elements on the affiliate dashboard and admin pages.
Tweak: Improved full and partial refund handling so refund recalculations can update saved commission stats when needed, lifetime/referrer tracked orders are included in partial refund payout adjustments, and full refunds update coupon all-time usage totals.
Tweak: Improved the database table import/export tool to work better when moving data between sites.
Fix: (PRO) Fixed several QR code issues on mobile browsers: logo not appearing when “Include logo in QR code” was enabled, download button not working, and downloaded files being saved with a .png.html extension instead of .png.
Fix: Fixed affiliate dashboard tabs becoming unclickable in some setups, particularly when using JS optimisation plugins such as WP Rocket, Autoptimize, or LiteSpeed Cache.
Version 7.8.0 – 30th April 2026
New: (PRO) Added a “Rewards Log” section to the affiliate dashboard Performance Bonuses tab so affiliates can see a history of the rewards they have earned.
New: (PRO) Added a “Rewards Log” admin page (Coupon Affiliates > Performance Bonuses > Rewards Log) showing earned rewards across all affiliates.
New: (PRO) Added a “Custom Event / Action (Non-Order)” trigger type to rewards, allowing …