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.

Checkout Bug Fix: Currency Selection

We identified an issue where the requested currency was not being honored during Checkout if the plan_id parameter was missing.

Historically, we recommend including the plan_id parameter when using our Checkout. When it is not provided, the system defaults to loading the cheapest visible plan.

However, in such cases, the currency parameter was not being applied correctly, even when specified.

This issue has now been resolved, and the requested currency will be respected as intended.

Minor Bug Fix: Whitelisted License URL

Freemius includes a feature that allows customers or buyers to whitelist a license, enabling activation only on selected sites.

We identified a UI regression where the requested URL occasionally failed to appear in the whitelist. The root cause has been addressed, and a fix has been deployed.

Affiliates Terms Page Improvements and Contact Form Bug Fix

This week we are releasing a few housekeeping updates, mostly aimed at maintenance and bug fixes. Out of those, the following are noteworthy.

Affiliates Terms Page Styling Improvement

We have updated the style of the affiliates terms page, taking it at-par with the rest of the legal pages generated by Freemius. Link of such page is included automatically when a user signs up for the Affiliate Platform. The platform can significantly boost your marketing efforts and sales, so we recommend checking it out.

SDK Contact Form Bug Fix

Our maker reported some console error being shown by the SDK’s standalone contact form. While the error itself didn’t break any functionality, we understand it can be annoying, especially to our tech savvy makers. We have investigated and fixed the issue from our end.

Improvements to the Subscription Cancellation Coupon Trigger

Freemius supports setting up a special coupon to appear when a buyer is canceling their subscription. This feature is very helpful in reducing churn rates.

As a maker, you just need to set the coupon up from the Developer Dashboard. Now, when a buyer clicks the “Cancel Auto-Renew” button through the Customer Portal, the system will automatically show a pop-up like the one above.

However, due to limitations of payment gateways, sometimes it is impossible to apply the discount to the next immediate payment from the subscription.

To improve the system, we’ve made it smarter by detecting such scenarios and preventing the pop-up from showing. This, in turn, will help reduce disputes.

Checkout Language Selector UI Improvements

Recently, we introduced flags next to the language selector in our Checkout to help buyers select the language most relevant to their location.

However, we understand that many countries share the same language. For example, Spanish is spoken both in Spain and Argentina.

To make the experience more user-friendly, the UI will now display the relevant flag beside the language corresponding to the user’s location.

For instance, if the user is coming from Argentina, the Argentine flag will appear next to the “Español” language option.

Remember, you can always use the language: 'auto' option to load the Checkout in the buyer’s preferred language through the Checkout JS SDK.

Added Tax Information in Payments and Subscription Pages

As a Merchant of Record, Freemius handles EU VAT and US sales tax compliance on your behalf, so you don’t need to worry about the complexities of tax regulations.

To enhance transparency, we’ve added a new feature to display tax information directly in the Developer Dashboard. Previously, tax details could only be accessed through the API.

With this update, the Subscriptions page now shows a tax percentage icon next to the “Per cycle” price, revealing the tax rate applied to each subscription.

Additionally, the Payments table now displays the actual tax amount collected when Freemius processed the payment.

Please note that these tax amounts are not part of your gross revenue. They are collected in addition to the price you set and are submitted by Freemius to the appropriate tax authorities.

Additionally, we’ve improved the tooltips for various discounts associated with a payment or subscription, including pro-rated discounts, coupon discounts, and more.

Version 1.1.0 of the Freemius Checkout JS SDK

We’re excited to announce the release of version 1.1.0 of the Freemius Checkout JS SDK! This update introduces a backward-compatible enhancement, allowing you to use product_id instead of plugin_id (because we support various kinds of products, not only plugins).

We also improved the type system to provide better TypeScript intellisense.

The change is also reflected in our Developer Dashboard.

Simply go to the Plans page and click on the Get Checkout Code button to get started.

If you’re using the CDN version of the Checkout JS, no actions are necessary from your end. If you’re using NPM or other package manager, be sure to update to the latest version.

