Changelog

Follow new updates and improvements to Moonbase.

April 3rd, 2026

New

Being able to offer customers your products shown in their local currency has been proven to increase conversion rates by over 5% in some cases, and it’s now natively available in Moonbase!

You can choose yourself how Moonbase should convert and prettify prices, and for which currencies. We currently support a total of 109 different currencies across all continents, and each one of them can be enabled or disabled for your Moonbase account. Get started today by heading to your account settings and enabling currencies relevant for your markets:

We’ve added a number of price prettification strategies, to make sure converted prices match the style of your normal prices. Read more about this new feature in our article on Currencies .

Setting product pricing

As always, you have full control over your product pricing, and can set prices in however many currencies you wish. You will always see the currency configured as the default currency on your account, with the option to expand the input to override specific currencies if you need to do that. To make it easier to get a feel for international pricing, we preview what prices customers may see in the different currencies, all based on the default currency price:

When converting between currencies that are using different tax modes (exclusive & inclusive), we automatically adjust the price to account for taxes, to make sure you still receive the original value configured.

Updated dashboard

With this explosive growth in the number of currencies you can sell in, we’ve simplified your dashboard. Before, you would see sale totals for each currency sold, but now we show your sales totals in your payout currency. This should make it easier to get a feel for how much revenue you will see as a business, and tie it closer to your KPIs, avoiding currency conversion math while looking at measurements.

Conversion fees

We try to keep fees as low as we can for all Moonbase features, but currency conversion is never cheap. That’s why we’ve updated our Fees & Costs with the relevant changes for this new feature: a 3% transaction fee for converting local currencies. However, to make sure you get the full product value from sales, this fee will be levied on customers by default, increasing the purchase amount enough to cover the conversion. In the case you specify the local currency prices, this fee will be taken from you, as the merchant.


If you have any feedback or questions regarding this big upgrade to Moonbase, hit the reply button! We appreciate any input on making this feature even better 🚀

March 30th, 2026

New

We’ve always had powerful import APIs to import customer and license data into Moonbase, making sure you can transition seamlessly from your existing infrastructure to Moonbase, and today we’ve made it even simpler to use!

If you want a less technical approach to data import, you can now use our new import tools, found directly in the Moonbase app. These allow you to upload a CSV file with all the data you want to import, with support for a number of fields on both customers and licenses.

Head over to the “Customers” or “Licenses” tab to get started:

The wizard will take you through uploading and mapping your CSV file, and you’ll get a preview of all data you will import:

This import process can handle large amounts of data, so even if you have tens of thousands of customers to import, it will be handled in a safe and consistent manner. Once done, you’ll be able to download the results of the import, with a full report on which rows were imported, with which IDs, and which rows failed.

To learn more about the types of data that you can import and how it works, read our article on Using the import tool.

February 24th, 2026

New

Every now and then, customers will inevitably sign up with the wrong email address, a typo in the domain, or any other quirk that prevents them from accessing their purchases. Normally, merchants can simply update the email address of the customer account, but often the customers themselves end up creating multiple accounts, making the situation messy.

Today, this is simplified with our new customer account merge!

Start by opening the customer account that should be merged into another, and head to the “Danger zone” section:

When you start this process, you’ll be given the opportunity to search for the target customer, which you want to use as the destination for all the data on this customer. Once selected, you will get a preview of what will be moved over:

We currently support transferring:

  • Orders placed

  • Trials started

  • Licenses & their activations

  • Subscriptions (both active and expired)

  • Emails going to the customer (for historical purposes)

  • Group memberships (for segmentation purposes)

  • Voucher code redemptions

In addition to this, we also merge relevant customer data like billing details and communication preferences, to make sure you don’t lose anything in the process.

Remember that the option to re-send receipts for purchases always uses the current email address of the customer, so after merging two accounts, you can re-send the receipt if the customer never received it to begin with!

February 9th, 2026

Improved

