How every number is produced
All metrics are reconstructed as-of a date from the append-only Shopify Partner API event feed; there are no snapshot tables that can drift. Asking for last March’s MRR replays the subscription state as it was then, so the same question always returns the same answer.
Revenue metrics
MRR (monthly recurring revenue)
The sum of the normalized monthly value of all recurring subscriptions active as of a date. Annual plans are divided by 12 (never divided twice), usage charges can be included on top, and frozen subscriptions contribute $0. The value used is the effective price after permanent discounts: what the merchant actually pays, not the list price; one-off app credits are excluded.
MRR movement
The change in MRR between periods, split into new (first-time subscriptions), expansion (upgrades and usage growth), contraction (downgrades), churned (cancellations and uninstalls) and reactivation (returning subscribers).
ARR (annual recurring revenue)
ARR = current MRR × 12. A pure run-rate figure: it inherits every MRR toggle and models no churn, expansion or seasonality.
Discounts
The gap between the subscribed (list) price and the amount actually charged on the underlying transactions, measured from real charges, so temporary and permanent discounts are captured as they bill.
Payout
Net revenue (gross minus Shopify’s revenue share, using the rate in force at each transaction) minus refunds, taxes and app credits, bucketed into Shopify’s real payout windows (1st to 15th and 16th to end of month) rather than calendar months.
Customer metrics
ARPU (average revenue per user)
ARPU = MRR ÷ active population, where the population can be counted as subscriptions or distinct paying customers. An empty population yields 0, and trials are excluded so they don’t deflate the average.
LTV (predicted lifetime value)
LTV = ARPU ÷ gross monthly subscription churn rate. The denominator is per-customer churn (customers lost ÷ customers 30 days earlier), not dollar churn: LTV is ARPU times expected lifetime, and lifetime is 1 ÷ customer churn. Store closures are excluded (they aren’t a customer decision), and the division is floored so near-zero churn can’t produce an infinite LTV.
Trials & trial conversion
A trial converts when the subscription outlives its trial expiry, and is canceled when it churns on or before expiry. Conversion rate = converted ÷ (converted + canceled). Trials are excluded from MRR until they start paying.
Churn & retention
Gross churn
What left, measured against a start-of-period base over a rolling 30-day window. Three lenses: logo churn (uninstalls ÷ active installs at start), subscription churn (unsubscribes ÷ active subscriptions at start) and revenue churn (MRR lost to cancellations and downgrades ÷ MRR at start).
Net churn
Gross churn minus what came back: reinstalls, resubscribes and, for revenue, expansion. Net revenue churn can be negative: expansion outgrowing contraction is the healthiest signal a subscription app can show.
Store-closure note
Uninstalls caused by stores closing or pausing can be excluded from churn to isolate genuine customer decisions; closures still count in install growth, and they are always excluded from the LTV churn denominator. Plan switches within ~30 days of first subscribing are treated as part of the initial subscription, so early plan-shopping doesn’t inflate churn.
Retention & cohorts
Customers are grouped into cohorts by their first subscription month; each cohort is followed month by month into a triangular table where cell (cohort, age) shows how much of the starting count or revenue remains, both as a percentage and an absolute value.
NRR (net revenue retention)
Revenue retention including expansion: a cohort’s MRR at age N ÷ its initial MRR. NRR can exceed 100% when upgrades outweigh churn. The most recent cohorts have the least history, so treat them as provisional.