Various Improvements for the Developer Dashboard

This week, we’re deploying several updates to the Developer Dashboard, including improvements and bug fixes

Improvements to Product Ownership Transfer

Freemius has long supported ownership transfers, which is especially useful if you’re selling your business.

We identified and fixed a glitch in the system where ownership transfers could be blocked in certain cases due to recent enhancements to the API system.

While addressing this issue, we also discovered and resolved a couple of edge-case bugs. The entire transfer system, including the team member UI, should now work flawlessly.

Better Filtering for the Custom Webhook Integration

With Freemius, you can add webhook listeners for custom integrations. Freemius logs numerous events throughout a product’s lifecycle, such as when a new subscription is created or canceled.

As a product owner, you can use these events to trigger responses in your own system.

We discovered that the UI for filtering events was incorrectly displaying events not scoped to the selected product. This issue has been resolved, and we’ve also made performance improvements for a smoother experience.

Other Enhancements and Bug Fixes

  • Fixed an issue where adding a new whitelisted site could cause errors.
  • Resolved a bug where some URLs incorrectly triggered the product code change pop-up.
  • Added toast notifications to confirm successful operations when reordering or toggling features on the Plan page.

New Feature to Export Sites

As part of our ongoing Data Liberation project, we’ve added export functionality for Sites.

To get started, navigate to the Sites page under your Developer Dashboard and click Download in the top-right corner.

We’re nearing the finish line for this project—stay tuned for more updates!

WordPress SDK: License Activation and Opt-In Improvements

We’re introducing changes to our backend to enhance the experience of using the WordPress SDK.

Activating licenses for deleted plans

Previously, we added a temporary restriction to prevent makers from deleting plans with active, non-expired licenses. This measure was put in place to avoid scenarios where buyers couldn’t activate licenses tied to a deleted plan.

However, we aim to offer makers the flexibility to delete plans (e.g., to deprecate them) while still enabling buyers to activate their valid licenses.

In this update, we’re rolling out the following improvements:

  1. Plan Deletion Flexibility: Makers can now delete plans even if active licenses are associated with them.
  2. License Activation Support: The SDK now fully supports activating licenses linked to deleted plans.

If you’re already using version 2.9.0 of the WordPress SDK, no further updates are required on your end.

Preventing free plan opt-ins for premium-only products

We identified an edge case where users with malicious intent could modify the SDK integration code within a WordPress plugin or theme to attempt opting into a product’s free plan.

Although this did not pose any security risk, it led to the creation of unnecessary sites, even when the product did not offer a free plan.

With this deployment, we’ve implemented measures to actively detect and block such requests.

Improved staging site support

Freemius provides out-of-the-box license utilization for staging and development sites. We’ve enhanced our system to include support for additional well-known staging providers, making it even easier to manage licenses during development.

Checkout Bug Fix for Invalid Pricing

We identified an issue where, if a maker intentionally left a pricing field blank, the checkout could load in an invalid state. In such cases, the checkout incorrectly displayed the price as zero, even though it wasn’t intended to show up at all.

For instance, a maker might choose not to offer single-unit pricing. In these scenarios, the checkout should automatically load with the nearest lower unit pricing by default.

We’ve resolved this glitch and deployed a fix to ensure the checkout behaves as expected in such cases.

Generate Secure Download Links for Orphaned Licenses

Freemius allows makers to create licenses that are not initially associated with any user. Once a user activates the license, the association is automatically established. This feature is especially useful for sharing custom licenses with reviewers or affiliates to try out a product.

The Freemius Developer Dashboard also includes a feature to generate secure download links for products directly from the Licenses page. However, we discovered a bug where the UI failed silently if the license was not associated with a user.

We’ve fixed this issue! You can now generate secure download links even for orphaned licenses.

Fixed Plan Title in License Recovery Email

We have a special app available at:

https://dashboard.freemius.com/license-recovery/?developer_id={developer_id}&module_id={module_id}&module_slug={module_slug}

