Metrics
How Fusionmetrics calculates churn
Understand rolling revenue, subscription, and logo churn, including gross and net models, opening populations, and App-level settings.
Last updated
Fusionmetrics calculates churn from subscription and Merchant relationship movements. Each point on a churn report is a rolling 30-day rate: the numerator contains qualifying losses and recoveries after the opening snapshot, and the denominator is the population observed at that opening snapshot.
The three reports answer different questions:
- Revenue churn measures recurring revenue lost relative to opening MRR.
- Subscription churn measures subscription contracts lost relative to opening subscriptions.
- Logo churn measures Merchant relationships lost relative to opening active Merchant relationships.
Because each rate uses a different population, the percentages should not be expected to match.
The rolling 30-day window
For a report point on a given day, Fusionmetrics takes the opening population from the end of the day 30 days earlier. It then counts qualifying movements after that opening snapshot through the report point.
This makes every point comparable even when the visible report covers 90 days or 12 months. The longer selectors change how much of the series is shown, not the underlying 30-day churn window:
- Last 30 days shows daily rolling values.
- Last 90 days shows the latest rolling value observed in each week.
- Last 12 months shows the latest rolling value observed in each month.
The dashed trend is an ordinary least-squares line across the displayed points. It summarizes direction; it is not another churn calculation and does not change the headline rate.
Revenue churn
Revenue churn divides qualifying recurring-revenue losses by opening MRR. The opening denominator follows the MRR calculation, with the usage component included only when Include usage revenue is enabled.
Revenue churn = qualifying recurring-revenue loss / opening MRR × 100
The model controls the numerator:
| Model | Numerator |
|---|---|
| Churn | Canceled recurring revenue only. |
| Gross | Canceled recurring revenue plus contractions. |
| Net | Cancellations and contractions, offset by expansions and reactivations. |
When Include frozen and unfrozen subscriptions is enabled, freezes add to loss. In the net model, unfreezes offset that loss.
Include usage revenue adds trailing-30-day usage MRR to the opening denominator. Usage charges are not treated as fixed subscription cancellation movements, so the numerator remains based on the observed recurring-revenue movements.
Net revenue churn can be negative when expansions and reactivations are larger than cancellations and contractions. A negative rate means recurring revenue expanded within the rolling window after churn was taken into account.
Subscription churn
Subscription churn divides qualifying lost contracts by the active contract population at the opening snapshot.
Subscription churn = qualifying lost subscriptions / opening subscriptions × 100
The Churn model counts subscription churn events. The Net model subtracts reactivations. When frozen subscriptions are included, freezes add to the numerator and net churn subtracts unfreezes.
Subscription population
The App-level subscription population determines which contracts enter the subscription-churn numerator and denominator:
| Population | Included contracts |
|---|---|
| Paid subscriptions | Active, non-test, non-trial contracts with positive recurring value after discounts. |
| All subscriptions | All active, non-test, non-trial contracts, including zero-dollar contracts. |
| Paid + selected zero-dollar | Paid contracts plus explicitly selected non-trial zero-dollar plan signatures. |
This setting affects subscription churn only. It does not change headline MRR, revenue churn, or logo churn. The selection is persisted for the App, so everyone with access to that App uses the same definition.
The custom option uses stable source-derived plan signatures. Fusionmetrics does not guess historical zero-dollar membership from a plan name when the source does not provide a stable identity.
Logo churn
Logo churn is relationship-based and uses active Merchant relationships rather than subscription amounts or the subscription population selector.
Logo churn = qualifying lost Merchant relationships / opening active Merchant relationships × 100
The Churn model counts observed uninstalls. The Net model subtracts qualifying reinstalls in the same rolling window. When Include deactivations is enabled, relationships that were deactivated and remain inactive at the report point are also counted.
Net logo churn can be negative when reinstalls exceed relationship losses during the window.
Plan segments
The plan selector filters the report to one or more normalized plan identities. For a multi-plan selection, Fusionmetrics sums the selected plans’ opening populations and movement components first, then calculates one rate. It does not average the plans’ percentages.
Logo churn belongs to the Merchant relationship. When a Merchant has multiple active plan identities and the source does not support one unambiguous attribution, the segmented loss remains in an unknown plan segment rather than being assigned arbitrarily.
Saved settings
The displayed range, plan segment, report models, inclusion toggles, and subscription population are persisted at App level. They are shared analytical definitions, not personal display preferences.
Changing the subscription population requires a churn refresh because it changes the historical subscription numerator and denominator. Display range, plan selection, and report-model changes reuse the prepared movement data and do not alter headline MRR.
Why churn can change after a refresh
A refreshed import can add or correct subscription events, current-cycle discounts, trial timing, plan identity, or Merchant relationship activity. Fusionmetrics then reconstructs the affected rolling windows from the improved source evidence.
The calculation is generic across Apps. App-level controls select an explicit population or report model; they do not introduce hidden App-specific calculation rules.