HomeBilling Exports

Exporting subscription data from Freemius for churn analysis

Freemius is the billing layer behind a large share of commercial WordPress plugins and themes, and its licence-based model behaves differently from SaaS subscriptions in one decisive way: a meaningful share of revenue is often lifetime licences, which never renew and never churn, and which should not carry a recurring multiple.

TL;DR: Freemius sells WordPress plugins and themes on a licence model, where lifetime deals and non-renewing annual licences behave nothing like SaaS subscriptions. Here is how to read it.

Every churn calculation needs the same seven things: a stable customer identifier, subscription status, recurring amount and currency, billing interval and term, start date, cancellation or end date, and ideally the date of the last successful payment. (Why each one, and what breaks without it →) What changes between platforms is where those fields live and which status values mislead you.

How Freemius models this

Freemius models plugins, plans, licences, subscriptions and payments. A licence grants access and has an expiry; a subscription is the recurring payment arrangement behind an auto-renewing licence. Lifetime licences have no subscription at all. Because the WordPress plugin market sells heavily on annual licences with updates and support, the renewal decision is annual and highly visible, which makes renewal-rate analysis unusually informative here.

Field mapping for Freemius

NeededWhere it lives in FreemiusWatch out for
Account identifierUser ID, plus licence ID and subscription IDOne user can hold licences across several plugins. Aggregate by user.
Subscription statusActive, cancelled, or absent entirely for lifetime licencesThe absence of a subscription is itself the key signal. Do not read it as missing data.
Amount and currencySubscription or licence amount and currencyRenewal amounts often differ from initial amounts because of renewal discounts.
Billing interval and termAnnual, monthly or lifetimeLifetime must be excluded from recurring revenue entirely.
Start dateLicence created date, or first payment dateStraightforward.
Cancellation or end dateSubscription cancellation date, plus licence expiryA cancelled subscription still leaves a licence valid until expiry.
Last successful payment dateMost recent payment on the subscriptionNeeded to distinguish an expired licence from a failed renewal.

Freemius-specific traps

These are the errors we see repeatedly on this platform. Each one is silent: the analysis completes and returns a number that is wrong.

1. Lifetime licences are not recurring revenue

Lifetime deals are common in the WordPress market and they are one-time revenue with an ongoing support obligation, which is close to the opposite of a subscription. They should be excluded from MRR, valued separately, and counted as a cost of service going forward. A Freemius business with a large lifetime cohort can look far more recurring than it is.

2. Renewal discounts mean renewal revenue is below initial revenue

Where a renewal is discounted relative to the first year, revenue per customer declines on a known schedule even with perfect retention. Model the renewal amount, not the acquisition amount, and check whether the discount is permanent or first-renewal only.

3. Annual licences make retention lumpy and highly visible

Almost all decisions land in the licence anniversary month, so monthly churn is close to meaningless and the annual renewal rate is close to everything. Build the renewal calendar and compute the observed renewal rate on cohorts that have actually reached an anniversary.

4. An expired licence is not necessarily a cancellation

Licences expire because a subscription was cancelled, because a renewal payment failed, or because the licence was never auto-renewing. Those are voluntary churn, involuntary churn and a scheduled ending respectively, and only the payment history distinguishes them.

What to ask for, in words you can paste

Vague requests produce filtered exports. This wording asks for the complete set in the platform's own vocabulary, which is what gets you a usable file first time:

Please export all Freemius licences, subscriptions and payments for the full history, with user ID, plugin, plan, licence ID, subscription ID where one exists, amount and currency for both initial and renewal, billing period including lifetime, created date, expiry date, cancellation date, and payment history. Please flag lifetime licences explicitly and state whether renewals are discounted relative to first purchase.

Before you trust the file

One check first, and it is the same on every platform: count the rows that carry a cancellation or end date. If none do across a multi-year Freemius export, the file was filtered to active subscriptions and every churn figure you compute from it will come out at zero. That single defect causes more wrong churn numbers than every definitional argument put together, and it is fixed with one email rather than with analysis. The three further checks — row count, MRR reconciliation and history length — take another five minutes.

What to do with the file

Once you have a clean export, the analysis is the same regardless of where it came from: recompute churn in both logo and revenue terms, build the renewal calendar, check concentration on parent entities rather than accounts, and test whatever the seller has claimed. The seller-claims pages cover the twelve claims worth testing and the arithmetic for each, and the 23-point checklist is the short version.

Official Freemius documentation: https://freemius.com/help/documentation/. Export layouts change; the data model and the traps above do not.

Other billing systems

All billing platforms →  ·  Already integrated: Stripe, ChartMogul, ProfitWell, QuickBooks.

Verify it against the raw rows

Every check on this page can be run by hand in a spreadsheet, and if you have the time you should. If you would rather not: send us the target's subscription export and we run the full human-reviewed analysis — logo churn, revenue churn, customer concentration, annual-plan decay, zombie MRR and an A–F revenue-quality grade. The free Starter tier covers one CSV per month, which is enough to check a single deal.

See a sample report →  ·  Get the free 23-point checklist →

Frequently asked questions

How should lifetime licences be valued in a plugin business acquisition?

As one-time revenue with an ongoing support and update obligation, not as recurring revenue. They belong outside MRR and outside the subscription multiple, and the support cost of servicing them should be treated as a going-forward expense. A large lifetime cohort makes a business look more recurring than it is.

Why does Freemius revenue per customer fall even with good retention?

Because renewal pricing is frequently discounted relative to the first purchase. Even at a perfect renewal rate, revenue per customer steps down at the first anniversary. Model the renewal amount rather than the acquisition amount, and check whether the discount applies once or to every renewal.

What is the right churn metric for an annual licence business?

The observed annual renewal rate on cohorts that have actually reached an anniversary, not a monthly churn rate. With annual licences, almost every decision lands in the anniversary month, so a monthly figure mostly measures the calendar. Build the renewal calendar first.

9%
Median B2B SaaS revenue churn
88%
Median gross revenue retention
23
Audit Checklist Points

The seller's churn number is almost always wrong. Send the CSV and find out before you wire.

Get the Free Checklist →

🛡️ Free Starter tier: 1 CSV analysis per month. No credit card. Verify a seller's churn claims before you commit.