Changelog

Welcome to the changelog section of Freemius, here you'll find our weekly technical update notes. You can subscribe to all posts via Newsletter or follow us on Twitter to stay updated.

Introducing Seamless License Upgrades from Products to Bundles

Just as we gear up for our annual Black Friday / Cyber Monday promotion, we’re rolling out a highly requested improvement. Your customers can now upgrade from individual products to bundles directly from the Checkout—smoothly, reliably, and without needing any manual guidance.

In many stores, customers often start with a single product and later discover the value of upgrading to a bundle. Until now this process wasn’t as straightforward as it should have been.

With this release, if a customer already owns a license for one of the products included in a bundle, they can simply use the same license key during Checkout to upgrade. They’ll automatically receive prorated discounts, keep the same license key across all bundled products, and retain all existing website activations.

Below is how to make sure your products and bundles are set up correctly.

How to Set Up a Bundle

Let’s say you have a plugin called “My Awesome Plugin,” and you want to allow an upgrade to a bundle named “My Awesome Bundle,” which might include additional products like a theme or widgets.

To enable upgrades, all you need to do is ensure that the bundle contains a plan referencing the product.

You can learn more in our documentation, but the screenshot below illustrates how the bundle plan already includes the product.

Set up bundle plan

That’s all the configuration required. If you already have existing bundles and product plans in your store, you likely already have this set up.

How Customers Upgrade to the Bundle

To start the upgrade flow, ask your customers to open the Checkout of the bundle—either through a hosted link or pricing buttons on your website.

Next, they simply enter the license key they already own for the individual product.

Checkout will automatically recognize the license as part of the bundle’s offering and apply the appropriate prorated discount.

The customer completes the Checkout, and the upgrade is finished.

What Happens to the Upgraded License

  1. The license becomes a bundle license, unlocking all products included in that bundle plan.
  2. The license adopts the bundle’s plan and pricing—allowing you to craft attractive upsell incentives by offering both bundle and plan upgrades in one step.
  3. All existing activations remain intact. Customers won’t need to re-activate anything.

We hope this new flow helps you drive more upsells and makes bundle upgrades much simpler for your customers—especially during the busy Black Friday season. Give it a try and share your feedback with us.

PS: If you’d like your product featured during our Black Friday sale, just fill out this form.

Fixes and Enhancements to Affiliate Exports and Cross-Store or Account Attribution

We have released a few small improvements to the Affiliates section in the Developer Dashboard.

Fixed Affiliate Exports Functionality

Affiliate export feature freemius developer dashboard

We identified an issue where clicking the Download button on the Affiliates page did not export the full list of affiliates—some records were being cut off. This was especially problematic for makers with larger affiliate programs. The fix is now deployed, and downloading will correctly generate a CSV containing all available affiliates.

Fixed Payouts for Cross Store or Account Attribution

Freemius’ affiliate system allows attributing commissions across store or account. This means if an affiliate promotes one product but the buyer ends up purchasing another product under the same store or account, the affiliate still earns the commission.

However, we noticed these attributions were not being reflected accurately in the Payouts tab. This led to confusion and occasionally missed payments since makers couldn’t always see why a commission was attributed.

Affiliate payout attribution across products

With this week’s deployment, these attributions are now clearly shown in the Payouts tab, including an icon of the relevant product when the commission came from a cross-store or cross-account purchase. This brings full transparency into the payout breakdown, ensuring everything is visible and easy to verify.

Enhanced User Marketing/GDPR UI and Streamlined SDK Test License Creation

This week we are deploying small feature enhancements to our Developer Dashboard.

Better Marketing/GDPR UI under Users

When navigating to Users → Specific User in the Developer Dashboard, we’ve refined the UX of the Marketing Email section.

User marketing or GDPR status under the Freemius Developer Dashboard

The section indicates whether the customer has consented to receive marketing emails (either during Checkout or when installing the free version of your product).

  1. The section now starts collapsed by default, giving more space to the more frequently used information above the fold.
  2. The section title is now dynamic, so you can instantly understand the user’s marketing consent status at a glance.

