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.

Customize Key Transactional Emails with Custom Content

This week we are releasing a feature requested by many of our makers. Freemius sends various transactional emails to your customers. For example, when someone purchases a subscription (or lifetime access), they receive an email with all the plan and pricing details. Similarly, customers are notified when subscriptions are renewed.

So far, all these emails were fully controlled by Freemius. While they are already fine-tuned and optimized for your buyers, we understood that having some level of customization can significantly improve your software integration and onboarding experience. For example:

  1. A SaaS or App product can include a short introduction and links to help users get started immediately.
  2. A WordPress product may include or link to usage instructions or next steps after activation.

With this in mind, we are deploying a feature this week that lets you do exactly that. You can now add a custom section to the following emails:

  1. New Subscription Email
  2. New Lifetime Purchase Email
  3. Subscription Renewal Email

Adding Custom Content to the Emails

Simply go to EmailsCustomization, where you will find a new section named Specific Email Customization.

Freemius Developer Dashboard for Email Customization

From there, select the email you want to customize and add a new section by defining its title and content.

The content area supports Markdown for basic formatting, and you can include custom links as needed. A live preview of the email is available below the form so you can verify exactly how it will appear to your buyers.

Email Preview with Custom Section

We believe this will help you better align transactional emails with your product’s onboarding and user journey. If you have any feedback, please let us know via the feature request board.

Resolved Regression in Review Submission Links

Freemius has a built-in review system that allows your verified customers to leave a review for your product. You can choose to display those reviews automatically in the Checkout, on the pricing page, and you can also use the API to show them on your own website or application.

Freemius Review Form

Reviews are requested automatically a few days after the purchase. You can also go to the Developer Dashboard to generate a secure URL that allows your customers to leave a review directly.

Generate Review URL from the Developer Dashboard

We identified a regression where the review URL was not functioning correctly and was incorrectly redirecting to the Freemius homepage. The root cause has been resolved and the fix has been deployed.

One-Click Customer Portal Login via API

This week we’re releasing a new capability that lets you generate auto-login links to the Customer Portal for your buyers. We understand that in today’s SaaS & App marketplace, development speed is critical, so we aim to offload as much infrastructure and UX complexity from you as possible. As part of that, Freemius already provides a hosted Customer Portal where buyers can manage subscriptions, purchases, and even join the affiliate program.

Until now, there was no way to generate login links that automatically authenticated customers. Buyers always had to enter their Freemius password to access the portal. With today’s rollout, this is no longer required. You can now make an API call to generate a secure magic link and redirect your buyers directly into the Customer Portal without any manual login step.

Generating the Magic Login Link

You need to make an API call to the following endpoint using Bearer Token authentication:

POST https://api.freemius.com/v1/products/{product_id}/portal/login.json
{"email": "[email protected]"}

The response will be a JSON object with the following properties:

  • link – The magic login link
  • token – A login token for manual or more advanced integrations

Portal login API call

Once generated, you should immediately redirect your customer to the link, and they will be automatically logged in to the Customer Portal.

Logged in Customer Portal

More detailed documentation will follow shortly. Until then, please note that you can generate the login link using either:

  1. email – If you don’t store the Freemius User ID
  2. id – If you do store it, which is the preferred approach

Also note that the link generated by the API call is short-lived and expires after 5 minutes. You should only generate it when the customer explicitly requests access to the portal, and then redirect them immediately.

Redesigned Cart Recovery Unsubscribe Page

Freemius has a built-in cart recovery system that sends reminder emails to potential buyers who didn’t complete their purchase. Each of these emails includes an unsubscribe link, allowing recipients to opt out of future reminders at any time. Until now, the unsubscribe page behind this flow was using an outdated design.

Cart recovery form redesign

This week, we rolled out a complete redesign of the unsubscribe page. The refreshed layout brings it in line with our current visual language, making the opt-out experience clearer, more modern, and more consistent with the rest of the Freemius ecosystem.

Smarter Billing Cycle Selection and Coupon Fixes in Checkout