We’ve added a new “Compare” option to the analytics dashboard, allowing you to overlay historical data directly on your current view. This makes it much easier to answer questions like:

  • “Am I performing better this year than last year?”

  • “How does this year’s Black Friday compare to last year’s?”

  • “Is my growth consistent week over week?”

When selecting a comparison period, you can choose from:

  • Previous period: the same number of days immediately before your current date range

  • Previous month: the same days in the prior month

  • Previous year: the same date range from last year

Each panel will have relevant changes between the two periods shown, and you can hover the percentage change to see the actual value of the last period.

We’d love to hear your feedback on this improvement!

January 5th, 2026

Improved

Some times, you have customers that deserve an early reward, or maybe you need to manually merge some difficult subscriptions and keep the milestone progress intact. This is why we now added a small feature to manually increment progress on subscription milestones, so you can speed up the redemption process for those customers.

Screenshot of the milestone progress of a subscription with a new "Increment progress" button highlighted

When incrementing progress, the milestone progress ticks up one step, and grants any rewards that may be due based on the milestone scheme.

Milestones are a feature for Subscriptions that define a series of rewards to be issued to customers based on their subscriptions. To learn more about the feature, check out the article on Subscriptions

December 23rd, 2025

New

From the start, we built Moonbase to be a white-label solution, powering your websites, apps and stores invisibly in the background. Many customers never realize someone else than your business is powering big chunks of the infrastructure and features necessary to run modern e-commerce. There were however two surfaces which until now has kept a default Moonbase theme, namely emails and checkouts.

Starting today, all Moonbase merchants can now adjust the theme of these surfaces to match their brand, making the customer experience even smoother and presenting a consistent brand throughout the journey.

Screen Recording 2026-01-09 at 16.03.11.mov [video-to-gif output image]

Configuring your Theme

Head over to your Moonbase account settings and find the "Theme" section to get started:

These settings allow you to tweak the overall look and feel of emails and checkouts for your customers, including:

  • Fonts used in headings and body

  • Corner roundness across most UI elements

  • Button style for secondary buttons

  • Brand color with shades for different UI elements, along with a configurable contrast color to ensure legibility on brighter brand colors

All of these settings are also configurable for the Embedded Storefront to ensure that the theme is also consistent with the cart and customer portal embedded on your website.

November 23rd, 2025

Improved

Earlier this year, we launched our Offers feature, which is an easy way to add in-cart up-sells to bundles or cross-sells to other products, both with an optional discount. This already drives more sales and revenue for our merchants, and is perfect for those selling more relevant products together.

Until now, each offer would promote a single target product or bundle only, but today, we've extended these offers to allow promoting several products, giving customers the choice.

Ramping up towards Black Friday, several of our merchants have used this new ability to offer 2-for-1 deals where customers can choose their free product. One example is Aapo from Sixth Sample:

Setting it up

To create the same kind of offer for your store, set up an offer on your Moonbase account using settings like the following:

  1. Head to the "Offers" page of your Moonbase account, and create a new offer

  2. Select all the products that should be selectable as a free second product as the target products of the offer

  3. Leave the condition to the default condition of any products in cart

  4. Set the discount to 100% to grant the added product for free

See below for a full example offer setup:

And that's all there is to it!

September 16th, 2025

Improved

As an alternative to selling high-priced perpetual licenses up-front, more and more merchants are now offering Rent-to-own schemes in order to let customers get an extended taste of the product, while still working towards ownership. This technique has garnered massive amounts of positive customer reviews, leading to more sales and greater flexibility for consumers across the board.

These Rent-to-own schemes come in many shapes and sizes; focusing on single high-ticket products, but also on bigger collections of products. Yum Audio runs their Rent-to-own programme as part of their "YumPass" all-access subscription, where every 12 months of being subscribed, customers receive a $150 coupon they can spend to get their favorite plugins for free.

When we started building support for this in Moonbase, we wanted to support either approach, to make sure our merchants has the tools to sell their products the way they want. The result is what we call Subscription Milestones.

Introducing Subscription Milestones

Crafting your own rent-to-own scheme or just a generic rewards programme for subscriptions is now easier than ever, just head over to the new "Milestones" section of your subscription price variation:

