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.

Refund Policies for Usage-Based Pricing Now Support Unused Credits

We are releasing a new feature aimed at easing the life of AI SaaS makers. In the age of AI, consumptive or usage-based pricing has become increasingly popular, and Freemius supports this model out of the box (check our video tutorial).

We also understand that this pricing model can directly impact your refund policy. For example, if you are building a generative AI application with a subscription and top-up model, you may want to offer a money-back guarantee only for unused credits.

You can now configure this behavior directly from the Freemius Developer Dashboard. Simply go to Plans → Refund Policy and enable the “Limit refunds to unused credits for usage-based features” checkbox.

Enable consumptive usage policy from Freemius Developer Dashboard

Once enabled, Freemius will automatically include the appropriate clause in the refund policy generated for your product. You can read more about this behavior in our documentation.

Please note that this feature is currently available for SaaS-type products only. If you have other product types and a valid use case, feel free to reach out to our support team and we will be happy to explore enabling this option.

Filter Documentation by Product Type, Plus Improved AI & LLM Guidance

This week we’re rolling out a few improvements to our Documentation website.

New Feature: Filter Documentation by Product Type

At Freemius, we’ve been pushing hard to expand our platform for SaaS makers. This has introduced a growing set of new features, tools, SDKs, and supporting documentation (if you haven’t already, you can take a quick look at our Year in Review to see what’s new).

As the documentation grew, it became increasingly important to clearly separate WordPress- and SaaS-related guides, so makers don’t have to second-guess which SDKs or tools apply to their product.

Freemius Documentation Filtering

With that in mind, we’ve introduced a filtering concept on the documentation pages. You can now select SaaS or WordPress to view a focused subset of guides relevant to that product type, or keep All selected to browse everything.

You’ll also notice that some pages adapt based on the selected category. For example, the Sales Analytics documentation now reflects the chosen product type where applicable.

This should make it easier to understand which features and workflows apply to the type of product you’re building. With this foundation in place, we’ll gradually roll out more fine-tuned and targeted guides.

More Guidance for LLM and AI

We recognize the growing importance of building with LLMs (large language models) and AI-powered tooling. To make our documentation easier to consume by AI scrapers, agents, and developer tools, we’re now exposing the following resources in the footer:

Build with AI in Freemius docs footer

  • llms-full.txt — All of our documentation bundled into a single, large Markdown file.
  • llms.txt — A summarized version of the documentation with links to individual guides, in Markdown format.
  • OpenAPI — Direct access to our OpenAPI specification.

Fixed Billing Information Updates in the Store Users View

One of the many useful features of the Freemius Developer Dashboard is the ability to explore all your users in the context of a Store. Since a store can have multiple products, this view makes it easier to see all users in one place. The same UI also allows you to view and update information for individual users.

It came to our attention that the Billing Information form in this view was not working correctly and was failing to update any of the fields.

User billing information form from Store

With today’s deployment, this issue has been fixed and billing details can now be updated as expected.

Easier Access to Customer & Legal Links from Product Settings

We have added a new tab to the Product Settings page called Useful Links. This tab brings together several self-service tools—such as the Customer Portal and the License Recovery Tool—that you can easily share with your customers. In addition, it also lists all legal pages that Freemius generates for your product as your MoR.

Useful links in the Freemius Developer Dashboard

You can access this section from Settings → Useful Links.

By grouping these resources in a single place, this update makes it easier to discover and share some of the built-in tools Freemius provides to help with customer support and product management.

Improved Onboarding Visibility with a New Setup Checklist Banner

We have rolled out a major update to the Developer Dashboard aimed at improving the onboarding experience for makers. Some time ago, we introduced the Setup Checklist to outline the steps makers need to follow to integrate their product with Freemius.

Setup Checklist page in Freemius Developer Dashboard

However, we realized that the button was not prominent enough and was easy to miss. To improve this experience and make the next required step more obvious, we have introduced a new banner at the top of the Developer Dashboard.

New onboarding header in Freemius Developer Dashboard

This banner highlights only the next mandatory step and automatically gets out of the way once the integration is complete. Makers can still access the full Setup Checklist page at any time to review optional steps and further customize or grow their product.

Clearer Labels for IDs and Keys in the Developer Dashboard

Our Developer Dashboard shows IDs and keys in various places. For example, the Settings → API & Keys section displays the product ID along with its public and secret keys.

Freemius product ID and keys

Similarly, on the Plans page we show the plan ID.

Freemius plan ID

And within individual plans, we display the pricing ID.