Faster License Creation for SDK Integration

Some time ago, we introduced a button in the SDK Integration page to quickly create a license while going through our 5-minute SDK onboarding steps.

Create test license from the Freemius Developer Dashboard for testing the integration

However, the button still required choosing plans and pricing, unnecessarily slow when makers simply want to test the integration flow.

With that in mind, we’ve streamlined the UX so that clicking the button now automatically generates a license under the first paid plan without asking for any additional input.

We hope this small improvement makes your integration workflow even smoother.

Checkout Layout Bug Fix for WordPress SDK 2.13

With the release of the WP SDK 2.13, we introduced an option to customize the in-dashboard Checkout experience. Soon after, we learned that setting the layout to vertical caused a visual glitch that affected the background of the checkout form.

Freemius Checkout in vertical layout inside the WordPress Admin

With this week’s deployment, the issue has been fully resolved. No changes are needed on your end as the fix is applied directly via our Checkout application.

Updated Generic Statement Descriptor for Broader Software Support

Freemius always attempts to display a clear and verbose statement descriptor in your customers’ credit/debit card or bank statements. This helps buyers immediately recognize their purchase and avoid accidental disputes. The descriptor we try to show is:

FREEMIUS* PRODUCT_NAME

However, depending on the bank or card issuer, the soft descriptor may not always be supported. In those cases, our system falls back to a generic descriptor. With this week’s deployment, we are updating that fallback from FREEMIUS-PLUGIN-THEME to FREEMIUS SOFTWARE.

As more makers across different ecosystems started using Freemius beyond WordPress, the old descriptor no longer reflected the diversity of software being sold on the platform. This update ensures that the descriptor feels accurate and relevant regardless of the product type.

We initially attempted to use FREEMIUS SOFTWARE PAY, but the payment processors did not accept it, so we adopted FREEMIUS SOFTWARE instead.

Freemius transactional email showing the possible descriptor in statements

Please note that Freemius will continue trying to use the soft descriptor FREEMIUS* PRODUCT_NAME first, and only fall back to the generic descriptor when the payment provider does not support it. This update is also reflected in the transactional emails sent from our system.

Fix for Payment Method Recovery Flow in Checkout JS SDK 1.4.1

This week we are releasing version 1.4.1 of the Checkout JS SDK.

This update addresses an issue in the automatic dunning recovery flow, where in certain cases the library failed to correctly restore the payment-method update experience.

Since this flow is critical for recovering failed subscriptions, we prioritized fixing it to keep the recovery process as seamless as possible for both you and your customers.

Demo payment recovery flow in Freemius

If you’re using the CDN version, nothing needs to be changed on your end. For NPM package users, please update with the following command:

npm install @freemius/checkout@latest

Improved Subscription Cancellation Email

This week we’re rolling out some improvements to the Subscription Cancellation email sent by Freemius.

Freemius Subscription Cancellation email

This email is sent to the product maker whenever a customer cancels their subscription. It includes important information like customer details, subscription information, and any associated sites where the corresponding license was in use.

To make the layout more compact and easier to digest, we’ve moved the sites section below the subscription details and now show only the first five sites instead of the full list. A link is provided to the Developer Dashboard where you can filter and view all affected websites.

For most products, listing five sites is more than enough. But for large multi-site networks, the earlier version often generated a very lengthy table that could cut the email short or make it harder to navigate. With this update, the email remains clean, readable, and focused on the essential information.

Freemius WordPress SDK v2.13.0 Released

We’ve just released version 2.13.0 of the Freemius WordPress SDK — packed with developer-focused enhancements and improvements to existing integrations. For the complete changelog and implementation details, check out the GitHub release notes. Or read below for a quick summary of what’s new in this release.

New License Lifecycle Hooks

Two new hooksafter_license_activation and after_license_deactivation — are now available, allowing developers to respond to license status changes more efficiently. This makes it easier to sync external systems or trigger custom workflows when licenses are activated or deactivated.

