Periods and Time Zones
Every view takes arange:
Days and hours follow the app’s time zone, an IANA name such as
Europe/Istanbul. It is UTC until you change it in the app’s Analytics settings (or with PATCH /v1/analytics/apps/:appId/settings). Changing it moves the day boundaries of every view, including past days.
Previous-period comparison
Each KPI shows its value for the previous period and the relative change.- The previous period has the same length and ends where the current one starts.
- It is compared over the same elapsed time. “Today” until 14:00 is compared with yesterday until 14:00, not with all of yesterday. For
7d, the 7 days before are compared up to the same time of day. changeis(value - previous) / |previous|, so0.12means +12%. It is empty when the previous value is 0 or missing.
KPIs
Revenue is counted when it happens, while installs and install → paid are counted for installs first seen in the period. A purchase today from an install made last month adds to today’s revenue but not to today’s install → paid conversion.
Filters
Click a row in any breakdown to filter the whole dashboard by it. With the API, addfilter=<dimension>:<value>.
- Filters are repeatable, up to 4. Each filter narrows the results further.
~nonematches installs with no value, for examplefilter=campaign:~none.- Filters apply to installs. Every metric is then counted only for installs that match.
Breakdowns
Each breakdown is a ranked table of up to 50 rows, with a count and the revenue linked to each row.- Revenue on a row uses the dimension of the install that paid, so a purchase this week from an install made last month shows on that install’s source and campaign.
- Sales with no linked install show on an empty row (“Unattributed” for source).
country,deviceandversionare values stored on the install. The country comes from the network location of the device’s request when available, otherwise from the device locale.
Screen revenue counts a sale more than once
A purchase counts toward every screen the buyer saw before it. If a buyer saw Onboarding, Paywall and Settings before paying $10, each of those rows gets $10. Screen revenue therefore adds up to more than total revenue. Use it to compare screens, not to sum revenue.Funnel
An ordered funnel for installs first seen in the period.- A step is an event name (
first_open,trial_started,onboarding_completed) or a screen view written asscreen:<name>(screen:Paywall). - A saved funnel has 2 to 6 steps. A funnel passed with
stepscan have up to 6. - Each step must happen at or after the time the install first reached the previous step. Steps can happen after the period ends.
- Each step shows the number of installs that reached it, the share of the first step, and the share of the previous step.
funnel), or pass steps=a,screen:B,c to the API to try a funnel without saving it. GET …/event-names lists the event names and screens seen in the last 30 days, to pick steps from.
trial_started and trial_converted come from RevenueCat, so they only count for installs linked with identify.
Retention
Cohorts of installs by the day or week they were first seen, and the share of each cohort that was active in each later day or week.- Period 0 is the cohort’s own day or week. Period 1 is the next day or week, and so on.
- A user is active in a period when the install sent any app event in it. Sale events do not count.
- Periods that have not started yet are empty.
- The last period is partial: it is still running, so its values will grow until it ends.
LTV
Revenue within 1, 7 and 30 days of install (D1, D7, D30) for installs first seen in the period, grouped byall, source, campaign, keyword, country, device or version.
Maturity rule: a window only counts installs that are at least that many days old. An install from 3 days ago counts for D1 but not yet for D7 or D30. When no install is old enough, the window’s LTV is empty instead of a misleading low number.

