Analytics dashboards. Start with: dashboard summary --app <app_id> --output table
Usage: purchasely dashboard [options] [command]
Analytics dashboards. Start with: dashboard summary --app <app_id> --output table
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id. Without it, a menu shows the apps of
the key
-h, --help display help for command
Commands:
summary [options] Analytics dashboard of an app: MRR, subscriptions, viewers,
conversions with trend charts
composition-live [options] Subscription composition (by platform/plan/product/state)
for an application, or across every application you can
access
events [options] Event counts per day for an application, or across every
application you can access
flow-paths [options] Flow-paths funnel for a single application
funnel [options] Conversion funnel (views -> purchases) for an application,
or across every application you can access
header-live [options] Live header cards (active-subscriptions statuses, live
users, inactive-subscriptions causes) for an application,
or across every application you can access
header-today [options] Today's header card for an application, or across every
application you can access
mrr-evolution-live [options] Live MRR evolution (by day and by month) for an
application, or across every application you can access
one-time-purchases-revenues [options] Daily one-time-purchase revenue by country/plan, for an
application or across every application you can access
one-time-purchases-stats [options] Live one-time-purchase stats (by store/plan, refunds) for
an application, or across every application you can access
subscriptions-revenues [options] Daily subscription revenue by country/plan, for an
application or across every application you can access
subscriptions-stats [options] Live subscriptions revenue/churn/refund stats for an
application, or across every application you can access
trials-live [options] Trial/intro-offer cohorts and balances for an application,
or across every application you can access
conversion [options] Paywall conversion: paywall views and the purchases they
led to, from 2024-01-01 onwards
mau-reports [options] Monthly active users: app starts and distinct users who
started the app, per calendar month, over the rolling 12
months ending today (always monthly; takes no date_range,
periodicity or filter)
paid-subscription-movements [options] Paid subscription movements: for each period, how many
PAYING subscriptions (full price or paid offer) entered the
paid base (total_activations_count: direct purchases,
trial/intro/promo conversions, reactivations) and how many
left it (total_churns_count: voluntary churn,
involuntary/billing-failure churn, refunds), plus
net_movement_count = total_activations_count -
total_churns_count
paid-subscription-retention [options] Paid-subscription retention cohort matrix for a single
application
paywall-latency [options] Paywall-serving latency percentiles (p50/p95/p99) for an
application, or aggregated across every application you can
access
sdk-evolution [options] SDK-version adoption series over time for a single
application
sdk-versions [options] Current SDK-version breakdown for a single application
subscription-activations [options] Subscription activations: how many subscriptions started in
each period
subscription-evolution [options] Active subscription base: how many subscriptions were
active in each period, i.e
subscription-reactivations [options] Subscription reactivations: how many subscriptions came
back to life in each period after having lapsed,
re-subscribed after expiry/cancellation, recovered from a
billing retry, or unpaused (one count per subscription per
day; family-shared subscriptions excluded)
help [command] display help for command
Without a subcommand, an interactive terminal shows a menu of the dashboards, then runs the chosen one for the last 30 days.
The menu leaves out the dashboards that need another flag (funnel, flow-paths): run them by name.
With --output json, or without a terminal, it prints the list of all the dashboards as JSON, with their required flags, and sends no request.
Example:
purchasely dashboard --output json | jq -r '.[].command'
Usage: purchasely dashboard composition-live [options]
Subscription composition (by platform/plan/product/state) for an application, or across every
application you can access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Subscription composition (by platform/plan/product/state) for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/composition_live (with --app)
GET /management/v1/dashboard/composition_live (without --app)
Example:
purchasely dashboard composition-live --app app_xxx --date-range <date-range>
Usage: purchasely dashboard conversion [options]
Paywall conversion: paywall views and the purchases they led to, from 2024-01-01 onwards
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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.
[array of string, required] comma separated or repeated
--periodicity <value> 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. [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma
separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or
repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma
separated or repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma
separated or repeated
--placements <a,b> Filter by placement public_id. [array of string] comma
separated or repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE]
comma separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--primary-metric-group-by <value> Split the paywall views / unique viewers (primary metric) 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; country =
store country (ISO code). [enum:
platform|screen|placement|audience|ab_test_variant|country]
--secondary-metric-group-by <value> Split the purchases / conversions (secondary metric) 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; plan = subscription plan; ab_test_variant = A/B
test variant; country = store country (ISO code). [enum:
platform|screen|placement|audience|plan|ab_test_variant|country]
--fields <a,b> 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. [array of
string] comma separated or repeated
-h, --help display help for command
Paywall conversion: paywall views and the purchases they led to, from 2024-01-01 onwards. Returns one object with five keys: primary_metric_by_period, [{period, group_by, group_by_public_id, group_by_name, presentation_views_count, unique_viewers_count}] (views and distinct viewers per period, split by primary_metric_group_by); secondary_metric_by_period, [{period, group_by…, purchase_tapped_count, conversions_to_offer_count, conversions_to_regular_count, total_conversions_count, conversions_to_offer_ratio, conversions_to_regular_ratio, total_conversions_ratio, click_through_rate_purchase_tapped_ratio}] (counts split by secondary_metric_group_by; each ratio divides the group's count by the unique viewers of the whole period, not of the group); primary_metric_table and secondary_metric_table, the same counts totalled over the whole range per dimension value, with *_by_presentation_views_ratio and *_by_unique_viewers_ratio; kpi, [{presentation_views_count, unique_viewers_count, paywalls_viewed_per_user_average, conversions_to_offer_ratio, conversions_to_regular_ratio, total_conversions_ratio}] for the whole range. conversions_to_offer = free-trial/intro/promotional-offer starts; conversions_to_regular = those offers converting to paid plus direct full-price purchases; total_conversions = offer starts plus direct purchases. Units: counts, and ratios of a count to a viewer count (a viewer can start several subscriptions, so a ratio can exceed 1; not a percentage). date_range is mandatory here. Recommended periodicity: WEEK or MONTH. Single application only.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/conversion
Example:
purchasely dashboard conversion --app app_xxx --date-range <date-range>
Usage: purchasely dashboard events [options]
Event counts per day for an application, or across every application you can access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK, MONTH or YEAR (default MONTH). [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Event counts per day for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/events (with --app)
GET /management/v1/dashboard/events (without --app)
Example:
purchasely dashboard events --app app_xxx --date-range <date-range>
Usage: purchasely dashboard flow-paths [options]
Flow-paths funnel for a single application
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--flow-id <value> Restrict to a single Flow, by public_id. [string, required]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Flow-paths funnel for a single application.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/flow_paths
Example:
purchasely dashboard flow-paths --app app_xxx --date-range <date-range> --flow-id <flow-id>
Usage: purchasely dashboard funnel [options]
Conversion funnel (views -> purchases) for an application, or across every application you can
access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--dimension <value> Group funnel steps by this dimension: country = store country (ISO
code); placement = placement the paywall was shown at; plan =
subscription plan; platform = store platform (ios, android, …); screen
= paywall screen. One result group per dimension value. [enum:
country|placement|plan|platform|screen, required]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Conversion funnel (views -> purchases) for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/funnel (with --app)
GET /management/v1/dashboard/funnel (without --app)
Example:
purchasely dashboard funnel --app app_xxx --date-range <date-range> --dimension <dimension>
Usage: purchasely dashboard mau-reports [options]
Monthly active users: app starts and distinct users who started the app, per calendar month, over
the rolling 12 months ending today (always monthly; takes no date_range, periodicity or filter)
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--fields <a,b> 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. [array of string] comma separated or repeated
-h, --help display help for command
Monthly active users: app starts and distinct users who started the app, per calendar month, over the rolling 12 months ending today (always monthly; takes no date_range, periodicity or filter). For one application returns {data: {app_starts: [{period: "YYYY-MM", value}], unique_users: [{period, value}]}}; without application_id returns {data: {applications: [{mobile_application_id, mobile_application_name, client_name, chart_data: {app_starts, unique_users}}]}} with one entry per application you can access (never summed across apps). Unit: count of app starts / of unique users per month (unique_users is a per-month distinct count, do not sum it across months).
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/mau_reports (with --app)
GET /management/v1/dashboard_v2/mau_reports (without --app)
Example:
purchasely dashboard mau-reports --app app_xxx
Usage: purchasely dashboard mrr-evolution-live [options]
Live MRR evolution (by day and by month) for an application, or across every application you can
access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK, MONTH or YEAR (default MONTH). [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Live MRR evolution (by day and by month) for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/mrr_evolution_live (with --app)
GET /management/v1/dashboard/mrr_evolution_live (without --app)
Example:
purchasely dashboard mrr-evolution-live --app app_xxx --date-range <date-range>
Usage: purchasely dashboard one-time-purchases-revenues [options]
Daily one-time-purchase revenue by country/plan, for an application or across every application you
can access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK, MONTH or YEAR (default MONTH). [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Daily one-time-purchase revenue by country/plan, for an application or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/one_time_purchases_revenues (with --app)
GET /management/v1/dashboard/one_time_purchases_revenues (without --app)
Example:
purchasely dashboard one-time-purchases-revenues --app app_xxx --date-range <date-range>
Usage: purchasely dashboard one-time-purchases-stats [options]
Live one-time-purchase stats (by store/plan, refunds) for an application, or across every
application you can access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK, MONTH or YEAR (default MONTH). [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--product-types <a,b> Filter by product type (CONSUMABLE or NON_CONSUMABLE). [array of enum:
CONSUMABLE|NON_CONSUMABLE|NON_RENEWING_SUBSCRIPTION|RENEWING_SUBSCRIPTION]
comma separated or repeated
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Live one-time-purchase stats (by store/plan, refunds) for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/one_time_purchases_stats (with --app)
GET /management/v1/dashboard/one_time_purchases_stats (without --app)
Example:
purchasely dashboard one-time-purchases-stats --app app_xxx --date-range <date-range>
Usage: purchasely dashboard paid-subscription-movements [options]
Paid subscription movements: for each period, how many PAYING subscriptions (full price or paid
offer) entered the paid base (total_activations_count: direct purchases, trial/intro/promo
conversions, reactivations) and how many left it (total_churns_count: voluntary churn,
involuntary/billing-failure churn, refunds), plus net_movement_count = total_activations_count -
total_churns_count
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--periodicity <value> 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. [enum: DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--group-by <value> 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). [enum:
platform|screen|placement|audience|ab_test_variant|plan|country|offer_types|payment_types|period_types|campaign|event_types]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Paid subscription movements: for each period, how many PAYING subscriptions (full price or paid offer) entered the paid base (total_activations_count: direct purchases, trial/intro/promo conversions, reactivations) and how many left it (total_churns_count: voluntary churn, involuntary/billing-failure churn, refunds), plus net_movement_count = total_activations_count - total_churns_count. Always restricted to the paid segment (no `segment` parameter), this is the paid counterpart of subscription_activations. Returns an array of {period, group_by, group_by_public_id, group_by_name, total_activations_count, total_churns_count, net_movement_count} rows; unit: count of subscriptions (a flow, summable across periods). Recommended periodicity: MONTH. Single application only.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/paid_subscription_movements
Example:
purchasely dashboard paid-subscription-movements --app app_xxx --date-range <date-range>
Usage: purchasely dashboard paid-subscription-retention [options]
Paid-subscription retention cohort matrix for a single application
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--periodicity <value> 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. [enum: DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--segment <value> Restrict to a revenue segment. all = every subscription (default); paid
= paying, at full price or on a paid (discounted) offer; full_price =
paying the regular price; discounted = paying a reduced
introductory/promotional price; free = on a free trial or free offer.
[enum: all|paid|full_price|discounted|free]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Paid-subscription retention cohort matrix for a single application.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/paid_subscription_retention
Example:
purchasely dashboard paid-subscription-retention --app app_xxx --date-range <date-range>
Usage: purchasely dashboard paywall-latency [options]
Paywall-serving latency percentiles (p50/p95/p99) for an application, or aggregated across every
application you can access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--period <value> Lookback window in days, clamped to [7, 90] (default 30). [string]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--fields <a,b> 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. [array of string] comma separated or repeated
-h, --help display help for command
Paywall-serving latency percentiles (p50/p95/p99) for an application, or aggregated across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/paywall_latency (with --app)
GET /management/v1/dashboard_v2/paywall_latency (without --app)
Example:
purchasely dashboard paywall-latency --app app_xxx
Usage: purchasely dashboard sdk-evolution [options]
SDK-version adoption series over time for a single application
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--periodicity <value> 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. [enum: DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--group-by <value> Split the series by one dimension. Omit for a single, ungrouped series.
Values beyond the 10 largest groups are collapsed into one "Other" row.
sdk_version = SDK version; sdk_running_mode = SDK running mode. [enum:
sdk_version|sdk_running_mode]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
SDK-version adoption series over time for a single application.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/sdk_evolution
Example:
purchasely dashboard sdk-evolution --app app_xxx --date-range <date-range>
Usage: purchasely dashboard sdk-versions [options]
Current SDK-version breakdown for a single application
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Current SDK-version breakdown for a single application.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/sdk_versions
Example:
purchasely dashboard sdk-versions --app app_xxx --date-range <date-range>
Usage: purchasely dashboard subscription-activations [options]
Subscription activations: how many subscriptions started in each period
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--periodicity <value> 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. [enum: DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--group-by <value> Split the series 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 = activation event
(SUBSCRIPTION_STARTED, TRIAL_STARTED, TRIAL_CONVERTED,
INTRO_OFFER_STARTED/CONVERTED, PROMO_CODE_STARTED/CONVERTED,
PROMOTIONAL_OFFER_STARTED/CONVERTED). [enum:
platform|screen|placement|audience|ab_test_variant|plan|country|offer_types|payment_types|period_types|campaign|event_types]
--segment <value> Restrict to a revenue segment. all = every subscription (default); paid
= paying, at full price or on a paid (discounted) offer; full_price =
paying the regular price; discounted = paying a reduced
introductory/promotional price; free = on a free trial or free offer.
[enum: all|paid|full_price|discounted|free]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Subscription activations: how many subscriptions started in each period. Each subscription is counted once, on its first activation event inside the chosen segment (direct purchase, free-trial/intro/promo start, or trial/intro/promo conversion to paid, for segment=paid, only the first PAYING activation counts); reactivations, transfers and family-shared subscriptions are excluded. Returns an array of {period, group_by, group_by_public_id, group_by_name, total_activations_count} rows, one per period (and per group_by value when set); unit: count of subscriptions (a flow, summable across periods). Recommended periodicity: MONTH, WEEK for ranges under ~6 months. Single application only.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/subscription_activations
Example:
purchasely dashboard subscription-activations --app app_xxx --date-range <date-range>
Usage: purchasely dashboard subscription-evolution [options]
Active subscription base: how many subscriptions were active in each period, i.e
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--periodicity <value> 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. [enum: DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--group-by <value> Split the active base 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, …); subscription_status = subscription
status (AUTO_RENEWING, AUTO_RENEWING_CANCELED, IN_GRACE_PERIOD);
campaign = campaign. [enum:
platform|screen|placement|audience|ab_test_variant|plan|country|offer_types|payment_types|period_types|subscription_status|campaign]
--segment <value> Restrict to a revenue segment. all = every subscription (default); paid
= paying, at full price or on a paid (discounted) offer; full_price =
paying the regular price; discounted = paying a reduced
introductory/promotional price; free = on a free trial or free offer.
[enum: all|paid|full_price|discounted|free]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Active subscription base: how many subscriptions were active in each period, i.e. activated in or before that period and not deactivated before it (auto-renewing, cancelled-but-not-expired and grace-period subscriptions all count as active; family-shared subscriptions and transfers are excluded). Returns an array of {period, group_by, group_by_public_id, group_by_name, count} rows, one per period (and per group_by value when set); unit: count of active subscriptions, a stock, not a flow: never sum it across periods, read the last period for the current base. Recommended periodicity: MONTH (WEEK for a close look at the last few months). Single application only.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/subscription_evolution
Example:
purchasely dashboard subscription-evolution --app app_xxx --date-range <date-range>
Usage: purchasely dashboard subscription-reactivations [options]
Subscription reactivations: how many subscriptions came back to life in each period after having
lapsed, re-subscribed after expiry/cancellation, recovered from a billing retry, or unpaused (one
count per subscription per day; family-shared subscriptions excluded)
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--date-range <a,b> 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. [array of string, required]
comma separated or repeated
--periodicity <value> 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. [enum: DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes. [array of string] comma separated or
repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma separated
or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma separated
or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--group-by <value> Split the series 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 = reactivation
cause (SUBSCRIPTION_REACTIVATED,
SUBSCRIPTION_RECOVERED_FROM_BILLING_RETRY, SUBSCRIPTION_UNPAUSED), or
the offer conversion it revealed (TRIAL_CONVERTED,
INTRO_OFFER_CONVERTED, PROMO_CODE_CONVERTED,
PROMOTIONAL_OFFER_CONVERTED). [enum:
platform|screen|placement|audience|ab_test_variant|plan|country|offer_types|payment_types|period_types|campaign|event_types]
--segment <value> Restrict to a revenue segment. all = every subscription (default); paid
= paying, at full price or on a paid (discounted) offer; full_price =
paying the regular price; discounted = paying a reduced
introductory/promotional price; free = on a free trial or free offer.
[enum: all|paid|full_price|discounted|free]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Subscription reactivations: how many subscriptions came back to life in each period after having lapsed, re-subscribed after expiry/cancellation, recovered from a billing retry, or unpaused (one count per subscription per day; family-shared subscriptions excluded). Returns an array of {period, group_by, group_by_public_id, group_by_name, total_reactivations_count} rows, one per period (and per group_by value when set); unit: count of subscriptions (a flow, summable across periods). Recommended periodicity: MONTH. Single application only.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard_v2/subscription_reactivations
Example:
purchasely dashboard subscription-reactivations --app app_xxx --date-range <date-range>
Usage: purchasely dashboard subscriptions-revenues [options]
Daily subscription revenue by country/plan, for an application or across every application you can
access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK, MONTH or YEAR (default MONTH). [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Daily subscription revenue by country/plan, for an application or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/subscriptions_revenues (with --app)
GET /management/v1/dashboard/subscriptions_revenues (without --app)
Example:
purchasely dashboard subscriptions-revenues --app app_xxx --date-range <date-range>
Usage: purchasely dashboard subscriptions-stats [options]
Live subscriptions revenue/churn/refund stats for an application, or across every application you
can access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK or MONTH (default MONTH). YEAR is not
supported by this tool. [enum: DAY|WEEK|MONTH]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Live subscriptions revenue/churn/refund stats for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/subscriptions_stats (with --app)
GET /management/v1/dashboard/subscriptions_stats (without --app)
Example:
purchasely dashboard subscriptions-stats --app app_xxx --date-range <date-range>
Usage: purchasely dashboard summary [options]
Analytics dashboard of an app: MRR, subscriptions, viewers, conversions with trend charts
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (required)
--days <n> number of days up to today, from 2 to 730 (default: "30")
-h, --help display help for command
Shows the MRR, the active subscriptions, the paywall unique viewers and the conversions of one app.
The default output is JSON. --output table draws one line per metric with a sparkline.
MRR is today's value, in the dashboard currency of the app. Active subscriptions is the current base.
Viewers and conversions are the total of the range.
It sends 3 requests (4 when --days is above 60).
Example:
purchasely dashboard summary --app app_xxx --output table
purchasely dashboard summary --app app_xxx --days 90 --output table
Usage: purchasely dashboard trials-live [options]
Trial/intro-offer cohorts and balances for an application, or across every application you can
access
Options:
--output <format> json (default) or table
--env <env> prod or staging. Mandatory for writes
--dry-run print the request without sending it
--yes accept the confirmation prompt of a risky change
--reason <text> why you run this command (sent in the User-Agent)
--rate <n> requests per second, lower than the default
--i-asked-backend allow a rate above the hard cap
--out <file> write the JSON output to a file, or - for stdout
--app <app_id> application public id (optional: omit for all apps)
--date-range <a,b> Two-element [start_date, end_date] (ISO8601) window. [array of string,
required] comma separated or repeated
--periodicity <value> Bucket granularity: DAY, WEEK, MONTH or YEAR (default MONTH). [enum:
DAY|WEEK|MONTH|YEAR]
--countries <a,b> Filter by store country ISO codes (or "Unknown"). [array of string]
comma separated or repeated
--platform-names <a,b> Filter by platform name. [array of enum:
AMAZON|ANDROID|HUAWEI|IOS|STRIPE|SWG] comma separated or repeated
--period-types <a,b> Filter by plan billing period, as an ISO 8601 duration (e.g. P1W, P1M,
P1Y). [array of string] comma separated or repeated
--plans <a,b> Filter by subscription plan public_id. [array of string] comma
separated or repeated
--family-sharing <a,b> Filter by family-sharing flag ("true"/"false" strings). [array of
string] comma separated or repeated
--offer-types <a,b> Filter by offer type. [array of enum:
NONE|FREE_TRIAL|INTRO_OFFER|PROMOTIONAL_OFFER|PROMO_CODE] comma
separated or repeated
--promotional-offers <a,b> Filter by promotional offer public_id. [array of string] comma
separated or repeated
--audiences <a,b> Filter by audience public_id. [array of string] comma separated or
repeated
--campaigns <a,b> Filter by campaign public_id. [array of string] comma separated or
repeated
--placements <a,b> Filter by placement public_id. [array of string] comma separated or
repeated
--screens <a,b> Filter by screen (paywall) public_id. [array of string] comma
separated or repeated
--ab-test-variants <a,b> Filter by A/B test variant public_id. [array of string] comma
separated or repeated
--unique-users <value> Restrict to unique users ("true"/"false"). [string]
--survey <value> Filter by survey identifier. [string]
--fields <a,b> 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. [array of string] comma separated or
repeated
-h, --help display help for command
Trial/intro-offer cohorts and balances for an application, or across every application you can access.
Required scope: analytics.dashboards:view
Request:
GET /management/v1/applications/{application_id}/dashboard/trials_live (with --app)
GET /management/v1/dashboard/trials_live (without --app)
Example:
purchasely dashboard trials-live --app app_xxx --date-range <date-range>