These milestones are defined per price variation, which means you can have different schemes for different types of subscriptions, whether yearly or monthly, cheap or expensive. Each scheme may have multiple milestones, meaning you can drip-feed rewards throughout the journey. Today, we support the following two reward types:

  1. Coupon codes: Simply define a coupon on your account, with any restrictions (for example a limit on redemptions per code), and we'll automatically generate a unique code for the customer, and communicate the code by email.

  2. Perpetual license conversion: This will remove any expiry date on subscription licenses, making them perpetual and independent of the subscription.

With these, you can already craft a myriad of reward schemes to keep customers invested in your subscriptions, with the options to also repeat the scheme for as long as the subscription is active, or automatically stop subscriptions on reaching the end of the scheme.

Perpetual license conversions only works for products using Moonbase for licensing, external licenses in other systems need specific support. Contact us for more details on this.

Customer experience

On the customer side of things, we've extended both our APIs and SDKs to be able to render progress and upcoming rewards, and added UI for this in the Embedded Storefront:

Customers will be able to see all previous rewards, including the generated coupon codes, as well as a preview of upcoming ones on any subscriptions they may have.

Tips & Tricks

These milestones are set up to be flexible, to cater for a wide variety of reward schemes, but here's some tips and tricks you may want to consider.

Coupon setup

When setting up coupons for use in milestone rewards, we often intend for them to be personal codes, unique for the customer earning the reward. To make sure this is the case, you should add a redemption limit per code of 1 in the coupon configuration:

This makes each code generated actually unique, usable once only.

Consider future upgrades

Subscriptions in Moonbase are never automatically updated when you update the product or bundle they are subscribing to, they keep their price, content and any milestone scheme they were created with when first started by customers.

Especially for bundle subscriptions, it's common that you change price and bundle content over time, at which point you usually want to upgrade subscriptions. Upgrading subscriptions will align the price and/or content to match the current price and content of the product or bundle, communicating the change to customers and potentially revoking or issuing licenses.

Since these subscription milestones are part of the price, you need to run a subscription upgrade process where you upgrade the price of all existing subscriptions.

Learn more about all of this in our help center: Subscriptions

August 18th, 2025

New

Being able to promote key products in your storefront during the shopping experience is a great way to drive additional sales, and with the new Offers feature in Moonbase, you can easily set up the journey you want.

The promoted offers can also contain discounts exclusive to that shopping cart, making combinations of products or up-sells to bundles even more appealing.

Initial insights from Moonbase merchants using these offers to drive more sales indicates increased revenue upwards of 3.5% based on offer sales alone!

Getting started

Head over to the new "Offers" tab in your Moonbase account and create your first offer:

You can determine yourself how you want offers to appear in shopping carts, and when. The Offer Condition will determine in which scenarios you want an offer to appear, so that you can promote similar products at a higher priority for example.

Displaying in carts

The Offers feature is natively supported in the Moonbase Embedded Storefront, where it picks the best offer to show based on:

  • Does the authenticated customer own the promoted product?

  • Does the cart currently contain the promoted product?

  • Is the offer eligible based on the current cart contents?

  • Lastly, rank offers based on configured priority

This way, you can control the sequence of Offers being promoted, and in which scenarios they should appear.

In the case you are using our APIs or SDKs to display offers, you can just as easily use offers:

  • There's a new list of offers on the storefront response

  • In our Vue.js SDK, there's a new composable to get all or relevant offers

  • When adding products to cart, they support an offerId, indicating which offer they are added with

What to promote

A common approach that we see working well is promoting "companion" products, two products that naturally complement each other. There are practically two ways to facilitate this up-sell:

  1. Add a bundle with both products that has a bundle discount applied. Then add an offer for this bundle that should be promoted when any product is in the cart, it can have a 0% discount since the bundle is already discounted.

  2. Add two offers, one for each product that is configured to show when the other is in cart. This offer can have a similar discount as the bundle may have.

These tactics also extend to bigger sets of complementing products, with bundles being the better option as the number of products grow.

