Skip to content

Adapty ​

Adapty is a subscription monetization platform for mobile and web apps. ingestr supports its batch Analytics Export API and the paginated paywall list from the Server-side API.

The connector does not use webhooks or realtime event tracking. Adapty does not expose a batch endpoint for listing raw purchase transactions, so purchase activity is available through its revenue, subscription, refund, cohort, conversion, LTV, funnel, and retention analytics.

URI format ​

plaintext
adapty://?api_key=<secret-api-key>&lookback_days=30&timezone=UTC

Parameters:

  • api_key: Required. The app-specific secret API key from App Settings → General → API keys.
  • lookback_days: Optional. Number of days loaded when no analytics interval is supplied. Defaults to 30; use 0 to load only today.
  • timezone: Optional. IANA timezone used by Adapty to group analytics dates. Defaults to UTC.

Use the secret API key, not a public SDK key. The connector sends it as Authorization: Api-Key <secret-api-key>.

Tables ​

TableRequired parametersIncremental behaviorDescription
analyticschart_iddelete+insert on dateRevenue, MRR, ARR, ARPU/ARPPU, subscriptions, trials, refunds, billing issues, installs, and related chart metrics.
cohorts–delete+insert on dateCohort revenue, subscriber, subscription, ARPU, ARPPU, and ARPAS analytics.
conversionfrom_period, to_perioddelete+insert on dateConversion between two subscription states. Use from_period=null when there is no starting state.
funnel–delete+insert on dateSubscription funnel and churn analytics.
ltv–delete+insert on dateActual lifetime value for revenue, proceeds, and net revenue.
retention–delete+insert on dateSubscriber retention analytics.
placementsplacement_typereplaceExported paywall or onboarding placement configuration.
paywalls–merge on paywall_id, incremental key updated_atAll paginated paywalls, including their state, deletion marker, and nested products.

The six analytics tables are requested one calendar day at a time and receive an ingestr-managed date column. When no interval is supplied, they load the last 30 days by default. Explicit incremental intervals are loaded exactly as supplied so their delete+insert boundaries remain aligned.

The paywall API does not accept an updated_at filter. ingestr scans its paginated list and applies the incremental interval client-side. Adapty returns archived and deleted paywalls with state and is_deleted, allowing merge loads to retain lifecycle changes.

Provider response objects and arrays, such as cohort values and paywall products, remain nested rather than being flattened.

Analytics table parameters ​

Parameters are URL-style query parameters on the source table. All six analytics tables accept these optional filters:

  • compare_date: Exactly two YYYY-MM-DD dates.
  • store, country, store_product_id, duration
  • attribution_source, attribution_status, attribution_channel, attribution_campaign, attribution_adgroup, attribution_adset, attribution_creative
  • offer_category, offer_type, offer_id

List values are comma-separated. Each table also accepts its endpoint-specific parameters:

TableOptional parameters
analyticsdate_type, segmentation
cohortsperiod_type, value_type, value_field, accounting_type, renewal_days, prediction_months
conversiondate_type, segmentation
funnelshow_value_as, segmentation
ltvperiod_type, segmentation
retentionsegmentation, use_trial

ingestr fixes period_unit to day and format to json so each batch has a stable daily incremental boundary.

Valid chart_id values are:

  • revenue
  • mrr
  • arr
  • arppu
  • subscriptions_active
  • subscriptions_new
  • subscriptions_renewal_cancelled
  • subscriptions_expired
  • trials_active
  • trials_new
  • trials_renewal_cancelled
  • trials_expired
  • grace_period
  • billing_issue
  • refund_events
  • refund_money
  • non_subscriptions
  • arpu
  • installs

Examples ​

Load daily purchase revenue into DuckDB:

sh
ingestr ingest \
  --source-uri 'adapty://?api_key=secret_live_...' \
  --source-table 'analytics?chart_id=revenue' \
  --dest-uri 'duckdb:///adapty.duckdb' \
  --dest-table 'adapty.revenue'

Load refund totals for selected stores and countries:

sh
ingestr ingest \
  --source-uri 'adapty://?api_key=secret_live_...&lookback_days=60' \
  --source-table 'analytics?chart_id=refund_money&store=app_store,play_store&country=us,gb' \
  --dest-uri 'duckdb:///adapty.duckdb' \
  --dest-table 'adapty.refunds'

Load cohort revenue by days:

sh
ingestr ingest \
  --source-uri 'adapty://?api_key=secret_live_...' \
  --source-table 'cohorts?period_type=days&value_field=revenue&accounting_type=net_revenue&renewal_days=0,1,3,7,14,30' \
  --dest-uri 'duckdb:///adapty.duckdb' \
  --dest-table 'adapty.cohorts'

Load paywall placement configuration:

sh
ingestr ingest \
  --source-uri 'adapty://?api_key=secret_live_...' \
  --source-table 'placements?placement_type=paywall' \
  --dest-uri 'duckdb:///adapty.duckdb' \
  --dest-table 'adapty.placements'

Load all paywall definitions:

sh
ingestr ingest \
  --source-uri 'adapty://?api_key=secret_live_...' \
  --source-table 'paywalls' \
  --dest-uri 'duckdb:///adapty.duckdb' \
  --dest-table 'adapty.paywalls'

See Adapty's Analytics Export API reference and Server-side API reference for the upstream response fields and metric definitions.