Freemius pricing ID

These details are critical, especially for SaaS makers integrating with our official SDK, as keys and IDs are required at different stages of the integration process.

Until now, we used generic labels such as ID or Secret Key across the UI. It came to our attention that this could be confusing, particularly for makers who are new to the Freemius platform.

To improve clarity and make the UI more intuitive, we reviewed the Developer Dashboard and introduced more descriptive labels, such as Plan ID and Product Secret Key as you can see in the screenshots above. This helps makers quickly identify the exact information they need without ambiguity.

Preventing env var Interpolation Issues in Secret Keys

The secret key our system generates (for example, for products) can include various special characters, including the $ sign. While this is usually fine for many systems, some frameworks, like Next.js, interpret $ as a reference to another variable and attempt to interpolate it. To avoid this, makers needed to escape the secret key using \$.

For example, if the generated secret key was:

sk_1234$abcd

then, when used with the Next.js framework, it needed to be escaped as:

sk_1234\$abcd

While the workaround is straightforward, this behavior is not always obvious and has led to wasted time debugging why integrations were failing.

To avoid running into this situation, starting today, no newly generated secret keys will include the $ sign. Existing secret keys are not affected in any way.

If needed, you can go to Product → Settings → API & Keys and click the “Regenerate” button to create a fresh key without the $ sign.

Regenerate secret key from Freemius Developer Dashboard

Fixes for Zero-Value Trial Payments and Payment Update Emails

After releasing invoices for zero-value payments, we noticed that the Developer Dashboard was also listing the first zero-value payment for trials. Since this information is internal to our system and does not provide any actionable value to makers, we’ve refined the behavior.

Going forward, the Dashboard (and API) will only surface relevant zero-value payments along with their associated invoices, keeping the UI cleaner and more focused.

In addition, we fixed a regression where a payment-like email was mistakenly sent when users updated their payment method.

Customizable Proration Period for Lifetime License Upgrades

Freemius supports proration out of the box. Proration means offering a discount on license upgrades based on the remaining days of usage. For example, a customer might have purchased an annual license of planA three months ago and now wants to upgrade to planB. In such cases, our Checkout automatically applies a proration discount for the remaining nine months. This acts as a strong incentive for customers to upgrade to higher plans.

Prorated discount in Freemius Checkout

For lifetime licenses, proration discounts were previously limited to a 30-day window. The reasoning behind this default is clearly explained in our documentation. However, we noticed that this recommended limit does not work equally well for all makers—especially for products where lifetime licenses are the primary offering and upgrades may happen much later.

To better support these use cases, we have introduced a new option that allows you to configure the proration period for lifetime licenses.

You can now navigate to PlansProrated Discount and update the configuration from there.

Configure prorated discount

The proration period can be set to any custom number of days, including Unlimited. For more details, please refer to the updated documentation.

Improved Webhook Failure Detection and Recovery

Our webhook mechanism includes an error detection system that notifies you when a webhook fails multiple times consecutively. We also have a safeguard in place where, if a webhook fails more than 100 times, it is automatically disabled to avoid unnecessary load and potential downtime on your server.

However, it came to our attention that we were not properly clearing the failure counter once the webhook endpoint recovered. This meant that even after the server started responding correctly, the accumulated failures could still lead to an automatic disablement.

This week, we’re rolling out an update to make this logic smarter. The failure counter will now correctly reset itself once the webhook endpoint stops returning errors for a sustained period of time.

Checkout Confirmation Dialog Customization for App Products

This week, we’ve opened up the option to customize the Checkout’s confirmation dialog for “App” products.

Until now, this capability was available only for SaaS products. However, we noticed that many app makers have similar post-purchase requirements—for example, sharing a download link or next steps immediately after a successful purchase.

Checkout confirmation dialog customization for app products

You can now visit Plans → Customization and start configuring the after-purchase dialog for your app products. For more details on the available options, refer to our documentation.

Clearer Onboarding Steps for Releasing Plans and Add-ons

This week we’re releasing a few improvements to the Setup Checklist and related documentation to make the onboarding experience clearer for WordPress makers.

Onboarding Step for Releasing Plans

We have a concept called Releasing Plans, where the paid plans of a product remain hidden to prevent unintended purchases. For new products, this is automatically enabled as soon as a paid plan is added.

However, for existing products or products that were previously using Freemius only for SDK analytics, this flag remains turned off until the maker explicitly enables it. This distinction was not clearly explained before, which led to some confusion.