Discount behavior

These offer discounts are now a third type of discount supported by Moonbase, and it's important to think about the order of discounts when many are applicable to a given product. When calculating the final price, we always apply discounts in the following order:

  1. Product discount, configured on the product or bundle directly, only the best one is picked if multiple is eligible for the customer

  2. Offer discount, if any is applied to the line item

  3. Coupon discount, if the customer has added a coupon code

Some coupons are non-combinable with other discounts, in which case the coupon discount is the only discount applied.

July 11th, 2025

New

When you have thousands of customers running your software on a myriad of platforms, environments and configurations, how do you know which to pay the most attention to? Should you put more effort into doing quality assurance and marketing towards Windows or Mac users? Towards Intel or AMD CPU users? And how many of your users are on the latest version of your apps already?

These are questions many of our merchants had, and with a new upgrade to our analytical stack as well as new versions of our licensing SDKs, this is easily added to your apps!

New API parameters

To facilitate taking in metadata about the environment of your users, all licensing endpoints have been updated to accept a few optional query parameters.

At the base, you may now pass a ?appVersion=1.0.0&platform=Windows, which will be available when breaking down license validations and trial activations in your Moonbase dashboard. Where it gets interesting is when you add any other dimension that may be relevant to you in the meta parameter, which is a key/value map of values. For example, you may add a ?meta[Is64Bit]=true to be able to break down on how many of your users are on 64bit devices, but the possibilities here are endless.

In the world of audio plugins for example, it can be very useful to know which DAW is hosting the plugin, being able to break down usage of Reaper vs Logic Pro users, or how many of your users have CPUs with support for specific instruction sets like SSE or AVX.

Read more in our documentation on Metadata for analytics, or if using our SDKs, read on for instructions.

Keep in mind that values in this metadata map should be low cardinality and anonymous to make your insights useful. Anything non-anonymous requires user consent before gathering.

Dashboard configuration

To get insights on the dimensions you've tracked through these parameters, start by configuring your Moonbase dashboard insights, targeting licensing statistics:

New in the normal breakdown parameters are ApplicationVersion and Platform, and the new metadata breakdown field has any custom meta parameter we've ingested in the last month. Once selected and saved, your charts and tables will now break down licensing events based on these custom parameters!

SDK updates

To make it easier to collect these parameters, we've updated our SDKs to automatically gather some useful dimensions, but also let you add any additional parameters on demand.

.NET SDK

By default, the .NET SDK now tracks which Platform the app is running on, and it will try to get the version of the entry assembly as ApplicationVersion. This, along with any custom parameters is configurable when setting up the Moonbase instance:

var licensing = LicensingFactory.CreateInstance(
    opts =>
    {
        ...

        opts.ApplicationVersion = "1.0.0";
        opts.Metadata = new Dictionary<string, string>
        {
            {"Host", "Console"},
            {"ProcessorCount", Environment.ProcessorCount.ToString()},
            {"Is64Bit", Environment.Is64BitProcess.ToString()},
        };
    });

This configuration is available starting with version 1.1.2 of our .NET SDK.

JUCE SDK

By default, the JUCE SDK now tracks which Platform the app or plugin is running on, as well as the version of the project as ApplicationVersion. Additionally, using the underlying JUCE-provided system information, we can also track a number of device metrics like:

  • JUCE framework version

  • Host DAW (if any)

  • Operating system details (32bit vs 64bit, version)

  • Device and CPU details (including CPU features like instruction sets)

These are not enabled by default, but can easily be toggled on, or supplanted with your own parameters, simply add parameters when configuring the SDK:

moonbaseClient->setTransmitAnalytics (true, true);

moonbaseClient->registerGetAnalyticsCallback ([&] (bool& includeExtendedDefaultAnalytics) -> const juce::StringPairArray
{
    // This is where you can add custom environment metadata. 
    StringPairArray analytics;
    analytics.set ("CustomKey", "This value can come from anywhere");

    return analytics;
});

This feature was added to our JUCE module in commit 4d653e8.