This app can be shared with your buyers as a self-service tool for recovering lost license keys and download links.

Simply replace:

  • {developer_id} – With the ID of your profile.
  • {module_id} – With the ID of your product.
  • {module_slug} – With the slug of your product.

We identified a glitch in the email copy, where the unique plan name was displayed instead of the user-friendly plan title. This issue has now been resolved.

Enhancements to Freemius Checkout for Coupons, License Renewals, and More

This week, we’ve implemented fine-tuned adjustments and enhancements to the Freemius Checkout, with a particular focus on coupon handling and migrated license renewals.

Coupon discount for migrated license update with active subscription

When updating a license, a new subscription may be created. If time remains on the current license before it expires, a pro-rated discount is applied to the renewal process up-front.

If a coupon is entered during this process, the coupon amount for the first payment of the renewal is adjusted to account for the pro-rated discount. Previously, this adjustment was not clearly disclosed in the UI, leading to some confusion.

The UI has now been enhanced to show the exact breakdown of the coupon, ensuring clarity for the buyer. After the first payment, buyers will see that they will receive the full coupon discount on all future renewals.

Please note: This behavior only applies to migrated licenses with active subscriptions. For standard license upgrades, where a buyer opts to upgrade their license to a higher pricing tier or plan, the full coupon discount is applied, even on the first payment of the new subscription.

Coupon discount for migrated license extension with expired subscription

Another case occurs when a migrated license is extended after its associated subscription has been canceled.

Previously, we incorrectly displayed a relative coupon discount in these cases. However, since these cases involve no pro-rated discount, and a new subscription is created to renew in 30 days or 1 year (depending on the billing cycle), a full coupon discount is now applied.

The UI has been updated to reflect the full coupon discount in these cases.

Coupon discount for migrated license update without subscription

Depending on the platform a license was migrated from, some licenses may not be associated with any subscription.

For these cases, we apply pro-rated adjustments and a relative coupon discount. The UI has been updated to accurately display this information.

The reason we provide a pro-rated adjustment, rather than treating it like an expired subscription, is that we lack information on the original subscription. We offer the benefit of the doubt to encourage migration.

Renewals discount for migrated license updates

We have a mechanism to offer renewal discounts for products in general.

For migrated licenses, this renewal discount is applied during license updates as an incentive for migrating from a legacy platform to Freemius. This renewal discount may be relative to the first payment, depending on whether a pro-rated discount is applied. A UI bug that occasionally prevented the accurate display of this discount in certain edge cases has been resolved.

The enhancements above are part of our ongoing improvements to better support migrated subscriptions. If you’d like to migrate your product to Freemius and benefit from these features, please get in touch.

Additional fixes for licenses and coupons

  • For license renewals, the correct billing cycle of the license is now selected in Checkout, instead of defaulting to “Annual.” Upsell options are displayed in these cases to give buyers the option to adjust their billing cycle.
  • We resolved a bug where a coupon with multi-currency absolute discount values, if entered via URL parameter (or loaded from our JS SDK) for a license restricted to “Current Customer,” was not loading correctly.

General bug fixes

  • A UI glitch affecting tablet mode has been fixed. This issue only appeared when Checkout was loaded in full-page mode, a new feature introduced in our latest latest SDK release.

New Export Feature for Licenses and Payments Export Enhancement

As part of our project to enhance data accessibility, we’ve added export functionality to the “License” table.

Now, you can easily export all your licenses to a CSV file, allowing you to use your preferred spreadsheet software to create custom reporting tools. This feature is also useful when migrating your legacy licenses to Freemius, enabling you to verify the integrity of your migrated data seamlessly. Go to the “License” page to get started.

P.S. Contact us if you’re planning to migrate to the Freemius platform to enjoy all the benefits it offers.

Payments Export Enhancements

We noticed that the currency field was missing in the exported payment data.

This has now been addressed—the CSV file will include a currency column, making it easier to generate accurate financial reports.

Load more