Gross Amounts in Payments

To make transaction details clearer for customers, payments in the Accounts page now display the Gross amount (including taxes) instead of the Net amount.

Payment table in the WordPress SDK

New Filter for Checkout Parameters

We’ve introduced a new filter, checkout/parameters, that lets you fine-tune the Checkout experience — such as forcing social proofing UI or billing cycle selectors. This is especially handy for custom pricing pages or dynamic checkout links.

For if you include the following code in your plugin

WP SDK checkout customization parameter

The SDK will now render the Checkout with the proper UI like below:

Freemius Checkout with the customized params

Updated Pricing Page App

The SDK now includes the latest version 1.3.0 of our Pricing Page App, featuring a fix for annual discount calculations and enhanced security badges.

Freemius WP SDK pricing page

Improved InstaWP Compatibility

The SDK now fully supports the new InstaWP staging environment, automatically switching to safe mode when cloned, ensuring smoother workflows for testing and staging sites.

Easier Testing for Custom Payment Recovery URL Integration

Not so long ago, we introduced a feature to set up a custom recovery URL for payment recovery. This helps prevent confusion among buyers who might otherwise see a different domain when updating their payment methods.

The process required going to the Developer Dashboard, setting up a URL, and ensuring that the Freemius Checkout JS SDK was included on that webpage.

However, based on feedback from our makers, we realized that testing this integration wasn’t straightforward. Since this flow involves recovering failed subscriptions, it’s only natural that our makers wanted an easy way to validate it.

Test button for payment recovery custom URL

To address this, we’ve added a new “Test Payment Recovery” button in the UI. Clicking it will open the configured URL, automatically triggering the Freemius Checkout with a dummy payment recovery flow.

Freemius Checkout opened in mocked dunning flow

If the test checkout appears as expected, you can be confident that your integration works correctly.

Regardless of whether you’ve already set it up, head over to Developer Dashboard → Plans → Customization to try it out.

Corrected Product Labeling in Affiliate Application Form

We identified a small bug in our Customer Portal where, in the Affiliate Application Form, every product was incorrectly referred to as a “plugin” regardless of its actual type. This caused confusion, particularly for non-WordPress products like SaaS and Apps.

Affiliate Application Form in the Freemius Customer Portal

We’ve now fixed this issue so the form correctly reflects the product type. If you’re a maker looking to grow your sales through affiliate marketing, you can explore how Freemius helps you with a built-in affiliate platform.

Improved Invoice Details and Product Attribution

Following feedback from our makers community, we are releasing several improvements to the customer invoices this week.

Freemius Customer Invoice

Better Invoice Header

For SaaS & Apps, it didn’t make sense to include the slug of a product in the invoice title. While the slug helps identify WordPress products, it only added confusion for other product types. With this change, the invoice header is now cleaner and more relevant for SaaS & Apps.

Smarter Product URL

We’ve made the product URL smarter in the invoice. It will now first try to use the URL from the product settings.

Product Marketing URL reflected in the Invoice

If no product URL is defined, it will fall back to the store URL and, finally, to the maker’s billing information. This makes the invoice better aligned with the actual product context, instead of defaulting to the general billing address as before.

Dynamic License Unit Labels

We noticed a bug where the item description wasn’t showing custom license unit labels for App & SaaS product types.

Dynamic License Unit Label in the Invoice

This has now been fixed, ensuring that invoices clearly display what the customer purchased, with accurate and dynamic unit labels.

 

Developer Dashboard Gets UI Fixes and a New Video Walkthrough for Easier Onboarding

This week we’re rolling out several quality-of-life improvements and bug fixes to the Developer Dashboard.

Store Icon Update Bug Fix

We noticed an edge-case bug where updating the store icon sometimes reverted it back to the default one.

Store Icon update from the Freemius Developer Dashboard

This issue has now been fixed, ensuring your store icon remains exactly as configured.

Fixed Labels in the Coupon Configuration Pane

We found that certain labels, such as “One-off” for one-time purchases, and the dynamic unit labels, were not being displayed correctly in the coupon configuration pane.

