Get started with a free trial today
Already have an account? Sign in
Stitch’s AppsFlyer integration replicates data using theAppsFlyer Raw Data Reports V5 API. Refer to theSchema section for a list of objects available for replication.
A high-level look at Stitch's AppsFlyer (v1) integration, including release status, useful links, and the features supported in Stitch.
| STITCH | |||
| Release status | Released on December 11, 2017 | Supported by | |
| Stitch plan | Standard | API availability | Available |
| Singer GitHub repository | Not applicable | ||
| REPLICATION SETTINGS | |||
| Anchor Scheduling | Supported | Advanced Scheduling | Supported |
| Table-level reset | Unsupported | Configurable Replication Methods | Unsupported |
| DATA SELECTION | |||
| Table selection | Unsupported | Column selection | Unsupported |
| Select all | Unsupported | ||
| TRANSPARENCY | |||
| Extraction Logs | Supported | Loading Reports | Supported |
To set up AppsFlyer in Stitch, you need:
To be the AppsFlyer Account Owner. Only Account Owners have access to API credentials in AppsFlyer, which is required to set up the integration.
Access to raw data exports in AppsFlyer. Stitch’s AppsFlyer integration uses theRaw Data Report API to replicate installation and in-app event data. Access to raw data is an AppsFlyer premium feature, which may only be available on their higher tiers.
To determine if you have access to raw data pulling,follow these instructions in AppsFlyer’s documentation.
Sign into your AppsFlyer account.
Depending on the app’s type (iOS, Android, or Windows), the app ID format will vary:
id987654321.com.stitchdata.test, the ID would becom.stitchdata.test.f1e2d3c4b5a6The location of each type of app ID is highlighted in the image below:

