At a glance: Row-level data (aka raw data) describes events relating to users like installs, in-app events, website visits, Protect360 blocked installs, ad revenue generated, and user-associated postbacks sent to partners. Raw data reports are available via download, API, and Data Locker.
Raw data reporting—tools and reports
Raw data reports enable you to analyze user behavior and journeys, reconcile ad network accounts, and enrich your CRM and BI systems. By using raw data, you increase your ability to analyze, optimize, and improve app performance.
Reports are made available via reporting tools. The tools have different characteristics suited to different use cases. For example, to reconcile a given ad network account, download the report as needed via the Export data page. To get user performance data to load into your BI systems, get the data programmatically using Data Locker or Pull API.
Want to understand more about your raw data? Check out this short, informative course on the AppsFlyer Learning Portal.
Reporting tools—characteristics and features
Reports are made available using the reporting tools listed in this section.
- The report date range relates to the activity (actual) date the event took place. This is in contrast to aggregated reports where the date range is LTV-based.
- Fields descriptions—see the data field dictionary.
|Tool||Description||Multiple /single app (1)||Data freshness capability (2)||Embed in scripts||Time zone||Currency|
|Raw data export page||
|Data Locker P||
||Multiple||Continuously updated with a lag of several hours||✓||UTC||USD|
|Push API P||
||Can use the same endpoint||Minutes after the event is recorded in AppsFlyer||✓||UTC + app-specific||USD + app-specific|
|SDK Conversion data (3)||
||N/A||Real-time <5 seconds||✓||UTC||N/A|
Notes and abbreviations:
|Limitation||Pull API (*)||Push API||Data Locker||SDK
|Data limit||1M rows per call||N/A||N/A||N/A|
|Data selection options||Select data types. Limited field selection options||Select data types, fields, and in-apps||Select data types, fields, and in-apps||No|
|Data availability window||90 days||N/A||14 days||Lifetime (available in the SDK)|
|Consideration||Pull API||Push API||Data Locker||SDK
|Requires data processing||Optional||Required||Optional||Optional|
|Risk of data loss||No||Yes, if receiving servers are down||No||Small, if there are delays in ad network response|
|Client-server processing costs||None||High||Low||None (unless sending the data to the servers)|
|Client-server maintenance||None||High||Low||None (unless sending the data to the servers)|
|Data format||CSV file||JSON or query params||CSV or parquet||JSON|
Raw data records occurring in a given context are grouped together in reports. For example, non-organic installs, organic in-app events. For ease of explanation, reports are grouped as follows:
User journey: Use to trace the journey and engagement of a user with the app.
For example: click > install > in-app event > uninstall.
- Feature: Relate to a given AppsFlyer feature but aren't part of the main user journey. For example, postbacks to ad networks, fraud and Validation Rules reports, and user-level ad revenue reports.
The raw data field dictionary contains fields relevant to user journey reports and some feature report fields. The principles are as follows:
- Have a common set of fields.
- Field population depends on the journey context. For example, non-organic reports contain the media source credited with bringing the user. Attribution fields in organic reports aren't populated because there is no media source.
- Feature: Have a unique set of fields or contain user journey fields and additional fields relevant to the feature. For example, SKAdNetwork reports have a unique list of fields, whereas postback reports contain the user journey fields and additional fields relating to postback sending to partners.
Tip! The best way to become familiar with the reports is to view reports. You can download your reports via the Export data page.
For ease of understanding, user journey fields are divided into groups based on context.
User journey raw data field groups
|Field group||Relevant to organic users||Example fields|
|App||Yes||App ID, app name, app version, SDK version, ATT|
No, except for install time
Install time, attributed touch time, media source, campaign, adset, ad, partner, retargeting conversion type
|Contributors attribution||No||Contributor partner, match type|
|Device info||Yes||Advertising ID, GAID, OAID, device type, customer user ID|
|Device location||Yes||IP address, city, country|
Populated in in-app event reports:
Event name, event value, event revenue
User journey reports
User journey basics
User journey reports contain data collected for events occurring during a user's lifetime. The data is divided into reports according to:
- User source: organic or non-organic
- Journey context:
- Engagement with ads before app install (impressions and clicks)
User acquisition (UA) reports contain:
- The impressions and clicks occurring before install by any potential user engaging with an ad.
- Install event.
- Subsequent in-app events performed by the user.
Retargeting reports contain:
- The impressions and clicks occurring when the user is retargeted.
- Conversion events: Either a re-engagement or re-attribution.
- Subsequent in-app events performed as part of the re-engagement. Consider:
- Retargeting data is always non-organic.
- Retargeting in-app events are in both the UA and retargeting in-app event reports. See retargeting double-attribution methodology.
To follow a user journey, combine the reports that relate to the part of the journey that interests you, for example, installs and in-app events. Having done so, sort the report using AppsFlyer ID, event time, and report type. The result is the events of a given user over time, meaning the user journey.
User journey report availability
- Report availability depends on your subscription plan.
- Reports can include either organic users, non-organic users, or both, as indicated.
- Retention policies apply to historical raw data reports depending on the reporting tool and the origin of the raw data. In general, data is available for the previous 90 days. Note! Retention policies don't apply to aggregated data.
User journey reports
|Category||Unique to Data Locker||Report topic||Organic||Non-organic|
|Retargeting||✓||Clicks from retargeting campaigns||Retargeting always non-organic|
|Retargeting||✓||Impressions from retargeting campaigns||Retargeting always non-organic|
|User acquisition||-||In-app events||✓||✓|
|User acquisition||-||Attributed ad revenue||-||✓|
|User acquisition||-||Organic ad revenue||✓||-|
|Retargeting||-||Retargeting ad revenue||Retargeting always non-organic|
|Retargeting||-||Retargeting conversions (re-engagements and re-attributions)||Retargeting always non-organic|
|Retargeting||-||Retargeting in-app events (re-engagements and re-attributions)||Retargeting always non-organic|
|Retargeting||✓||Retargeting sessions (re-engagements and re-attributions)||Retargeting always non-organic|
|User acquisition||-||Non-organic uninstalls||-||✓|
|User acquisition||-||Organic uninstalls||✓||-|
|User acquisition||✓||Cross-platform engagements||✓||✓|
User journey report descriptions
Clicks and impressions
|Context||A user engages with a campaign and clicks or views an ad.|
|Characteristics||The reports contain a record of the attribution link and HTTP headers present when a user clicks or views an ad.|
SRN data not available.
|Restricted users||In some cases, due to privacy rules, impression and click data is either restricted (doesn't have user identifiers) or is not available at all. The availability depends on the media source and platform.|
Installs and retargeting conversions
User acquisition: Installs
When a user opens an app for the first time.
After a user engages with a retargeting ad and then opens the app. A retargeting conversion being a re-engagement or re-attribution.See Retargeting attribution guide.
||Similar to installs.|
|Organic vs. non-organic||
|Example report||Installs||Retargeting conversions report has the same structure as the installs report. Some fields are populated in the context of retargeting. See retargeting raw data.|
Chronological list of the actions performed by users after attribution (install, re-attribution, or re-engagement)
Use the report to:
Event value field
The event value field contains all the data related to the event in a JSON. You can load this into your BI system for further analysis.
Tip! You can use Power Query in Microsoft Excel to parse the event parameters from the JSON text strings.
The revenue and ROI data in AppsFlyer are derived from the af_revenue sent in events.
When the af_revenue parameter is sent in an in-app-event, AppsFlyer uses this to populate the event revenue field. It is in this field that AppsFlyer uses to update the dashboard and aggregated reports.
Note! Use only the af_revenue parameter with in-app-events that describe actual revenue generated. For other events that involve revenue, but are not final, for example, add_to_cart, use different parameters like af_price
|Context||When the user opens the app, a session event is sent to AppsFlyer. The event is recorded if the minimum time between sessions threshold is exceeded.|
The report structure is the same as in-app event reports. Sessions (session events) are in a separate report due to the large number of such events.
|Use case||Understand user engagement with the app.|
|Example report||The sessions report is similar to the in-app events report. Note: In raw data, sessions have the event name launch.|
|Context||Record of users uninstalling the app.|
|Example report||Uninstalls Note! In the example, for clarity, row 2 indicates which fields are populated if relevant data is available.|
User journey report availability per tool
Ad engagement report by tool
|Report||Export data||Pull API||Data Locker||Push API||SDK
|(1) Clicks and impressions data is made available by non-SRNs. SRNs don't make this data available.|
User acquisition reports by tool
|Report||Export data||Pull API||Data Locker||Push API||SDK conversion data|
Retargeting raw data reports by tool
|Report||Export data||Pull API||Data Locker||Push API||SDK
|Conversions (re-attributions + re-engagements)||✓||✓||✓||✓||✓|
(1) Clicks and impressions data is made available by non-SRNs. SRNs don't make this data available.
Why is Meta ads raw data missing?
What is the difference between the timestamps?
The timestamps are common to all the reports. This makes it possible to combine different reports.
The following timestamps are relevant:
What is the purpose of the contributor field?
What is the keywords field—why isn't available in all non-organic installs?
Installs attributed to Google Ads or Apple Search Ads, can contain the keywords or keyword ID associated with the ad bringing the install.
Install report tips
Understanding the user journey
A user journey is a series of steps that the user performs before achieving a goal like purchasing a product or booking a flight. The idea behind analyzing a user journey is to see what the user does in the app, how active they are, and what value they bring during a given period.
You can identify and highlight user journeys with the help of the AppsFlyer ID. The ID is generated for each app install per device. The ID remains unchanged throughout the user lifecycle (from install to uninstall.) The ID persists if the user resets their device ID.
Since the install and in-app events reports have the same structure, they can be merged into a single report. In the merged report, you can aggregate and filter by AppsFlyer ID and Customer User ID (if available) to analyze user journeys.
- A user installed the app on August 20 at 09:31.
- The merged report shows that they made purchases on August 20 at 10:31, August 22 at 15:22, and August 25 at 16:47.
- From this, we conclude that the user is an engaged user. They made a purchase one hour after launching the app and continued purchasing on the days following the install.
- A user installed the app on July 30. The merged report shows that they added an item to their cart on August 15, but there are no subsequent purchase events.
- You can assume that the user is hesitant to make a purchase and choose to retarget them with the item they added to the cart.
Analyzing the user journey for campaign optimization
- The user acquisition (UA) manager of a travel app downloads the install and in-app event reports and merges them.
- Then, to view user journeys in the app, they filter or aggregate data by AppsFlyer ID.
- They notice that a given user, identified by their AppsFlyer ID, downloaded the app 12 months ago and booked a flight several days later.
- Subsequently, the user viewed a few flight deals but didn't make any bookings. Looking further, the UA manager discovers more users with the same pattern and decides to dig even deeper.
- They find that most of these users came from Ad A of Campaign B run on Media source C. It turns out that this ad and campaign targeted users who wanted to travel to a specific destination.
- By analyzing the user journey, the UA manager might conclude that the campaign was too narrowly focused and that users weren't sufficiently engaged by the app.
Reports relating to additional features available in the platform
Use postback reports, to review copies of data sent to an ad network. For example, use them to investigate discrepancies. These reports are for information purposes, and are not required for integration with ad networks.
- The report contains:
- Copies of postbacks sent to the attributed media source.
- Raw data fields and additional fields as detailed in this section.
- The report doesn't contain:
- Starting in March 2021, fields are populated according to a network's Advanced Privacy setting. Meaning, if Advanced Privacy is on, some fields, like user identifiers aren't included. See Advanced Privacy postback specification for ad networks.
- URIs for postback reports via Pull API
Postback reports (available via the Export Data page and Pull API)
|Report topic||Events sent to the attributed media source|
|Installs||Non-organic (UA) installs|
|In-app events||Non-organic in-app events|
Retargeting conversion postbacks
|Retargeting (re-engagement and re-attribution)|
Retargeting in-app events
Retargeting in-app events
Additional fields in postback reports
Some values, like revenue, may not appear in the appropriate field, but you can still see this data in the Postback URL.
|Postback HTTP response code||200: Confirms that the postback was received by the ad network|
|Postback error message|
Protect360 fraud and validation rules
- See Protect360 and validation rules raw data reports
- Ad networks and agencies need advertiser permission to access Protect360 and Validation Rules reports
To grant an integrated partner permission to access Protect360:
- Go to Configuration > Active Integrations.
- Select the integrated partner.
- In the Permissions tab, turn on Access your Protect360 dashboard & raw data via API.
- To give access to the In-app events (CPA) dashboard, turn on Access aggregate in-app events data.