At a glance: Advanced aggregated reports in Data Locker contain aggregated data with optimal data freshness, accuracy, granularity, and unlimited volume.
Advanced aggregated reports in Data Locker
Advanced aggregated reports in Data Locker:
- Provide an efficient and privacy-preserving way to build your internal BI systems based on aggregated data: Attribution, events, and revenue data, with all possible dimensions and metrics.
- You can load the data into your BI systems and use them as part of your campaign performance and optimization processes.
- Have the best freshness to accuracy: Data arrives multiple times per day and gets updated with each subsequent version of a report with all available data for that day.
- Helps you augment raw data that may be limited and restricted due to media source data-sharing policies or your privacy-preserving policies. The restrictions impact attribution-related fields like campaign and adset.
Setup
To get advanced aggregated reports, complete one of the following procedures.
Do you currently get data via Data Locker? | Procedure |
---|---|
Yes |
To add the reports to Data Locker:
|
No |
To set up Data Locker:
|
Reports available
Advanced aggregated (cohort versioned) reports
Report facts
Overview |
The cohort versioned report contains all your aggregated data, cohorted, with all campaign dimension granularity. The report is updated every few hours to maximize data freshness and accuracy. |
Reports available |
The following reports are available for download. The report types are described in more detail in the Cohort dashboard.
|
Reporting period | Users who converted during the previous 1,095 days. In other words, each day, the reports include events of users who converted during the previous 1,095 days. |
Report structure | The schema of the report (the dimensions and metrics included) is fixed and can't be edited. |
Data freshness |
|
Timezone | UTC |
Directory and filename structure | Learn more |
Impact of partner retention policies |
Consider that some partners implement a data retention policy. In this case, events occurring after the end of the retention period are considered organic in the Cohort reports. Example: SRN "A" has a data retention policy of 180 days. User events until day 180 are attributed to SRN "A". Events that occur after 180 days are considered organic. |
Report structure
The report is comprised of dimensions and metrics.
The format of the fields is as follows:
- Dimensions: String. The maximum length of the string is dynamic and in most instances depends on how you populate the elements of the advertising hierarchy
-
Metrics: Number. Note: The selected_currency field format is a string.
The metrics available are revenue, unique users performing an event and the number of event occurrences. To calculate cost-related metrics like ROI, and ROAS you need both revenue and cost metrics. Revenue metrics are in Cohort, and cost metrics are provided by ROI360 Cost ETL.
Dimensions
Field name |
Description |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
app_id |
|||||||||||
media_source |
|||||||||||
conversion_type |
Possible values: install, install_unified (representing installs in the unified report), re-engagement, re-attribution |
||||||||||
attributed_touch_type |
Possible values: click, impressions, pre-install, unknown, tv, null |
||||||||||
days_post_attribution |
|
||||||||||
event_date |
|
||||||||||
conversion_date |
|
||||||||||
event_name |
Identifies the event. Some event names have a specific meaning while others relate to in-app events set by the advertiser in the app.
|
||||||||||
campaign |
Campaign hierarchy Consider: Campaign name changes not supported. Consequently, multiple names can be associated with a given campaign ID. |
||||||||||
campaign_id |
Campaign hierarchy | ||||||||||
adset |
Campaign hierarchy | ||||||||||
adset_id |
Campaign hierarchy | ||||||||||
ad |
Campaign hierarchy | ||||||||||
ad_id |
Campaign hierarchy | ||||||||||
channel |
Campaign hierarchy. [Updated October 27, 2021] At present, Meta ads doesn't populate channel in data provided via the Google Install Referrer mechanism. |
||||||||||
site_id |
Campaign hierarchy | ||||||||||
is_primary_attribution |
Use to identify and deduplicate retargeting data. | ||||||||||
geo |
The ISO country code derived from the user IP address. | ||||||||||
agency |
|
||||||||||
install_app_store |
Android apps only: The Android store from where the app was downloaded. Populated by advertisers implementing multi-store Android attribution. If blank, it means Google Play Store. |
||||||||||
keywords |
Word(s) used in the user's online search. As reported by the ad network. |
||||||||||
keyword_id |
Keyword ID returned by the ad network. |
Metrics
Field name |
Description | Format |
---|---|---|
unique_users |
Number of on-day unique users performing the event. |
Number |
revenue_usd |
|
Number |
event_count |
Number of event occurrences. |
Number |
selected_currency |
3-letter currency code (USD, EUR) set by you in the app settings. Format ISO-4217. This is the same currency used to display revenue in Cohort in the user interface. |
String |
revenue_selected_currency |
|
Number |
first_inapp |
|
Number |
Directory and filename structure
The path to the report consists of the following folder hierarchy:
With the following format: <bucket-name>/t=cohort_unified_versioned/dt=<yyyy-mm-dd>/version=<unix timestamp>/<parquet file number>
Report folder hierarchy
An example of the cohort versioned report folder hierarchy in the advertiser bucket:
bucket
|
└── t=cohort_unified_versioned
|
├── dt=2024-05-05
| |
| └── version=1714890235
| | |
| | ├── part-00000-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz
| | |
| | ├── part-00001-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz
| | │
| | └── part-00002-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz
| |
| |
| └── version=1714890286
| |
| ├── part-00000-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz
| |
| ├── part-00001-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz
| │
| └── part-00002-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz
| |
. .
. .
Legend:
- dt: Date when the events included in the report occurred.
- t: report type.
- version: Unix timestamp when the version was created.
Report versions and data freshness
- Intraday. Reports are sent every few hours.
- Reports are for all the data currently available for the day. Meaning, on April 18, every report version contains all available data up to that point for April 18.
- Only ingest the latest available report version.
Version | Report includes data that AppsFlyer received by (Time in UTC) | Use case | Time report is available (Time in UTC) |
---|---|---|---|
1 | Day 0 at 4 AM | Partial data for Day 0 | Day 0 at 8 AM |
2 | Day 0 at 8 AM | Partial data for Day 0 | Day 0 at 1 PM |
3 | Day 0 at 12 PM | Partial data for Day 0 | Day 0 at 6 PM |
4 | Day 0 at 4 PM | Partial data for Day 0 | Day 0 at 9 PM |
5 | Day 0 at 8 PM | Partial data for Day 0 | Day 0 at 11:59 PM |
6 | Day 0 at 11:59 PM | Complete conversion and in-app event data for Day 0 (excluding S2S events that AppsFlyer receives between Day 0 at 11:59 PM and Day 1 at 2 AM) | Day 1 at 4 AM |
7 | Day 1 at 3 AM | Complete conversion and in-app event data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 8 AM |
8 | Day 1 at 11 AM | Complete conversion and in-app event data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 6 PM |
9 | Day 1 at 5 PM | Complete conversion and in-app event data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 11:59 PM |
10 | Day 8 at 7 AM | Complete conversion and in-app event data for Day 0, and complete ad revenue data sent via S2S, accounting for any potential issues that may have occurred on the ad revenue network side | Day 8 at 1 PM |
Advanced aggregated (cohort timezone versioned) reports
Report facts
Overview |
The cohort timezone versioned report contains all your aggregated data, cohorted, with all campaign dimension granularity, according to localized timezones. The report is updated every few hours to maximize data freshness and accuracy. |
Reports available |
The following reports are available for download. The reports types are described in more detail in Cohort dashboard.
|
Reporting period |
Users who converted during the previous 1,095 days. In other words, each day, the reports include events of users who converted during the previous 1,095 days. Note: If a day hasn't started yet in your local timezone, timezone-versioned reports will arrive without data. |
Report structure | The schema of the report (the dimensions and metrics included) is fixed and can't be edited. |
Data freshness |
|
Timezone | Any timezone except UTC. Meaning, the reports leave out data for any apps with UTC timezone settings in AppsFlyer. |
Directory and filename structure | Learn more |
Impact of partner retention policies |
Consider that some partners implement a data retention policy. In this case, events occurring after the end of the retention period are disregarded in the Cohort reports. Example: SRN "A" has a data retention policy of 180 days. User events until day 180 are attributed to SRN "A". Events that occur after 180 days are disregarded. Note: The events display in the Overview dashboard as organic. |
Report structure
The report is comprised of dimensions and metrics.
The format of the fields is as follows:
- Dimensions: String. The maximum length of the string is dynamic and in most instances depends on how you populate the elements of the advertising hierarchy
-
Metrics: Number. Note: The selected_currency field format is a string.
The metrics available are revenue, unique users performing an event and the number of event occurrences. To calculate cost-related metrics like ROI, and ROAS you need both revenue and cost metrics. Revenue metrics are in Cohort, and cost metrics are provided by ROI360 Cost ETL.
Dimensions
Field name |
Description |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
app_id |
|||||||||||
media_source |
|||||||||||
conversion_type |
Possible values: install, install_unified (representing installs in the unified report), re-engagement, re-attribution |
||||||||||
attributed_touch_type |
Possible values: click, impressions, pre-install, unknown, tv, null |
||||||||||
days_post_attribution |
|
||||||||||
event_date |
|
||||||||||
conversion_date |
|
||||||||||
event_name |
Identifies the event. Some event names have a specific meaning while others relate to in-app events set by the advertiser in the app.
|
||||||||||
event_timezone |
The timezone for:
|
||||||||||
campaign |
Campaign hierarchy Consider: Campaign name changes not supported. Consequently, multiple names can be associated with a given campaign ID. |
||||||||||
campaign_id |
Campaign hierarchy | ||||||||||
adset |
Campaign hierarchy | ||||||||||
adset_id |
Campaign hierarchy | ||||||||||
ad |
Campaign hierarchy | ||||||||||
ad_id |
Campaign hierarchy | ||||||||||
channel |
Campaign hierarchy. [Updated October 27, 2021] At present, Meta ads doesn't populate channel in data provided via the Google Install Referrer mechanism. |
||||||||||
site_id |
Campaign hierarchy | ||||||||||
is_primary_attribution |
Use to identify and deduplicate retargeting data. | ||||||||||
geo |
The ISO country code derived from the user IP address. | ||||||||||
agency |
|
||||||||||
install_app_store |
Android apps only: The Android store from where the app was downloaded. Populated by advertisers implementing multi-store Android attribution. If blank, it means Google Play Store. |
||||||||||
keywords |
Word(s) used in the user's online search. As reported by the ad network. |
||||||||||
keyword_id |
Keyword ID returned by the ad network. |
Metrics
Field name |
Description | Format |
---|---|---|
unique_users |
Number of on-day unique users performing the event. |
Number |
revenue_usd |
|
Number |
event_count |
Number of event occurrences. |
Number |
selected_currency |
3-letter currency code (USD, EUR) set by you in the app settings. Format ISO-4217. This is the same currency used to display revenue in Cohort in the user interface. |
String |
revenue_selected_currency |
|
Number |
first_inapp |
|
Number |
Directory and filename structure
The path to the report consists of the following folder hierarchy:
With the following format: <bucket-name>/t=cohort_unified_timezone_versioned/dt=<yyyy-mm-dd>/version=<unix timestamp>/<parquet file number>
Report folder hierarchy
An example of the cohort timezone versioned report folder hierarchy in the advertiser bucket:
bucket
|
└── t=cohort_unified_timezone_versioned
|
├── dt=2024-05-05
| |
| └── version=1714890235
| | |
| | ├── part-00000-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz
| | |
| | ├── part-00001-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz
| | │
| | └── part-00002-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz
| |
| |
| └── version=1714890286
| |
| ├── part-00000-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz
| |
| ├── part-00001-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz
| │
| └── part-00002-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz
| |
. .
. .
Legend:
- dt: Date when the events included in the report occurred.
- t: report type.
- version: Unix timestamp when the version was created.
Report versions and data freshness
- Intraday. Reports are sent every few hours.
- Reports are for all the data currently available for the day. Meaning, on April 18, every report version contains all available data up to that point for April 18.
- Report use cases may be different depending on your geo and timezone. Learn more
- Only ingest the latest available report version.
Version | Report includes data that AppsFlyer received by (Time in UTC) | Use case | Time report is available (Time in UTC) |
---|---|---|---|
1 | Day -1 at 4 AM | Eastern geos - partial data for Day 0 | Day -1 at 8 AM |
2 | Day -1 at 8 AM | Eastern geos - partial data for Day 0 | Day -1 at 1 PM |
3 | Day -1 at 12 PM | Eastern geos - partial data for Day 0 | Day -1 at 6 PM |
4 | Day -1 at 4 PM | Eastern geos - partial data for Day 0 | Day -1 at 9 PM |
5 | Day -1 at 8 PM | Eastern geos - partial data for Day 0 | Day -1 at 11:59 PM |
6 | Day -1 at 11:59 PM | Eastern and Central geos - partial data for Day 0 | Day 0 at 4 AM |
7 | Day 0 at 4 AM | All geos - partial data for Day 0 | Day 0 at 8 AM |
8 | Day 0 at 8 AM | All geos - partial data for Day 0 | Day 0 at 1 PM |
9 | Day 0 at 12 PM | All geos - partial data for Day 0 | Day 0 at 6 PM |
10 | Day 0 at 4 PM | All geos - partial data for Day 0 | Day 0 at 9 PM |
11 | Day 0 at 8 PM |
|
Day 0 at 11:59 PM |
12 | Day 0 at 11:59 PM |
Central and Western geos - partial data for Day 0 |
Day 1 at 4 AM |
13 | Day 1 at 4 AM |
|
Day 1 at 8 AM |
14 | Day 1 at 8 AM | Western geos - partial data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 1 PM |
15 | Day 1 at 12 PM | Western geos - partial data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 6 PM |
16 | Day 1 at 4 PM | Western geos - partial data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 9 PM |
17 | Day 1 at 6 PM | Western geos - partial data for Day 0, and any currently available ad revenue data sent via S2S | Day 1 at 11:59 PM |
18 | Day 1 at 8 PM | Western geos - Complete conversion, in-app event data for Day 0, and complete ad revenue data sent via S2S | Day 1 at 11:59 PM |
19 | Day 1 at 11:59 PM | Complete conversion and in-app event data for Day 0, and complete ad revenue data sent via S2S, accounting for any potential issues that may have occurred on the ad revenue network side | Day 2 at 4 AM |
20 | Day 8 at 00:00 AM | Complete conversion and in-app event data for Day 0, and complete ad revenue data sent via S2S, accounting for any potential issues that may have occurred on the ad revenue network side | Day 8 at 6 AM |
Additional information
Timezone geos
Report use cases may be different depending on your geo and timezone. Use the following table to understand which geos match which timezones.
Geo | Timezone |
---|---|
Eastern | UTC+12 - UTC+3 |
Central | UTC+2.5 - UTC-3 |
Western | UTC-3.5 - UTC-12 |
BI developer considerations
Scope of data in the report
The reports contain user acquisition installs and retargeting re-attributions and re-engagements, and their related in-app events.
You can load unified, user acquisition, and retargeting reports separately or together into your BI. If you load them together and want to filter the views on your own:
- For unified, use the is_primary_attribution=true or null field.
- For user acquisition, use conversion_type=Install.
- For retargeting, use conversion_type=re-engagement or re-attribution.
If you just use the unified view in your data loading process, you can use logic to split the data between campaign types, which means, user attribution (installs) and retargeting (re-engagements). To do so, use the conversion_type=install, install_unified, re-engagement, or re-attribution. See Double attribution of retargeting events.
Field-level considerations
- Use post-attribution days to enable easy calculation of retention metrics.
- Calculate unique users using campaign name and campaign ID dimensions: If you can disregard campaign name granularity, you can sum unique count on campaign ID and the metrics are correct.
- You can aggregate the data using the campaign hierarchy fields.
- Revenue in USD is calculated using the exchange rate on the event day.
General considerations
The data of all apps is configurable; it can provided in a single file or separate files per app.
Use cases
The following are examples of some popular, practical applications of the data that BI developers can extract via Data Locker. Each example is illustrated by an SQL statement and sample Excel visual.
1. Calculate retention
In the following example, we:
- Calculate retention Day 1 and Day 7, as well as the total number of installs per campaign and ad.
- Sum the event count per conversion event by filtering
event_name
to beaf_conversion
. - Specifically analyze user acquisition campaigns by filtering the data so that
conversion_type=install
.
SQL statement
select
campaign_id, ad_id,
sum(if(event_name = 'af_conversion', event_count,0)) as installs,
sum(if(event_name = 'af_session' and days_post_attribution = 1, unique_users,0)) / sum(if(event_name = 'af_conversion', event_count,0)) as retention_day1,
sum(if(event_name = 'af_session' and days_post_attribution = 7, unique_users,0)) / sum(if(event_name = 'af_conversion', event_count,0)) as retention_day7
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2023-06-01' and '2023-06-08'
// If you're querying data from unified reports, edit the line below to: and conversion_type IN ('install', 'install_unified')
and conversion_type = 'install'
and app_id = YOUR_APP
group by 1,2
Excel example
Campaign ID | Ad ID | Installs | Retention Day 1 | Retention Day 7 |
---|---|---|---|---|
12345678 | 987654 | 100 | 30% | 10% |
98765432 | 123456 | 200 | 25% | 15% |
07315466 | 613770 | 300 | 20% | 12% |
2. Calculate ARPU of multiple in-app events
In the following example, we:
- Calculate ARPU of multiple in-app events per campaign.
- Specifically analyze retargeting campaigns by filtering the data so that
conversion_type=re-engagement
andconversion_type=re-attribution
. - Sum the event count per conversion event by filtering
event_name
to beaf_conversion
. - Sum the revenue of multiple events, in this case
af_purchase
andaf_coins
. - Set
days_post_attribution
to the minimum needed (in this case, 7) to minimize the data processing load.
SQL statement
select
campaign_id,
sum(if(days_post_attribution <= 1 and event_name in ('af_purchase', 'af_coins') , revenue_usd, 0)) / sum(if(event_name = 'af_conversion', event_count, 0)) as ARPU_day1,
sum(if(days_post_attribution <= 3 and event_name in ('af_purchase', 'af_coins') , revenue_usd, 0)) / sum(if(event_name = 'af_conversion', event_count, 0)) as ARPU_day3,
sum(if(days_post_attribution <= 7 and event_name in ('af_purchase', 'af_coins') , revenue_usd, 0)) / sum(if(event_name = 'af_conversion', event_count, 0)) as ARPU_day7
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2023-06-01' and '2023-06-08'
and days_post_attribution <= 7
// If you're querying data from unified reports, edit the line below to: and conversion_type IN ('install', 'install_unified')
and conversion_type in ('re-engagement', 're-attribution')
and app_id = YOUR_APP
group by 1
Excel example
Campaign ID | Conversion type |
ARPU Day 1 |
ARPU Day 3 |
ARPU Day 7 |
---|---|---|---|---|
12345678 | re-engagement | 6.23 | 5.11 | 2.34 |
98765432 | re-engagement | 3.57 | 1.34 | 4.86 |
07315466 | re-attribution | 7.41 | 6.79 | 5.29 |
3. Calculate in-app event conversion rate for a specific cohort day
In the following example, we:
- Calculate the Day 0 in-app event conversion rate for multiple dimensions (in this case, conversion date, geo, campaign, ad, and site ID).
- Analyze unified data (both UA and retargeting campaigns) by filtering the data so that
is_primary_attribution=true
. - Sum the event count per conversion event by filtering
event_name
to beaf_conversion
. - Set
days_post_attribution
to the minimum needed (in this case, 7) to minimize the data processing load.
SQL statement
select
conversion_date, geo, campaign_id, ad_id, site_id,
sum(if(days_post_attribution = 0 and event_name = 'af_complete_tutorial', unique_users, 0)) / sum(if(event_name = 'af_conversion', event_count, 0)) as day0_af_tutorial_conversion
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2023-06-01' and '2023-06-08'
and is_primary_attribution = true
and app_id = YOUR_APP
group by 1,2,3,4,5
Excel example
Conversion date | Geo |
Campaign ID |
Ad ID |
Site ID |
Day 0 af_complete_tutorial |
---|---|---|---|---|---|
2022-11-07 | US | 12345678 | 123456 | site_123 | 45% |
2022-11-05 | UK | 98765432 | null | site_654 | 70% |
2022-10-31 | KR | 07315466 | null | null | 63% |
4. Calculate daily installs
In the following example, we:
- Calculate the number of installs per app ID, conversion date, media source, event name, and conversion type.
- Filter the data to show UA installs (not retargeting), by setting
conversion_type
to beinstall
. - Sum the installs by setting
event_name
to beaf_conversion
.
SQL statement
select
app_id,
conversion_date,
media_source,
event_name,
conversion_type,
sum(events_count) as total
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2023-06-01' and '2023-06-08'
// If you're querying data from unified reports, edit the line below to: and conversion_type IN ('install', 'install_unified')
and conversion_type = 'install'
and event_name = 'af_conversion'
and app_id = YOUR_APP
group by 1,2,3,4,5
Excel example
App ID | Conversion date |
Media source |
Event name |
Total |
---|---|---|---|---|
id123456789 | 2022-11-07 | adnet1_int | af_conversion | 105 |
id123456789 | 2022-11-05 | adnet2_int | af_conversion | 216 |
id123456789 | 2022-10-31 | adnet3_int | af_conversion | 327 |
5. Calculate revenue from Facebook Ads
In the following example, we:
- Calculate Day 3 revenue from Facebook by conversion date and app ID.
- Analyze Facebook data by filtering the data so that
media_source='Facebook Ads'
. - Set
days_post_attribution
to the minimum needed (in this case, 3) to minimize the data processing load.
SQL statement
select
conversion_date,
app_id,
media_source,
sum(if(days_post_attribution <= 3, revenue_usd, 0)) as revenue_day3
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2022-06-01' and '2023-05-31'
and days_post_attribution <= 3
and media_source = 'Facebook Ads'
and app_id in (APP_ID1, APP_ID2, ...)
group by 1,2,3
Excel example
Conversion date | App ID |
Media source |
Revenue Day 3 |
---|---|---|---|
2022-11-07 | id123456789 | adnet1_int | 400.45 |
2022-11-05 | id123456789 | adnet2_int | 99.23 |
2022-10-31 | id123456789 | adnet3_int | 13.34 |
6. Calculate ARPU per ASA keyword ID for up to 365 cohort days
In the following example, we:
- Calculate ARPU from Apple Search Ads per keyword ID until cohort day 365.
- Analyze Apple Search Ads data by filtering the data so that
media_source='Apple Search Ads'
. - Sum the event count per conversion event by filtering
event_name
to beaf_conversion
.
SQL statement
select
media_source,
keyword_id,
sum(if(days_post_attribution <= 365, revenue_usd,0)) / sum(if(event_name = 'af_conversion', event_count, 0)) as ARPU_day365
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2022-06-01' and '2023-05-31'
and media_source = 'Apple Search Ads'
and app_id = YOUR_APP
group by 1
Excel example
Media source |
Keyword ID |
ARPU Day 365 |
---|---|---|
adnet1_int | 123456 | 57,019.93 |
adnet2_int | 987654 | 64,867.84 |
adnet3_int | 666854 | 48,160.02 |
7. Calculate ARPU Days 7 by attribution time per geo
The following example illustrates how to use KPIs by attribution time. In the example, we:
- Calculate ARPU Days 7 by attribution date per geo.
- Results are sorted by the number of conversions, with the top 20 geos displaying.
- Data is filtered so that
conversion_type='install'
. - The first column shows geo. The second column shows the total conversions. The columns thereafter show the revenue days 7 for every day specified to be a row in the query.
SQL statement
select
geo,
sum(if(event_name = 'af_conversion', event_count, 0)) total_conversions,
sum(if(cohort_day = '2023-07-11' and days_post_attribution <= 7, revenue_usd, 0)) / sum(if(cohort_day = '2023-07-11' and event_name = 'af_conversion', event_count, 0)) as ARPU_day7_2023_07_11,
sum(if(cohort_day = '2023-07-12' and days_post_attribution <= 7, revenue_usd, 0)) / sum(if(cohort_day = '2023-07-12' and event_name = 'af_conversion', event_count, 0)) as ARPU_day7_2023_07_12,
sum(if(cohort_day = '2023-07-13' and days_post_attribution <= 7, revenue_usd, 0)) / sum(if(cohort_day = '2023-07-13' and event_name = 'af_conversion', event_count, 0)) as ARPU_day7_2023_07_13,
sum(if(cohort_day = '2023-07-14' and days_post_attribution <= 7, revenue_usd, 0)) / sum(if(cohort_day = '2023-07-14' and event_name = 'af_conversion', event_count, 0)) as ARPU_day7_2023_07_14,
sum(if(cohort_day = '2023-07-15' and days_post_attribution <= 7, revenue_usd, 0)) / sum(if(cohort_day = '2023-07-15' and event_name = 'af_conversion', event_count, 0)) as ARPU_day7_2023_07_15,
sum(if(cohort_day = '2023-07-16' and days_post_attribution <= 7, revenue_usd, 0)) / sum(if(cohort_day = '2023-07-16' and event_name = 'af_conversion', event_count, 0)) as ARPU_day7_2023_07_16
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2023-07-11' and '2023-07-16'
and days_post_attribution <= 7
// If you're querying data from unified reports, edit the line below to: and conversion_type IN ('install', 'install_unified')
and conversion_type = 'install'
and app_id = 'YOUR_APP'
group by 1
order by 2 desc
limit 20
Excel example
Geo |
Total conversions |
ARPU Day 7 for 2023-07-11 |
ARPU Day 7 for 2023-07-12 |
ARPU Day 7 for 2023-07-13 |
ARPU Day 7 for 2023-07-14 |
ARPU Day 7 for 2023-07-15 |
ARPU Day 7 for 2023-07-16 |
---|---|---|---|---|---|---|---|
South Korea | 120,660 | $7,798.89 | $6,997.37 | $8,258.95 | $9,050.21 | $10,018.04 | $13,765.73 |
Canada | 35,099 | $64,867.84 | $7,050.19 | $5,656.33 | $9,553.75 | $8,632.41 | $11,308.06 |
Chile | 26,750 | $48,160.02 | $21,249.55 | $22,584.57 | $24,033.07 | $31,118.91 | $41,145.22 |
8. Calculate purchases Day 7 after conversion
In the following example, we:
- Calculate the cumulative unique users who perform af_purchase events 7 days following their conversion (in unified view).
- Calculate the conversion rate to the event, meaning the share of conversions who make a purchase in the 7 days following their conversion.
- Data is filtered so that
conversion_type='install'
. - Data is grouped by app, conversion date, media source, campaign, and adset.
SQL statement
select
app_id, conversion_date, media_source, campaign, adset,
sum(if(event_name = 'af_conversion', event_count,0)) as unified_conversions,
sum(if(event_name = 'af_purchase', first_inapp, 0)) as af_purchase_day_7_cumulative_unique_users,
concat(
cast(
round(
sum(if(event_name = 'af_purchase', first_inapp, 0)) /
sum(if(event_name = 'af_conversion', event_count, 0)) * 100.0
,2)
as varchar),
'%') as af_purchase_day_7_cumulative_unique_users_conversion_rate
from YOUR_DATA_LOCKER_REPORT
where
conversion_date between '2023-12-01' and '2023-12-31'
and is_primary_attribution = true
and days_post_attribution <= 7
and app_id in (APP_ID1, APP_ID2, ...)
group by 1,2,3,4,5
Excel example
App ID |
Conversion date |
Media source |
Campaign |
Adset |
Unified conversions |
D7 af_purchase cumulative |
D7 af_purchase conversion rate |
---|---|---|---|---|---|---|---|
id123456789 | 2024-03-05 | adnet1_int | campaign_1 | adset_1 | 100 | 20 | 20% |
id123456789 | 2024-03-07 | adnet2_int | campaign_2 | adset_2 | 200 | 10 | 5% |
id123456789 | 2024-03-31 | adnet3_int | campaign_3 | adset_3 | 150 | 15 | 10% |
9. Calculate DAU
In the following example, we:
- Calculate the DAU for each day in a chosen time range grouped by media source, campaign, and ad.
- Data is filtered so that
event_name = 'af_session'
. - Sum the unique users for 1 day at a time, where each date is its own dimension (column).
Note:
- You can't sum multiple days (for example to get WAU or MAU).
- DAU is based on the activity of users who converted in the past 1,095 days. This differs from data that may be seen in the Activity dashboard and reports, that don't have this limit. See "Days post-conversion" in the traits and limitations section.
SQL statement
select
media_source,campaign_id, ad_id,
sum(case when event_date = '2024-08-06' then unique_users end) as dau_2024_08_06,
sum(case when event_date = '2024-08-07' then unique_users end) as dau_2024_08_07,
sum(case when event_date = '2024-08-08' then unique_users end) as dau_2024_08_08
from YOUR_DATA_LOCKER_REPORT
where event_date between '2024-08-06' and '2024-08-08'
and event_name = 'af_session'
and app_id = YOUR_APP
group by 1,2,3
Excel example
Media source |
Campaign |
Ad |
DAU August 6 |
DAU August 7 |
DAU August 8 |
---|---|---|---|---|---|
adnet1_int | campaign_1 | adset_1 | 475,250 | 420,485 | 463,912 |
adnet2_int | campaign_2 | adset_2 | 380,987 | 355,665 | 401,232 |
adnet3_int | campaign_3 | adset_3 | 290,042 | 570,322 | 489,787 |
Traits and limitations
Trait | |
---|---|
Cost data |
|
Campaign name changes | Not supported. Use campaign ID for grouping and filtering if campaign names were changed. |
Data freshness | Intraday |
Ad revenue |
Available |
Currency | USD and app-specific currency are both available per row |
Timezone |
App-specific timezone is available with the timezone versioned report. |
Organic data | Available |
Days post-conversion (install, re-attribution, re-engagement) data is available |
1,095 days is available. |
Agency transparency |
|
App segregation | Supported |
SKAN data | Not included. Meaning, the data is provided by iOS postbacks, not by Data Locker reports. |
Uninstalls data | Uninstalls are processed daily. Thus, they only appear in reports that contain complete data for a day (not partial data). |
Reinstalls |
|