This week we have updated the Checkout with the following improvements and bug fixes:

Smarter Billing Cycle Selector UI

Our Checkout uses a set of Upsell UI components by default. One of them automatically shows up whenever there are billing-cycle-related discounts, such as annual-over-monthly pricing. The same UI is also used by your customers to toggle between billing cycles.

Checkout monthly switch UI

However, when there are no such discounts, we recommend using the explicit billing cycle selector UI by configuring it through the Checkout Config. While this works as expected, we understand that this behavior can be a bit confusing for new makers joining the platform—especially those selling SaaS & Apps, where billing-cycle discounts are not very common. In such cases, makers testing the Checkout would see the annual plan auto-selected, without a clear way to switch to a monthly billing cycle.

To address this, we’ve made the Checkout smarter by automatically detecting these scenarios and switching to the billing cycle selector UI when appropriate.

Checkout Billing Cycle Selector UI

Please note that in sandbox mode, a hint will also pop up to guide makers toward configuring discounts if they prefer to use the upsell UI instead. All other behaviors remain unchanged. For example, if you explicitly load the Checkout with an annual billing cycle, the option to switch to monthly will not be shown, preventing buyers from changing the intended configuration.

Fixed Non-USD Flat Discount Coupon

We identified a recent regression where applying a non-USD flat discount coupon did not work correctly in certain edge cases, particularly in some PayPal flows.

Checkout Coupon UI

This issue has been identified and fixed.

Clearer Templates & Kits and Small Dashboard Improvements

This week we are releasing some quality-of-life improvements to our Developer Dashboard app.

Better Visibility of Templates & Kits

Freemius supports selling templates and kits out of the box. We also support uploading ZIP files and distributing them to your buyers.

However, we realized that this capability was not very visible when creating a new product, as it was previously placed under the “WordPress Products” category. From a UX perspective, this made it easy to miss.

To address this, we’ve improved the new product creation flow so the Templates & Kits option is now visible right in the first step.

Template Kits in the New Product Form

We are also rolling out improved documentation shortly to better explain how to properly use this category.

Other Improvements

  • Removed some unneeded API calls made by the Developer Dashboard as part of general housekeeping.
  • On the Sites page, the Change Plan button is now disabled when a product has only one paid plan, along with a clear message explaining why. In such cases, changing plans for sites is not possible.

Bug Fixes for Weekly Reports and License Activation

We are rolling out the following bug fixes across our system:

  1. We identified an issue where some makers were not receiving their weekly report email. The underlying cause has been resolved, and the emails are now being delivered as expected.
  2. In certain edge cases, some apps were unable to activate licenses via the API. This issue has been fixed, and license activation should now work reliably.

New Side Panel View for Licenses in the Developer Dashboard

This week we are rolling out a new feature to the Licenses page in the Developer Dashboard. Until now, makers could only view licenses in a tabular (data-heavy) format. While functional, we understood from a UX perspective that this could feel overwhelming, and it wasn’t always easy to quickly surface key information about the user or the subscription associated with a license. In many cases, you had to navigate away from the table to dedicated pages to find those details.

License sidepane view

With this update, you can now open a side panel view for a license, consistent with how other entities are presented across the dashboard. The side panel provides quick access to essential license information and exposes common actions such as extending the license, changing the quote, or adjusting related settings.

It also surfaces details about the connected user and the associated subscription, all in one place.

User and Subscription information in the license sidepane

The goal here is to reduce context switching and make day-to-day license management faster and more intuitive. As always, if you have feedback or ideas on how this can be improved further, we’d love to hear them on the feature board.

As a follow-up to this change, we’ve also updated the Subscriptions side panel to align with the same design system and interaction patterns.

Subscription sidepane

New Checkout Events for Tracking Coupon Interactions

Our Freemius Checkout supports tracking several events across the buyer journey — from when the checkout is loaded, to when billing information is entered, or when a plan is changed.

Today, we’re rolling out a few new events focused on tracking interactions with coupons.

