You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Time frame** — the date range. Set it in the calendar above the table.
8
+
-**Cohort length** — how big each row is: day, week, month, quarter, or year. With a monthly length, each row covers one month of installs.
9
+
10
+
The two work separately. For example: a 6-month time frame plus a monthly cohort length gives you a table with 6 rows. A 1-year time frame plus a weekly cohort length gives you 52 rows.
Adapty displays all monetary charts in **US dollars**, regardless of the original transaction currency. This includes Revenue, MRR, ARR, ARPU, ARPPU, LTV, predicted revenue, refund money, and the revenue figures inside cohorts and A/B test reports. There's no setting to display them in another currency.
6
+
7
+
Adapty converts each transaction to USD using a rate from [currencylayer.com](https://currencylayer.com/) refreshed every 8 hours, **fixed at the time of the transaction**. Historical USD values don't re-rate when FX moves.
8
+
9
+
Local-currency values are available per-transaction in:
10
+
11
+
- The `price` and `currency_code` fields in webhooks
12
+
- The `price` and `currency_code` columns in S3, GCS, and BigQuery exports
13
+
- The profile page (per-transaction view)
14
+
15
+
For finance reporting in a local currency, pull the per-transaction local-currency values from an export and aggregate them yourself.
Adapty calculates renewal revenue at the product's current price, even for users who were on a previous price when they first subscribed. After you change a price in App Store Connect or Google Play, the dashboard's Revenue, MRR, and ARR figures for existing subscribers may diverge from the actual revenue collected — Adapty applies the new price, even if the store kept those users on the old one.
6
+
7
+
To verify, compare the per-transaction `price` field in the S3, GCS, or BigQuery export against the dashboard for the same transactions. The export field reflects what the store reported (the price the customer actually paid); the dashboard reflects the current product price.
When you change your reduced commission status in Adapty with a retroactive effective date, the new commission rate appears across Adapty's data on different schedules:
8
+
9
+
| Where the rate appears | What happens after you change the rate |
10
+
| --- | --- |
11
+
| Analytics dashboard (Revenue, Proceeds, MRR, ARR) | Adapty applies the new rate within 24 hours, when the daily recalculation runs. |
12
+
| S3, GCS, and BigQuery exports | Adapty applies the new rate at the next scheduled export. |
13
+
| Webhook events already delivered | Adapty cannot modify webhook events after delivery. They keep the old rate. |
14
+
15
+
If your data warehouse stores revenue from webhook events, those records keep the old commission rate. To reconcile, retrieve the affected period from the analytics dashboard, or generate a fresh export to S3, GCS, or BigQuery.
Copy file name to clipboardExpand all lines: src/content/docs/guides/analytics/discrepancies-and-troubleshooting.mdx
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ Adapty users may encounter **discrepancies** when comparing similar sets of data
15
15
16
16
## Troubleshooting algorithm
17
17
18
-
Most discrepancies between Adapty and other platforms are expected and normal. They occur because **different sources process the same data differently**.
18
+
Most discrepancies between Adapty and other platforms are expected and normal. They occur because **different sources process the same data differently**.
19
19
20
20
Other times, they indicate an **issue with your Adapty configuration**.
21
21
@@ -31,7 +31,7 @@ After you identify where the data diverges, you can look into the following comm
31
31
32
32
## Issues with server notifications and RTDN
33
33
34
-
Adapty does not receive the necessary event data if you didn't correctly configure the store connections. This particularly affects events that occur without direct user involvement — subscription renewals, billing issues, etc.
34
+
Adapty does not receive the necessary event data if you didn't correctly configure the store connections. This particularly affects events that occur without direct user involvement — subscription renewals, billing issues, etc.
35
35
36
36
Complete the server-to-server configuration as soon as you can ([App Store](enable-app-store-server-notifications) | [Play Store](enable-real-time-developer-notifications-rtdn)) and [wait](#data-delays) for the stores to establish the connection.
37
37
@@ -43,13 +43,13 @@ You can [manually upload](importing-historical-data-to-adapty) the missing App S
43
43
44
44
If some of your users run an older version of your app without the Adapty SDK, Adapty does not receive their data. For this reason the numbers of Adapty and other sources will diverge.
45
45
46
-
### Integration issues
46
+
### Integration issues
47
47
48
48
Some Adapty integrations (for example, Adjust or AppsFlyer) require additional application code to work. If you configure the Adapty dashboard, but do not update your application, the necessary data won't show up in Adapty.
49
49
50
50
### Missing historical data
51
51
52
-
Adapty doesn't have access to your application's historical data, unless you [manually import](importing-historical-data-to-adapty) it. If a chart's [time range](controls-filters-grouping-compare-proceeds#time-ranges) starts before you integrated Adapty, and you didn't import historical data, its values will differ from other sources.
52
+
Adapty doesn't have access to your application's historical data, unless you [manually import](importing-historical-data-to-adapty) it. If a chart's [time range](controls-filters-grouping-compare-proceeds#set-the-date-range) starts before you integrated Adapty, and you didn't import historical data, its values will differ from other sources.
53
53
54
54
## Data delays
55
55
@@ -81,7 +81,7 @@ Each "month" in the calendar consists of **4 or 5 weeks**, and **may include day
81
81
82
82
For example, the "January 2026" sales period begins on December 28th, 2025 — 4 days before the start of the calendar month. The estimated payment date for this period is March 5th.
83
83
84
-
Do not compare data from Apple payout reports to calendar months. Instead, select a [custom date range](controls-filters-grouping-compare-proceeds#time-ranges) that corresponds to the necessary sales period.
84
+
Do not compare data from Apple payout reports to calendar months. Instead, select a [custom date range](controls-filters-grouping-compare-proceeds#set-the-date-range) that corresponds to the necessary sales period.
85
85
86
86
#### Transaction dates
87
87
@@ -91,7 +91,7 @@ Some services (for example, AppsFlyer) may apply [cohort](analytics-cohorts) rul
91
91
92
92
### Fees and taxes
93
93
94
-
Depending on the [setting](controls-filters-grouping-compare-proceeds#store-commission-and-taxes), Adapty charts can display your **gross revenue**, **revenue after store commission**, or **revenue after store commission and tax**.
94
+
Depending on the [setting](controls-filters-grouping-compare-proceeds#display-gross-or-net-revenue), Adapty charts can display your **gross revenue**, **revenue after store commission**, or **revenue after store commission and tax**.
95
95
96
96
<ZoomImageid="revenue-types.webp"width="500px" />
97
97
@@ -115,9 +115,9 @@ Adapty can only register an installation when a user launches the application, r
115
115
116
116
## Country and store
117
117
118
-
To ensure accurate reporting, Adapty [may infer](controls-filters-grouping-compare-proceeds#filtering-and-grouping) the user's country from their IP. Stores always attribute downloads and purchases to a specific app store.
118
+
To ensure accurate reporting, Adapty [may infer](controls-filters-grouping-compare-proceeds#filter-and-group-data) the user's country from their IP. Stores always attribute downloads and purchases to a specific app store.
119
119
120
-
If you need to clearly distinguish between the two, you can [create a new user segment](segments) with the `Country by store account` attribute, and [filter analytics by segment](controls-filters-grouping-compare-proceeds#filtering-and-grouping).
120
+
If you need to clearly distinguish between the two, you can [create a new user segment](segments) with the `Country by store account` attribute, and [filter analytics by segment](controls-filters-grouping-compare-proceeds#filter-and-group-data).
121
121
122
122
## Product pricing
123
123
@@ -144,10 +144,10 @@ Different platforms may have different names for the same concept. Metrics relat
144
144
145
145
Other metrics may differ in definition, as well:
146
146
147
-
-**Subscriptions**:
147
+
-**Subscriptions**:
148
148
- Adapty does not count new trials as subscriptions. A [new subscription](reactivated-subscriptions) always starts with a financial transaction.
149
149
- Other platforms, such as Google Play Console, may count **each trial as a new subscription**, even before the first payment was made.
150
-
-**Retention**:
151
-
- Adapty measures retention based on the number of subscription renewals.
150
+
-**Retention**:
151
+
- Adapty measures retention based on the number of subscription renewals.
152
152
- App Store Connect considers a user retained if they open the application on the specified day. A user without a subscription will count, but the subscribed user who didn't open the app on that day won't.
153
153
- Google Play Console's "Retained Installers" metric measures retention based on the number of days the application remains installed on the user's device. Users that don't open the application count towards this metric.
Copy file name to clipboardExpand all lines: src/content/docs/guides/analytics/how-adapty-analytics-works.mdx
+31-13Lines changed: 31 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,22 +18,22 @@ This article describes how Adapty Analytics works: what data it displays, where
18
18
19
19
Adapty offers [close to real-time](#data-processing) analytics.
20
20
21
-
-**Advanced metrics**: App stores display basic metrics such as downloads, revenue, and retention rates.
22
-
21
+
-**Advanced metrics**: App stores display basic metrics such as downloads, revenue, and retention rates.
22
+
23
23
Adapty also calculates advanced metrics, such as recurring revenue or average revenue per user. Dedicated sections analyze subscription issues: user churn, billing failures, etc. See the [Metric comparison table](metric-comparison-table) article for a full list.
24
24
25
25
-**Predictions**: Adapty uses advanced machine learning algorithms to [predict future LTV and revenue](predicted-ltv-and-revenue).
26
-
26
+
27
27
28
28
## Data and its sources
29
29
30
30
Adapty Analytics processes the following data into [charts and graphs](analytics):
31
31
32
-
-[Subscription events](events)such as <InlineTooltiptooltip="purchases and cancellations"> Open the [event feed](event-feed) to see your users' subscription events in real time.</InlineTooltip>.
32
+
-[Subscription events](events)generated throughout the user lifecycle — trial starts, purchases, renewals, cancellations, billing failures, refunds. Adapty aggregates these into the [analytics charts](analytics) and forwards them in real time to [webhooks](webhook), the [event feed](event-feed), and [event-based integrations](analytics-integration).
33
33
-[Transaction data](revenue) — revenue, refunds, the buyer's country, etc.
34
34
-**Application data** such as the number of installations or [paywall interactions](paywalls).
35
35
-[Attribution data for transactions](attribution-integration): traffic sources and ad campaigns.
36
-
36
+
37
37
This data comes from the following sources:
38
38
39
39
- The <InlineTooltiptooltip="Adapty SDK">[iOS](ios-sdk-overview), [Android](android-sdk-overview), [React Native](react-native-sdk-overview), [Flutter](flutter-sdk-overview), [Unity](unity-sdk-overview), [Kotlin Multiplatform](kmp-sdk-overview), [Capacitor](capacitor-sdk-overview) </InlineTooltip> reports user behavior data from inside the app. If Adapty handles your purchase flow management, the SDK shares first-hand information about the purchase events. If you use the [observer mode](observer-vs-full-mode), the SDK receives [event reports](report-transactions-observer-mode) that you set up manually.
@@ -51,16 +51,19 @@ Likewise, you can [export](analytics-integration) analytics data to third-party
51
51
52
52
## Data processing
53
53
54
-
Adapty offers close to real-time analytics, which allows users to quickly react to changes in key metrics.
54
+
Adapty offers close to real-time analytics, which allows users to quickly react to changes in key metrics.
55
55
56
-
- For store events, the processing delay is 15 to 30 minutes long.
57
-
- Data from third-party sources updates in near real time. The exact delay depends on the platform and infrastructure conditions.
56
+
-**Analytics charts**: data appears with a **15–30 minute delay** after a transaction occurs. Adapty needs this time to validate the transaction, apply commissions and taxes, and aggregate the data.
57
+
-**[Event feed](event-feed)**: updates in real time, as soon as the stores deliver an event.
58
+
-**[Webhooks](webhook) and event-based integrations** (AppsFlyer, Branch, etc.): Adapty forwards events as they occur — the 15–30 minute analytics delay does not apply. The receiving service may introduce its own processing time.
58
59
59
-
## Tax and commission logic
60
+
## Commissions and taxes
60
61
61
-
When you view revenue-related charts, Adapty gives you the option to choose between **Gross revenue**, **Revenue after commissions**, and **Revenue after commissions and taxes**.
62
+
When you view revenue-related charts, you can choose between **Gross revenue**, **Revenue after commissions**, and **Revenue after commissions and taxes**.
62
63
63
-
If your organization is enrolled in a reduced commission program, change your Adapty settings to modify commission rate calculations:
64
+
### Commissions
65
+
66
+
Stores deduct a commission from each transaction. If your organization is enrolled in a reduced commission program, change your Adapty settings to modify commission rate calculations:
64
67
65
68
*[App Store Small Business Program](app-store-small-business-program)
66
69
* Google's [reduced service fee program](google-reduced-service-fee)
@@ -70,14 +73,29 @@ The stores automatically report whether other factors reduce your transaction co
70
73
*[Renewals for 1+ year long App Store subscriptions](https://developer.apple.com/app-store/subscriptions/) — 15% commission
71
74
* Country-specific rates (for example, [21% for App Store apps distributed in Japan](https://developer.apple.com/support/app-distribution-in-japan/#business-terms))
72
75
73
-
Adapty retrieves the applicable **tax rate** directly from the stores.
76
+
### Taxes
77
+
78
+
**Adapty does not calculate taxes.** Apple and Google determine the tax rate that applies to each transaction and report it back to Adapty, which displays the value as-is.
79
+
80
+
The tax rate shown for a given transaction depends on:
81
+
82
+
- The **buyer's billing country** and the local tax rate in effect there.
83
+
- The **store's tax-handling rules**. In some jurisdictions, the store collects and remits tax on the developer's behalf; in others, the developer is responsible.
84
+
- For App Store transactions, the **tax category** assigned to the app or in-app purchase (books, news, videos, etc.) — categories can be taxed at different rates depending on local rules.
85
+
86
+
Tax rates can vary significantly between apps — and even between transactions within the same app — because of the mix of buyer countries, the stores' handling rules, and (for the App Store) the assigned tax category.
87
+
88
+
For the authoritative rules, refer to the stores' official documentation:
-[Google Play: Tax rates and VAT](https://support.google.com/googleplay/android-developer/answer/138000)
74
92
75
93
## Troubleshooting
76
94
77
95
:::link
78
96
Main article: [Discrepancies and Troubleshooting](discrepancies-and-troubleshooting)
79
97
:::
80
98
81
-
* A misconfigured or missing data source can negatively affect the entire analytics system. If you encounter data issues, make sure your integrations with stores and third-party platforms are configured and active.
99
+
* A misconfigured or missing data source can negatively affect the entire analytics system. If you encounter data issues, make sure your integrations with stores and third-party platforms are configured and active.
82
100
83
101
* If you compare Adapty charts to other analytics platforms, you may notice discrepancies. This is expected behavior that may result from differences in data processing. Read the [discrepancies guide](discrepancies-and-troubleshooting) article to learn about common causes of data discrepancies.
0 commit comments