With this release, we’ve added Releasing Plans as a visible step in the Setup Checklist, making it part of the onboarding flow.

Release plans in setup-checklist onboarding

For most new products that intend to sell from the beginning, this step will be automatically completed as soon as the first paid plan is added. For others, the checklist now clearly highlights the required action: visiting the Plans page and enabling the Release Plans toggle.

Release plans

In addition, we’ve updated our documentation to better explain this behavior.

Improved Explanation for Releasing Add-ons

There is a similar concept for releasing (or listing) add-ons in the WordPress SDK’s Add-on Marketplace. When an add-on is created, it is listed by default. Makers can choose to unlist it while the add-on is still in development. This can be controlled by going to the Settings page of the product and updating the “Show add-on in the WP Admin Add-Ons marketplace” checkbox.

We noticed cases where add-ons were unlisted during development and then unintentionally left unlisted later, which caused confusion when testing the add-on activation flow.

To make the intent of this setting clearer, we’ve improved the inline hint text to better explain its purpose.

Add-on listing config

Additionally, we’ve refined our documentation to provide clearer guidance around releasing and listing add-ons.

Smarter License Retention Guidance When Cancelling Subscription

The Freemius Developer Dashboard allows you to manage your subscriptions with ease. From the Subscriptions page, you can view all active subscriptions, drill into detailed information, and cancel subscriptions when needed.

Subscription Management from Freemius Developer Dashboard

When cancelling a subscription, the system also prompts whether you want to cancel the associated license. While cancelling the license by default makes sense for WordPress products, given how our WP SDK treats cancelled licenses—it is not the ideal recommendation for SaaS & App products. In those cases, usability and entitlement depend on whether the license is active and not expired, rather than whether the subscription itself is cancelled.

To reduce confusion and better align with how SaaS & App licensing works, we have improved the license cancellation dialog, as shown below.

License cancellation dialog from cancelled subscription

The dialog now clearly explains the implications of each option and recommends Retain the License as the primary action.

Please note that even if the license is retained, it will eventually expire, at which point access to the product will be revoked for the user. You can read more about license lifecycle handling and entitlements in our SaaS and App integration guides.

Checkout Improvements: GDPR Opt-In Control, Localization, and UX Fixes

This week we’re rolling out several improvements and bug fixes to our Checkout. Here’s what’s new.

New Feature to Control Marketing Opt-In UI

Freemius Checkout has several built-in features to make it fully compliant with GDPR and other privacy-related regulations, while providing the best possible UX for your buyers. One such feature is the Marketing Opt-In UI.

Freemius Checkout Marketing Opt-In UI

Until now, the UI would show up where relevant per regulation, and buyers had to explicitly choose whether they wanted to opt in to marketing or not. There wasn’t a way to configure this behavior.

We’ve now introduced a new configuration parameter, gdpr, to better customize this flow based on your own preferences.

  • default – This is the current default behavior, where the UI will show up if the buyer has not previously opted in the past.
  • opt_out – Use this to have the UI pre-select the “No” option by default, saving a click before purchase at the expense of fewer marketing opt-ins.
  • hidden – Completely hides the UI from the Checkout. Use this if you don’t want Freemius to manage the opt-in consent and already have your own system in place.

You can read more about it in our documentation.

All Dates in the Checkout Are Now Localized

Freemius Checkout supports various languages out of the box.

Freemius Checkout localized date

We’ve now extended this capability to also translate and localize the dynamic dates shown in the UI based on the selected language.

Coupon UI Now Has Better Resilience Against Errors

We noticed a UI glitch in the Checkout when a coupon could not be validated due to network or similar transient issues.

Coupon Error UI in the Freemius Checkout

We identified the root cause and made the UI and UX more resilient to such errors, helping keep the checkout experience as smooth as possible.

Better License Upgrade Flow

Last week, we saw a regression in the license upgrade flow where the flow was broken in some cases. We identified and hot-fixed it immediately.

Number of Sites in license upgrade flow in Freemius Checkout

As a follow-up, we also addressed additional edge cases, such as licenses that were manually upgraded to a higher quota by the maker. The Checkout will now always select the correct minimum pricing or quota when upgrading a license, whether the upgrade is within the same plan or across different plans.

Fix in the Review Avatar

Freemius Checkout can show reviews as a social proofing interface to help boost your sales.

Freemius Checkout Review UI avatar fix

We noticed a small UI bug where the fallback avatar was not being generated correctly in some cases. We’ve deployed a fix to ensure avatars are now rendered consistently across all scenarios.

Load more