Recently Published Versions

New Features

REST API v3

  • Coupon Endpoints - Added coupon management under /banners/{id}/coupons — list, get, update, delete, generate, and import coupons (#15358)
  • Click Details in GET /transactions - The fields parameter on GET /transactions now accepts first/last click details (time, referer, IP, data1, data2) and click count, so click context can be fetched alongside the commission in a single call (#15994)

Integrations

  • Per-Locale and Per-Domain Campaign Routing in Shopify - Multi-country Shopify stores under one Shopify account can now map each storefront domain, market handle, or locale to a different campaign within a single integration, instead of routing everything to one shared campaign (#15674)
  • Shopify Billing Address Fields - Billing address fields (name, phone, company, address, city, ZIP, province, country) and a compound full-address option are now available in the Shopify Extra data dropdowns (#15996)

Tracking

  • Time-Limited UserAgent + IP Association - Added a validity period setting for "Track referrals by UserAgent and IP address", mirroring the existing IP-only setting and defaulting to 2 days. Useful where many users share the same IP and UA (VPNs, iOS user-agent freeze) (#15417)

Plugins

  • Plugin Capability Tags - The merchant Plugins list now shows capability tags on each plugin (refunds, partial refunds, recurring commissions, coupons, lifetime commissions, customer details) so it's clear at a glance which features each plugin supports (#15102) (#16004)

Improvements

Security

  • Raw SQL Removed from Event Log - Replaced raw SQL strings in customer event log entries with structured, non-SQL messages (#15955)
  • Cleaner Event Log During Install - Routine outbox debug entries no longer flood the customer event log during account install (#15956) (#16018)
  • Maximum Password Length - Removed the admin-configurable "Maximum password length" setting and capped passwords at 72 characters across all accounts (#15975)

User Interface

  • Password Rules Up-Front - The set-password screen, in-panel password change, and signup forms now show the active password policy as a live hint list with red/green checkmarks, replacing the strength bar that could disagree with what the validator actually accepts (#15944)

Integrations

  • Shopify write_orders Notification - The write_orders scope warning now appears only when at least one configured store actually lacks the scope, and multi-store setups list which specific stores still need updating (#15958)

Tracking and Callbacks

  • Block Google Read Aloud Bot - The Google Read Aloud user agent is now treated as a crawler, so its affiliate-link prefetches no longer create duplicate clicks (#15901)
  • Affiliate Name in Sale Tracking Callbacks - Application Callback URLs fired on commission events can now use {$name}, {$firstname}, {$lastname}, and {$username} (email) merge variables (#15404)

Performance

  • Faster Campaign Save - Saving a campaign no longer re-stamps every banner's account when the campaign's account hasn't changed — a significant improvement for accounts with thousands of banners and frequent campaign edits (#15961)
  • Coupon Grids - Coupon grid queries no longer add user-table joins when affiliate columns are not requested (#15859)

Bug Fixes

Integrations

  • Stripe Subscription Tracking on Additional Config Tabs - Fixed Stripe subscription tracking silently failing on any config tab other than the first, affecting merchants with multiple Stripe configurations (#15964)
  • Stripe Plan-Based Product ID - Fixed an empty product ID and PHP warning when the Stripe Product ID setting was "Plan's product" or "Plan's ID" and the purchase had no plan attached (#15752)

Plugins

  • Affiliate Profile Change Webhook with Membership Subscriptions - The webhook now also fires when the Membership Subscriptions Manager changes an affiliate's status (subscription activation, decline/refund, or expiry); previously these automated transitions silently skipped the webhook (#15928)

Themes

  • Theme Import with Disabled Built-in Parent - Fixed theme import failing with original_theme="..." does not exist when the parent built-in theme had been disabled in Configuration → Design → Themes (#15916)
  • Theme Import on Built-in Templates with Runtime Variables - Fixed theme import failing with a PHP fatal error and leaving an orphan theme row when the imported zip contained built-in templates referencing runtime variables; invalid templates are now rejected cleanly instead (#15946)
  • Dark Theme - Country Commissions - Fixed the unreadable light-grey "Custom per Sale commissions for country" section on the Commission settings screen in dark mode (#16000)

Transactions

  • Original Currency in Commission Import - The "Original currency ID" column (relabelled to "Original currency (ID / code)") now accepts both internal currency IDs and codes (e.g. EUR), and no longer writes a spurious critical event log entry on successful imports (#15980)

Login

  • Merchant Session Termination on Status Change - When a network owner changes a merchant account's status to pending or declined, the merchant's active session is now closed immediately instead of remaining usable until manual logout (#15777)

New Features

Network

  • Suspend Credit Limit Notifications - Network owners can now be notified — via callback and/or email — when a network account's balance falls below the configured Suspend credit limit value (#15734)

Banners and Campaigns

  • Search in Category Filter - The banner and campaign category filters now include a search box in both the merchant and affiliate panels — making it easy to find a category when many are configured (#15632)

Improvements

Security

  • Improved Output Escaping - Hardened content rendering in built-in widgets and the report builder (#15806) (#15745)
  • Reduced Information Disclosure - Removed unnecessary data from API responses and improved internal error handling (#15617) (#15772)
  • Strengthened Rate Limiting - Improved rate limiting on multi-operation API requests (#15600)
  • Hardened IP-Based Controls - Improved IP detection and validation for tracking endpoints and the REST API (#15498) (#15505)
  • PagSeguro Plugin Hardening - Tightened input validation in the PagSeguro plugin (#15541)
  • Background Task Hardening - Improved internal data handling in scheduled tasks (#15712)
  • Stripe Webhook Authentication - Strengthened security for incoming Stripe webhooks (#15746)
  • Two-Factor Authentication - Improved two-factor enrollment flow (#15863)

User Interface

  • Login Screens Facelift - Refreshed the login, forgot-password, and set-new-password screens in the signup themes with clearer affiliate vs. merchant role identification and an improved form layout (#15149) (#15741)
  • Logout Confirmation - After an explicit logout, the login screen now shows a "You have been signed out" confirmation banner (#15684)

Affiliate Panel

  • Default Affiliate Logout URL - The default affiliate logout URL now points directly to the affiliate login page, matching the merchant side. Existing customized URLs are unaffected (#15695)

Integrations

  • Shopify Checkout Extensibility - The Shopify integration now supports Checkout Extensibility when "Check missing order on order created" is enabled — except for stores using "Buy Now" buttons that bypass the cart (#14220)
  • SamCart Partial Refunds - Partial refunds received from SamCart webhooks are now tracked with the correct refund amount (#14614)
  • SamCart Recurring Refunds - Refunds of recurring SamCart payments now correctly refund the recurring commission, even when no matching recurring rule is configured (previously the initial payment was refunded instead) (#14730)

Plugins

  • Variables in Default Signup Values - The Default signup values plugin now supports field variables such as {$data1}, {$data2}, allowing hidden fields to be auto-populated from values entered in other signup form fields (#15703)

Performance

  • Home Screen Stats - Refund and chargeback statistics on the home screen, trends report, and quick report are significantly faster on accounts with large transaction history, and now load in a separate request so a slow stats query no longer holds up the rest of the home screen (#15818) (#15820)

Bug Fixes

REST API v3

  • fields Parameter on Grid Endpoints - Fixed the fields parameter being silently ignored on several GET endpoints (transactions, affiliates, banners, campaigns, direct-links, and their affiliate-side variants), so the API now correctly returns only the requested fields (#15761)

Integrations

  • Stripe One-Time Product ID - Fixed Stripe one-time product purchases not having the product ID stored on the transaction, which also caused subsequent refunds for those purchases to fail (#15720)
  • Shopify Remaining Commission on Refund - Fixed declined or refunded Shopify orders sometimes creating an extra "remaining" commission when nothing should have remained after the refund (#13945)

Affiliate Accounts

  • Affiliate Status Change Notifications - Fixed the "On affiliate status changed" email being sent to affiliates even when the merchant checked the "Don't send notification" option while changing their status (#15665)

Login

  • IP Whitelist with Anonymized IPs - Fixed the affiliate and merchant login IP whitelist comparing the anonymized IP against configured entries when "Anonymize IP addresses" was enabled, which blocked valid logins. The "access denied" message now shows the real IP so administrators can correctly whitelist it (#15722)

Improvements

Banners

  • Extension-less URLs for Banner Images - Banner images now work without a file extension in the URL, so existing banner links remain functional even after image format changes (#14884)
  • Improved Banner Image Quality - Banners already in WebP format are no longer re-encoded on upload, preventing quality loss and blurry text. WebP conversion quality for other formats was increased from 60% to 80% (#15586)

Commissions

  • Approval Setting Help Text - Added a tooltip to the commission type Approval setting clarifying that it is overridden when the transaction status is set directly in the tracking request (#15572)

Email Templates

  • General Affiliate Link Variable - A new variable for the general affiliate link is now available in email templates, making it easier to include affiliate links in welcome and notification emails (#15422)

REST API v3

  • Additional Transaction Search Fields - The q search parameter on GET /transactions now supports filtering by action code, merchant note, and system note (#15418)
  • Documented Fields Parameter - The fields parameter for /transactions and /banners endpoints is now included in the API documentation (#15418)

Bug Fixes

User Interface

  • Dark Theme Read-only Fields - Fixed read-only fields not being properly styled in dark theme (#15424)

Improvements

Security

  • Sliding Expiration for "Remember Me" Token - The "Remember Me" session now resets its 14-day expiry on each visit, so active users are no longer forced to re-login (#15410)
  • Stronger Default Password Requirements - New accounts now require at least 8 characters with letters, numbers, and special characters by default (#15395)
  • Password Constraints Moved to Security Settings - Password requirements are now configured in General Security Settings instead of Affiliate Fields, reflecting that they apply system-wide (#15407)

Banners

  • Full Image Preview for Banners - Image banner previews in the merchant panel now use the banner's defined dimensions instead of the default 300x150 thumbnail (#15391)
  • Variables Panel for Banners and Templates - Template and banner variables are now displayed in a side panel instead of a dropdown listbox (#14665)

REST API v3

  • Commission Tier Number - The commission tier is now included in GET /transactions and GET /transactions/{id} responses (#15384)

Bug Fixes

Integrations

  • Stripe Coupon Code Tracking - Fixed coupon codes not being tracked from Stripe subscription payment events since version 5.15.4.5 (#15392)

REST API v3

  • Date Search in Top Affiliates Report - Fixed exact date/time filtering on the created_at field returning an error for GET /reports/top-affiliates (#15376)

User Interface

  • Dark Theme View Selector Icon - Fixed missing arrow icon on view selectors in dark theme (#15428)
  • Listbox Text Selection on Touch Devices - Fixed listbox taps on mobile and touchscreen showing a text selection menu instead of opening the dropdown (#15439)
  • Listbox Scrolling on Mobile Mini-Site - Fixed listbox options not being scrollable on mobile devices (#14947)
  • Empty Signup Form Section - The "Additional Information" section on the signup form is now hidden when no fields are configured (#15415)
  • Grid Column Resizing - Grid columns now properly shrink when the browser window is narrowed (#15408)
  • Pay Affiliates Pagination - Fixed pagination returning empty results when sorting the Pay Affiliates grid by the "To pay" column (#15402)

New Features

Themes & Design

  • Full Dark Mode Support - All panel themes now support dark mode with automatic switching based on system preference, a manual override switch, and the option to upload separate logos for light and dark modes (#7825) (#7588) (#7601)

REST API v3

  • Clicks List Report - New endpoint lets merchants retrieve click data including destination URL, referral URL, IP address, and user agent via the REST API (#7695)

Improvements

REST API v3

  • Affiliate Notification Email in GET /affiliates - The notification_email field is now included in the affiliate list response (#7859)
  • Transaction Notes in GET /transactions/{id} - System and merchant notes are now returned in the transaction details response (#7844)
  • Transaction Action Code in GET /transactions/{id} - Action code is now included in transaction details, allowing merchants to identify the specific action associated with a transaction (#7843)
  • Extended Transaction Update via PATCH /transactions/{id} - Merchants can now update order ID, custom data fields, and transaction type when editing transactions via the API (#7784)

Affiliate Panel

  • Default Date Filter for Trends Report - Merchants can configure the default date range preset shown in the Trends report in the affiliate panel (#7854)
  • Extended Date Presets in Trends Report - The Trends report and stats tabs throughout the panel now support all available date range presets (#7851)
  • Post-Login Redirect to Original URL - Affiliates who follow a direct link to a specific panel page are now redirected to that page after login instead of the default screen (#7875)

Network

  • "What's New" Screen Permission - Network owners can now control access to the "What's New" screen via role permissions (#7900)
  • Simplified Network Getting Started - Removed the "Consult your program with us and get integrated" step from the network account Getting Started guide (#7898)

Banners

  • Exact Banner ID Search - Searching for a banner by ID now matches only the exact ID, preventing false results from partial entries (#7857)

Callbacks

  • Customizable Default Callback Keys - Merchants can now define which keys are pre-filled by default when affiliates create a new callback (#7690)

Bug Fixes

User Interface

  • Video Tutorials Visibility - Fixed the "Enable tutorial videos" configuration not being applied to the merchant panel menu (#7900)
  • Email Domain Spell Check - Fixed the domain correction suggestion incorrectly appearing for valid domains and the "Yes" button requiring two clicks to apply (#7876)
  • Custom Color Changes - Fixed custom theme color changes not appearing immediately due to missing cache invalidation (#7850)
  • Mini-site Theme Import - Fixed an error preventing import of mini-site themes based on the Coupe theme (#7840)
  • Campaign Category Pagination - Fixed an error that blocked navigation to subsequent pages in the campaign categories selection dialog (#7835)
  • 2FA Input on Mobile - The two-factor authentication code field now displays a numeric keyboard on mobile and supports password manager autofill (#7648)
  • Editor Mode Button Indicator - The active editor mode (WYSIWYG or HTML) is now visually highlighted in the template editor, email composer, and payout invoice editor (#7846)