# New and stopped subscription figures

**Summary:** New and stopped counts recorded subscription starts, restarts and stops. One subscription can contribute several events.

- Role: [Technical Support](https://www.subrite.no/technical-support)
- Source: https://www.subrite.no/technical-support/insights-new-and-stopped
- Updated: 2026-09-28
- Markdown index: https://www.subrite.no/technical-support/llms.txt

Net change is an event balance, not the change in unique active subscriptions.

<a id="data-source-and-reporting-date"></a>
## Data source and reporting date

`processAndSaveSubscriptionActivitySummary` counts `MemberPackageHistory` rows by action and `createdAt` within the reporting day. It groups by subscription plan, package and payment provider, scoped through the package's tenant.

The writer uses an explicit `dataDate` or yesterday. Day boundaries use `DateUtil`'s configured timezone. Saved rows carry `dateOfRecord` for that day.

The report sums those rows by `dateOfRecord`, not the summary's creation timestamp. There is no paid-price filter or distinct-member count. Several actions can belong to one subscription. [Sources: summary writer](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/stats/services/stats-store.service.ts#L325-L409), [historical query](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/stats/repositories/subscription-activity-summary.repository.ts#L52-L102).

<a id="included-actions-and-signs"></a>
## Included actions and signs

| Summary field | History action | Sign |
| --- | --- | --- |
| `newSubscriptions` | `INITIAL_PURCHASE` | Positive |
| `reactivations` | `SUBSCRIPTION_REACTIVATED` | Positive |
| `deactivations` | `SUBSCRIPTION_DEACTIVATED` | Negative |
| `expirations` | `SUBSCRIPTION_EXPIRED` | Negative |
| `stops` | `SUBSCRIPTION_STOPPED` | Negative |

An initial purchase can belong to an existing member. It is not a new-member count.

Deactivation requires `ACTIVE` changing to `PAUSED` or `INACTIVE`. Expiration requires `ACTIVE` changing to `EXPIRED`. `STOPPED` is recorded regardless of the previous status, including a paused subscription.

`PAUSED` changing to `INACTIVE` has a separate action excluded from this report. `WAITING_FOR_ACTIVATION` changing to `ACTIVE` is a first activation, not a restart. Turning off renewal records another excluded action; a later expiration can count. [Source: transition actions](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/payment/services/subscription-state.service.ts#L94-L134).

The labels **Stop - did not pay**, **Stop - by user** and **Stop - by admin** map to those status actions. The labels do not prove a failed payment or identify who acted.

<a id="net-change-percentages-and-renewal-limitation"></a>
## Net change, percentages and renewal limitation

Net change = new subscriptions + reactivations − deactivations − expirations − stops.

For example, 8 starts, 2 restarts and 4 stops produce net 6. The stop share is 4/14, not 4/6. Tooltip percentages divide each absolute visible count by the sum of absolute visible counts.

The Details tooltip total uses visible signed values. **Net change** aggregates every returned category, including categories hidden in Details. Hiding a category changes the tooltip comparison, not the combined calculation. [Source: chart arithmetic](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/frontend/src/ui/StatsView/index.tsx#L182-L246).

`renewals` is written and listed in `GROUP_NAMES`, but omitted from the historical query's summed columns. Its missing value becomes `NaN`, then zero during formatting. **Renew - successful** therefore provides no usable renewal count. [Sources: omitted aggregation](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/stats/repositories/subscription-activity-summary.repository.ts#L39-L123), [zero fallback](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/stats/services/stats.services.ts#L867-L874).

<a id="diagnose-a-discrepancy"></a>
## Diagnose a discrepancy

- Different month totals from Churns: compare `dateOfRecord` here with the summary `createdAt` used for churn losses.
- Unexpected stop: inspect the history action and prior status. A paused subscription can produce a later stopped event.
- Renewal shown without a count: check the missing aggregation above before investigating payment records.
- Blank Net change after hiding a category: restore all legend groups. Shared positional visibility can hide the combined series.
- Blank graph: the chart also renders an empty graph for a missing API response; verify the response before interpreting absence as zero.

The timeline defaults to the last 12 weeks. Daily ranges end yesterday; coarser periods include the current unfinished bucket. Explicit date windows and All time are capped at 550 buckets. [Sources: chart response handling](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/frontend/src/app/%28admin%29/admin/%28panel%29/analytics/statistics/subscription-activity/SubscriptionActivityStats/index.tsx#L40-L104), [timeline bounds](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/frontend/src/app/%28admin%29/admin/%28panel%29/analytics/statistics/utils/timeline/resolveTimelineWindow.ts#L53-L185).

The endpoint `historical-subscriptions-activity` requires Dashboard read permission. The menu also depends on Analytics access and the Insights feature. Check these separately for a missing menu versus a failed response. [Source: endpoint gate](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/stats/controllers/stats.controller.ts#L350-L359).

<a id="sources-and-verification"></a>
## Sources and verification

Source checked 28 September 2026 at `6cd1850569be3b1702ca736a19320c7626efb7bc`. Prior UI evidence confirms labels and switching to Net change. No fresh UI, numeric reconciliation, refresh-time or ordinary-role test was performed.

For controls and graph interpretation, see [New and stopped subscription figures](https://www.subrite.no/administrators/insights-new-and-stopped?md=true).

## Related pages

- [New and stopped subscription figures](https://www.subrite.no/administrators/insights-new-and-stopped?md=true): New and stopped counts recorded subscription starts, restarts and stops. One subscription can contribute several events.
