Friday, July 11, 2025

Advanced licensing analytics now available

Tobias Lønnerød Madsen

Moonbase Founder

Tobias is the technical founder of Moonbase, with a long history of building e-commerce for software companies.

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.

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.

Start selling through Moonbase

Sign up today to get started selling your software through Moonbase.