Metric Definitions

Every number in the Subscription Report is defined here, with the formula it is actually calculated from. If a figure looks wrong, or two tabs disagree, start on this page.

Two metrics are deliberately calculated differently on different tabs — Active Subscriptions and Renewal Success Rate. Both are explained below. If you are comparing tabs, read those two sections first.

MRR and ARR

Both come from a single annual run-rate. For every active subscription, the recurring total is converted to an annual figure according to its billing period, then divided by its billing interval:

Billing periodMultiplier
Year× 1
Quarter× 4
Month× 12
Week× 52
Day× 365

A subscription billed every 3 months is therefore counted as total × 4 ÷ 1; one billed every 2 months as total × 12 ÷ 2.

  • MRR = annual run-rate ÷ 12
  • ARR = MRR × 12 — which is exactly the annual run-rate again

The annual run-rate is calculated first, so ARR and MRR can never drift apart by rounding.

Subscriptions on a free trial and lifetime subscriptions are excluded from MRR and ARR. A store whose signups are mostly still in trial will show an MRR well below what the subscription count suggests. This is the most common reason MRR looks "too low". Only subscriptions with status active are counted.

Recurring totals are order totals, so they include tax and shipping where your store charges them.

Active Subscriptions — two definitions

This is intentional, but it means the two tabs will not match on a store with subscriptions awaiting cancellation.

WhereCountsNote
Overview reportStatus active onlyThe stricter figure. A subscription set to cancel at period end is not counted.
Customers reportStatus active and pending-cancelThe customer still has access until the period ends, so they are counted as a current subscriber.

The Customers report’s list is filterable by developers through wcs_reports_active_statuses, which receives array( 'active', 'pending-cancel' ).

Churn Rate (Last 30 Days)

A standard subscriber churn rate, measured against the base you started the window with:

Churn Rate = (subscriptions cancelled or expired in the last 30 days ÷ subscriptions active 30 days ago) × 100
  • Numerator — subscriptions that moved to cancelled or expired within the last 30 days.
  • Denominator — subscriptions that existed 30 days ago and had not already been cancelled or ended at that point.
  • This is subscriber churn, not revenue churn. A cancelled $200/mo subscription and a cancelled $5/mo subscription count the same.
  • The card always uses a rolling 30-day window and ignores the date-range picker.

Renewal Success Rate — two definitions

The Overview card and the Upcoming Revenue forecast both publish a renewal success rate, and they count differently. Expect them to differ on any store that has cancelled or pending renewal orders.

WhereCounted as successCounted in the total
Overview cardWooCommerce’s paid statuses, plus completedSuccess, plus failed, cancelled and pending
Upcoming Revenue forecastcompleted and processing onlySuccess, plus failed only
A renewal that fails and then succeeds on retry counts as a success in both places. Each renewal order is judged on the status it holds now, not on what happened during the retry sequence — so a payment that eventually went through is a success, and only one that is still sitting in failed counts against you.

Net Subscription Growth

Net Growth = new subscriptions − ended subscriptions, over the selected period.

"Ended" means cancelled or expired within the period. The Over Time report describes the same figure as the net change in active subscriptions across the period — it is the same calculation, worded differently.

Lifetime Value

Per customer, lifetime value is the sum of their initial subscription order total plus all their renewal and switch order totals. These are order totals, so tax and shipping are included.

The Average Lifetime Value summary card is the customer-weighted mean of that figure across the customers included in the report under your current filters — not a store-wide, all-time average. Change the filters and the average changes with them.

Revenue Recognition

Recognition amortises each paid subscription order across the days of the period it covers. Full detail, including refunds, trials and the treatment of tax, is on Revenue Recognition and Deferred Revenue.

The amortised amount is the full order total, including tax and shipping. If you need revenue net of tax for filing, you must back the tax out yourself — the report does not separate it.

Which subscription and order statuses count

ReportStatuses in scope
MRR / ARRSubscriptions with status active, excluding trialing and lifetime
Active Subscriptions (Overview)active
Active Subscriptions (Customers)active, pending-cancel
Churn Risk scoringactive, on-hold, pending-cancel
Upcoming Revenue forecastThe same open set, minus pending-cancel — so on-hold subscriptions are included in the forecast
Revenue RecognitionOrders with status completed or processing
Churn RateSubscriptions moving to cancelled or expired

Churn Risk scores on-hold and pending-cancellation subscriptions because both are at risk of ending. The forecast excludes pending-cancellation because that revenue is not expected to arrive. This is why the two tabs can show different subscription counts for the same store.

Dates and time zones

The reports do not all use the same time zone. This can shift a subscription between two adjacent days or weeks at a period boundary. It does not affect monthly or longer totals in any material way.
SurfaceTime zone
Daily rollup table (Over Time, Products, Customers)Your store’s local time zone, from Settings → General
Revenue Recognition monthsYour store’s local time zone
Overview cards and weekly groupingsUTC

Weeks start on Monday. The default date range when a report is first opened is the trailing 12 months.

Multi-currency stores

Totals are not currency-converted. If your store accepts more than one currency, amounts in different currencies are added together as plain numbers and displayed with your store’s base currency symbol — so 100 USD plus 100 EUR is shown as 200. The reports are accurate on a single-currency store. On a multi-currency store, treat every money figure as indicative only, and use the per-order export, where each row carries its own currency, for anything that has to be exact.

Who can see the reports

Every tab, and the settings screen, requires the manage_woocommerce capability — in practice an Administrator or Shop manager. There is no separate, lower-privilege view. If someone reports an empty report or a permissions error, this is the first thing to check.

Why a figure might not match WooCommerce’s own reports

SymptomMost likely cause
MRR is 0 or far lower than expectedFree trials and lifetime subscriptions are excluded, and only active subscriptions count.
Two tabs disagree on active subscriptionsExpected — see the two definitions above.
Everything is zero on a store with historyThe historical import has not been run. See Importing Historical Data.
Revenue Recognition does not tie to WooCommerce’s revenue reportExpected. WooCommerce reports cash when it is collected; recognition spreads it over the period it is earned. They agree only over the full life of a subscription.
Money figures look inflatedCheck whether your store takes more than one currency — see the multi-currency warning above.
A day’s figures moved after midnightOverview uses UTC while the daily rollup uses store local time. See the time zone table.