Paid subscription movements

Paid subscription movements: for each period, how many PAYING subscriptions (full price or paid offer) entered the paid base and how many left it.

  • Returns an array of {period, group_by, group_by_public_id, group_by_name, total_activations_count, total_churns_count, net_movement_count} rows.
  • total_activations_count: subscriptions that entered the paid base (direct purchases, trial/intro/promo conversions, reactivations).
  • total_churns_count: subscriptions that left it (voluntary churn, involuntary/billing-failure churn, refunds).
  • net_movement_count: total_activations_count - total_churns_count.
  • Unit: count of subscriptions. A flow: summable across periods.
  • Always restricted to the paid segment (no segment parameter). This is the paid counterpart of subscription_activations.
  • These movements do not reconcile exactly with subscription_evolution: a close is not the previous close plus net_movement_count, because the two follow different rules. Movements count only classified store events and apply the paid filter to each event. ENTERED_BILLING_RETRY and GRACE_PERIOD_TERMINATED count as involuntary churn on their date, and a switch from paid to free without DEACTIVATE counts no churn.
  • For the exact base on a date, use subscription_evolution (its last row on the date_range end date, or periodicity=DAY), not a close minus movements.
  • Recommended periodicity: MONTH.
  • Single application only.

Required scope: analytics.dashboards:view

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

Public ID of the resource.

Query Params
date_range[]
array of strings
required

Two-element [start_date, end_date] window of ISO8601 dates (YYYY-MM-DD); both ends inclusive (the end date's events are counted). Every time-series tool in this namespace needs it. Over REST, send it as date_range[]=2026-10-01&date_range[]=2026-10-25.

date_range[]*
string
enum

Bucket granularity. Defaults to MONTH. Use DAY for ranges up to ~60 days, WEEK up to ~6 months, MONTH beyond. Each row's period is the bucket's start date.

Allowed:
countries[]
array of strings

Filter by store country ISO codes.

countries[]
platform_names[]
array of strings

Filter by platform name.

platform_names[]
Allowed:
audiences[]
array of strings

Filter by audience public_id.

audiences[]
campaigns[]
array of strings

Filter by campaign public_id.

campaigns[]
placements[]
array of strings

Filter by placement public_id.

placements[]
screens[]
array of strings

Filter by screen (paywall) public_id.

screens[]
ab_test_variants[]
array of strings

Filter by A/B test variant public_id.

ab_test_variants[]
offer_types[]
array of strings

Filter by offer type.

offer_types[]
Allowed:
string

Restrict to unique users ("true"/"false").

string

Filter by survey identifier.

string
enum

Split the movements by one dimension. Omit for a single, ungrouped series. Values beyond the 10 largest groups are collapsed into one "Other" row. platform = store platform (ios, android, …); screen = paywall screen the subscription was purchased from; placement = placement the paywall was shown at; audience = audience the user matched; ab_test_variant = A/B test variant; plan = subscription plan; country = store country (ISO code); offer_types = offer type (NONE, FREE_TRIAL, INTRO_OFFER, PROMO_CODE, PROMOTIONAL_OFFER); payment_types = payment type (FULL_PRICE, PAID_OFFER, FREE_OFFER); period_types = plan billing period (P1W, P1M, P1Y, …); campaign = campaign; event_types = movement type — entries: ACTIVATION, TRIAL_CONVERTED, INTRO_OFFER_STARTED/CONVERTED, PROMO_CODE_STARTED/CONVERTED, PROMOTIONAL_OFFER_STARTED/CONVERTED, REACTIVATION; exits: VOLUNTARY_CHURN, INVOLUNTARY_CHURN, REFUND (each row then carries only the count that applies).

fields[]
array of strings

Field selection for token economy: an explicit list of field names to include in the response, or ["*"] for every field. Omit for this endpoint's own default field set.

fields[]
Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json