On the Stitch Dashboard page, click theAdd Integration button.
Click theAppsFlyer icon.
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch AppsFlyer” would create a schema calledstitch_appsflyer in the destination.Note: Schema names cannot be changed after you save the integration.
The Sync Historical Data setting defines the starting date for your AppsFlyer integration. This means that dataequal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to replicate data beyond AppsFlyer’s default setting of60 days. For a detailed look at historical replication jobs, check out theSyncing Historical SaaS Data guide.
Note: AppsFlyer imposes limits on date ranges for replicating historical data. If theStart Date is more than 90 days from the current date, replication will be unsuccessful. Refer to theHistorical AppsFlyer data limitations section for more info.
In theReplication Frequency section, you’ll create the integration’sreplication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
AppsFlyer integrations support the following replication scheduling methods:
Advanced Scheduling using Cron (Advanced or Premium plans only)
To keep your row usage low, consider setting the integration to replicate less frequently. See theUnderstanding and Reducing Your Row Usage guide for tips on reducing your usage.
After you finish setting up AppsFlyer, itsSync Status may show asPending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, aPending status indicates that Stitch is in the process of scheduling the initial replication job for the integration.This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to theAnchor Scheduling documentation for more information.
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Due to limits imposed by AppsFlyer on date ranges while querying, only the past90 days’ of historical data is available for any given app.
If the integration’sStart Date setting in Stitch is set to a date older than 90 days ago, extraction errors will occur and be surfaced in the integration’sExtraction Logs.
In addition to historical limitations, AppsFlyer alsoimposes a limit on the number of raw data API calls that can be made per day. Currently, the maximum is10 API calls per day, per app and increases when upgrading to a higher AppsFlyer tier.
Each time Stitch requests data for an app - or a single AppsFlyer integration - two API calls will be used: One to replicatein_app_events, and one forinstallations.
If your Stitch AppsFlyer integration is set to replicate frequently (ex: every 30 minutes), you may quickly consume your AppsFlyer API quota. When this occurs, Stitch will pause replication and resume where it left off when more quota is available.
To avoid disruptions in replication, we recommend selecting a lowerReplication Frequency, such as 12 or 24 hours.
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is forversion 1 of this integration.
This is the latest version of the AppsFlyer integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs >customers), while case is maintained in PostgreSQL destinations (CusTomERs >CusTomERs). Refer to theLoading Guide for your destination for more info.
Thein_app_events table contains information about in-app events for iOS and Android apps.
Key-based Incremental | |
Primary Keys | appsflyer_id event_name event_time |
Replication Key | event_time |
| Useful links |
advertising_id STRING |
af_ad STRING |
af_ad_id STRING |
af_ad_type STRING |
af_adset STRING |
af_adset_id STRING |
af_attribution_lookback STRING |
af_c_id STRING |
af_channel STRING |
af_cost_currency STRING |
af_cost_model STRING |
af_cost_value STRING |
af_keywords STRING |
af_prt STRING |
af_reengagement_window STRING |
af_siteid STRING |
af_sub1 STRING |
af_sub2 STRING |
af_sub3 STRING |
af_sub4 STRING |
af_sub5 STRING |
af_sub_siteid STRING |
android_id STRING |
app_id STRING |
app_name STRING |
app_version STRING |
appsflyer_id STRING |
attributed_touch_time DATE-TIME |
attributed_touch_type STRING |
bundle_id STRING |
campaign STRING |
carrier STRING |
city STRING |
contributor1_af_prt STRING |
contributor1_campaign STRING |
contributor1_media_source STRING |
contributor1_touch_time STRING |
contributor1_touch_type STRING |
contributor2_af_prt STRING |
contributor2_campaign STRING |
contributor2_media_source STRING |
contributor2_touch_time STRING |
contributor2_touch_type STRING |
contributor3_af_prt STRING |
contributor3_campaign STRING |
contributor3_media_source STRING |
contributor3_touch_time STRING |
contributor3_touch_type STRING |
country_code STRING |
customer_user_id INTEGER, STRING |
device_type STRING |
dma STRING |
event_name STRING |
event_revenue STRING |
event_revenue_currency STRING |
event_revenue_usd STRING |
event_source STRING |
event_time DATE-TIME |
event_value STRING |
http_referrer STRING |
idfa STRING |
idfv STRING |
imei STRING |
install_time DATE-TIME |
ip STRING |
is_primary_attribution BOOLEAN |
is_receipt_validated BOOLEAN |
is_retargeting BOOLEAN |
language STRING |
media_source STRING |
operator STRING |
original_url STRING |
os_version STRING |
platform STRING |
postal_code STRING |
region STRING |
retargeting_conversion_type STRING |
sdk_version STRING |
state STRING |
user_agent STRING |
wifi BOOLEAN |
Theinstallations table contains information about iOS and Android app installations.
Key-based Incremental | |
Primary Keys | appsflyer_id event_name event_time |
Replication Key | event_time |
| Useful links |
advertising_id STRING |
af_ad STRING |
af_ad_id STRING |
af_ad_type STRING |
af_adset STRING |
af_adset_id STRING |
af_attribution_lookback STRING |
af_c_id STRING |
af_channel STRING |
af_cost_currency STRING |
af_cost_model STRING |
af_cost_value STRING |
af_keywords STRING |
af_prt STRING |
af_reengagement_window STRING |
af_siteid STRING |
af_sub1 STRING |
af_sub2 STRING |
af_sub3 STRING |
af_sub4 STRING |
af_sub5 STRING |
af_sub_siteid STRING |
android_id STRING |
app_id STRING |
app_name STRING |
app_version STRING |
appsflyer_id STRING |
attributed_touch_time DATE-TIME |
attributed_touch_type STRING |
bundle_id STRING |
campaign STRING |
carrier STRING |
city STRING |
contributor1_af_prt STRING |
contributor1_campaign STRING |
contributor1_media_source STRING |
contributor1_touch_time STRING |
contributor1_touch_type STRING |
contributor2_af_prt STRING |
contributor2_campaign STRING |
contributor2_media_source STRING |
contributor2_touch_time STRING |
contributor2_touch_type STRING |
contributor3_af_prt STRING |
contributor3_campaign STRING |
contributor3_media_source STRING |
contributor3_touch_time STRING |
contributor3_touch_type STRING |
country_code STRING |
customer_user_id INTEGER, STRING |
device_type STRING |
dma STRING |
event_name STRING |
event_revenue STRING |
event_revenue_currency STRING |
event_revenue_usd STRING |
event_source STRING |
event_time DATE-TIME |
event_value STRING |
http_referrer STRING |
idfa STRING |
idfv STRING |
imei STRING |
install_time DATE-TIME |
ip STRING |
is_primary_attribution BOOLEAN |
is_receipt_validated BOOLEAN |
is_retargeting BOOLEAN |
language STRING |
media_source STRING |
operator STRING |
original_url STRING |
os_version STRING |
platform STRING |
postal_code STRING |
region STRING |
retargeting_conversion_type STRING |
sdk_version STRING |
state STRING |
user_agent STRING |
wifi BOOLEAN |
Theorganic_installs table contains information about organic installs.
Key-based Incremental | |
Primary Keys | appsflyer_id event_name event_time |
Replication Key | event_time |
| Useful links |
advertising_id STRING |
af_ad STRING |
af_ad_id STRING |
af_ad_type STRING |
af_adset STRING |
af_adset_id STRING |
af_attribution_lookback STRING |
af_c_id STRING |
af_channel STRING |
af_cost_currency STRING |
af_cost_model STRING |
af_cost_value STRING |
af_keywords STRING |
af_prt STRING |
af_reengagement_window STRING |
af_siteid STRING |
af_sub1 STRING |
af_sub2 STRING |
af_sub3 STRING |
af_sub4 STRING |
af_sub5 STRING |
af_sub_siteid STRING |
android_id STRING |
app_id STRING |
app_name STRING |
app_version STRING |
appsflyer_id STRING |
attributed_touch_time DATE-TIME |
attributed_touch_type STRING |
bundle_id STRING |
campaign STRING |
carrier STRING |
city STRING |
contributor1_af_prt STRING |
contributor1_campaign STRING |
contributor1_media_source STRING |
contributor1_touch_time STRING |
contributor1_touch_type STRING |
contributor2_af_prt STRING |
contributor2_campaign STRING |
contributor2_media_source STRING |
contributor2_touch_time STRING |
contributor2_touch_type STRING |
contributor3_af_prt STRING |
contributor3_campaign STRING |
contributor3_media_source STRING |
contributor3_touch_time STRING |
contributor3_touch_type STRING |
country_code STRING |
customer_user_id INTEGER, STRING |
device_type STRING |
dma STRING |
event_name STRING |
event_revenue STRING |
event_revenue_currency STRING |
event_revenue_usd STRING |
event_source STRING |
event_time DATE-TIME |
event_value STRING |
http_referrer STRING |
idfa STRING |
idfv STRING |
imei STRING |
install_time DATE-TIME |
ip STRING |
is_primary_attribution BOOLEAN |
is_receipt_validated BOOLEAN |
is_retargeting BOOLEAN |
language STRING |
media_source STRING |
operator STRING |
original_url STRING |
os_version STRING |
platform STRING |
postal_code STRING |
region STRING |
retargeting_conversion_type STRING |
sdk_version STRING |
state STRING |
user_agent STRING |
wifi BOOLEAN |
| Related | Troubleshooting |
Did this article help? If you have questions or feedback, feel free tosubmit a pull request with your suggestions,open an issue on GitHub, orreach out to us.