Improved coupons configuration UI

A fix has been deployed, and the UI now properly reflects your configuration—removing confusion around pricing units and coupon applicability.

Fixed Events Filtering in the Stores Page

We also addressed a bug where filtering by status did not work correctly for events listed under the Stores page.

Events filtering from the Stores section

Filtering now works as expected, making it easier to locate relevant event data at a glance.

Improved Onboarding Experience

To make onboarding even smoother, we’ve added a new video walkthrough to the Developer Dashboard. It appears when a product setup hasn’t yet completed its critical steps.

Freemius onboarding video

The walkthrough demonstrates how quickly and easily you can integrate any type of product with Freemius and highlights the setup checklist page—helping makers complete their integration process efficiently.

Simplify Freemius Checkout Integration with the New WordPress Plugin

We’re excited to share the official release of the Freemius for WordPress plugin — a community-built initiative by Xaver, the creator of Mailster. Developed independently and supported by Freemius, the plugin makes it incredibly easy to integrate the Freemius Checkout and other components into your WordPress site. Watch the short video below to explore its features.

If you’re selling your WordPress product with Freemius, then besides the built-in WP SDK Checkout, we’ve always recommended embedding a pricing page on your own marketing website using the Freemius Checkout JS SDK. However, this required writing and maintaining the integration code manually.

With the Freemius for WordPress plugin, you no longer have to. If your theme supports blocks, you can turn any button into a Freemius Checkout button and configure all available options right from the editor. You can also integrate Freemius Checkout with any pricing table or layout pattern that comes with your theme.

To make this even easier for our makers, we’ve added a new step in the Setup Checklist inside the Developer Dashboard that explains the plugin’s role and how it fits into your setup.

Access Freemius for WP Plugin from the Setup Checklist

Additionally, you’ll now find instructions for using the plugin inside the Get Checkout Code dialog accessible from the Plans page.

Freemius for WordPress plugin shown inside the Get Checkout Code

You can learn more in our documentation.

Even if your product itself isn’t built on WordPress, as long as your marketing site runs on WordPress, you can use this plugin to easily integrate Freemius Checkout and other components.

We’re just getting started with this plugin. In upcoming releases, we plan to introduce more features such as embedding the Customer Portal, providing SSO login options, and unifying all these capabilities into a single, robust plugin for WordPress makers.

Customer Portal Now Hides Sensitive Details for Foreign Licenses

Freemius’ robust licensing system allows activating a license on a WordPress product that isn’t owned by the website owner. This is particularly useful for agencies that manage client sites, as they can install and manage licenses on behalf of their clients. To maintain privacy, agencies often enable whitelabel mode to hide license keys and other sensitive information from the WordPress SDK.

However, depending on how the client initially installed the product, the same license could sometimes appear as a “foreign license” under the client’s own Customer Portal account.

In such cases, the portal previously displayed the license and allowed actions like upgrading the plan or updating the payment method—actions that should have been restricted.

In this week’s deployment, we’ve addressed and fixed this privacy issue.

Foreign license now have restricted view in the Customer Portal

Now, license keys associated with foreign licenses will remain hidden. The only available action for clients will be to change the license, matching the limited actions available from within the WordPress SDK.

We appreciate our makers for reporting this. While the issue posed no direct security risk, it did raise valid privacy concerns, especially in agency-client setups.

Exit Intent Disabled in Customer Portal Upsell Flow

Our Customer Portal includes an upsell section that helps nudge customers to purchase additional licenses. When customers view an installed product under their website, they can see their license utilization and, right beside it, have the option to buy more licenses.

Buy Button in the Customer Portal

Some makers shared that when opening and closing the checkout from this upsell button, the exit intent UX was being triggered — which felt counterintuitive since the exit-intent flow was designed to encourage new purchases, not upsells.

Taking this feedback into account, we’ve now disabled the exit intent coupon behavior in the Customer Portal, ensuring a smoother and more intentional upsell experience.

Load more