Freemius Checkout coupon code

  • coupon-added: Triggered when a new coupon is applied through the checkout UI.
  • coupon-removed: Triggered when a coupon is removed, either explicitly from the UI or when the coupon is no longer valid for the selected quota/licenses or billing cycle.
  • coupon-updated: Triggered when a coupon’s discount value changes due to an update in quota/licenses or billing cycle.

These events make it easier to understand how buyers interact with coupons during checkout and which discounts are ultimately applied based on the selected configuration.

Sample tracking of coupon events

You can read more about this in our documentation.

Enriched Webhook Payloads for Plugin Version Release Events

Responding to a feature request from one of our makers, we’ve enriched the plugin.version.released, plugin.version.beta.released, and plugin.version.release.suspended events to include more detailed information about the tag and deployment.

Previously, the payload only included a reference like tag: <ID>. From now on, the webhook payload will include richer data, for example:

{"tag": "1234", "version": "3.0.1", "release_mode": "released"}

This makes webhook automation simpler and more self-contained, especially for workflows like notifying buyers after a new version is released. Earlier, this required an additional API call to fetch deployment details; the webhook payload now includes everything you need upfront.

Email Tone Preferences Now Applied Consistently

Freemius allows customizing the tone of the emails sent to your buyers on your behalf. The tone can be set anywhere between Playful—including emojis and more expressive language in the subject and body—and Professional, keeping the communication formal, clear, and emoji-free.

Email tone customization

It came to our attention that this setting was not being consistently respected for a few system-generated emails, particularly some payment and subscription-related notifications.

We’ve deployed a fix to address this. All emails will now correctly respect your selected tone setting across all supported email types.

See All Buyer Emails Sent by Freemius in One Place

This week we’re rolling out a new feature aimed at helping makers better understand all transactional and automated emails Freemius sends on your behalf to buyers.

If you navigate to the Emails section, you will now see a new tab called Email History. From there, you can view a list of all emails Freemius has sent on behalf of your product.

New Email History section

You can also click Preview to inspect both the HTML and plain-text versions of each email.

Email HTML preview

This is the first phase of the feature. We’ve seen that makers often want visibility into buyer communications without having to wait for specific events to occur. The longer-term goal is to surface all types of emails Freemius sends—such as new purchases, renewal reminders, payment notifications, and cart recovery—upfront and in one place.

If you have practical use cases or suggestions for how this should evolve, please share them on our feature board. We actively review and prioritize feedback there.

Extra Security for “Login as User” in the Developer Dashboard

The Freemius Developer Dashboard allows you to view detailed information about your users. One of the most useful capabilities is being able to log in as a user to the Customer Portal, making it easier to reproduce, inspect, and debug issues firsthand.

Login as user Developer Dashboard

With this week’s deployment, we’ve strengthened the security around this flow. When logging in to the Customer Portal as a user, you will now be prompted to confirm your Developer Dashboard password.

Required developer password for logging in to the Customer Portal

This additional confirmation helps ensure the feature remains secure, even in scenarios where a device may be left unattended or otherwise compromised.

API & Backend Stability Improvements

This week we are rolling out a couple of small bug fixes and quality-of-life improvements across our API and backend systems.

  • We identified an issue where removing all products from a bundle could, in some cases, break the Customer Portal. The underlying issue has been addressed and fixed.
  • The license.created event was not being triggered when licenses were created manually. This has now been corrected, ensuring consistent webhook behavior.

Improved Sidebar Sorting and Icon Validation in the Developer Dashboard

This week, following feedback from our makers, we are deploying a few small quality-of-life improvements to the Developer Dashboard.

  • We are now sorting the product and store sidebar by title. This makes it easier to scan and quickly find related or similarly named items.
    Developer Dashboard Sidebar item Sorting
  • We previously allowed non-square icons for products and stores, which could lead to inconsistent rendering in PDFs, Checkout, and other system-generated surfaces. The UI will now enforce square icons where required to ensure consistent presentation.
Load more