The ThinkingData & AF SDKs must be initialized and their APIs called strictly in the following order
Initialize the ThinkingData client SDK
Call the automatic or manual integration API to set distinct_id in third-party events (for the code, see the official documentation AppsFlyer Push API; it isn't repeated here)
Initialize the AF SDK
1.2 AE configuration - empty endpoint URL under the data source
In the AE backend, go to Project Settings — Implementation — TE Receiver Host URL and add the server address that uses port 8991. You can confirm the address with your company's operations team. The AppsFlyer platform endpoint URL is then synced automatically.
No data is sent back within 2 hours after the AF callback plan is created or updated.
Data was received within the last 72 hours, but some of it failed to convert, or no new events have been sent back for more than 72 hours.
Analyzing why conversion failed
To find out why data failed to convert, click the Details icon in the upper-right corner of the plan and view the reasons for the failed conversions in the data details
Scenario: Failed to transform, reason: Neither #account_id nor #distinct_id can be associated
Cause 1: the AE user identifier wasn't assigned to AF events as the documentation requires
Cause 2: older app versions don't set the user identifier in AF events or don't integrate the ThinkingData SDK
If the platform connection status is Connected, data has been received from the platform and ingested. You can click Detailed data on the integration page or on each platform's configuration page to view the latest 1000 records received:
No events have been sent back to AE since the configuration was completed, or no new data has been sent back to AE since the plan was modified
1.4 Mismatch between the number of AF install events and AE ta_app_install events
This is usually because install events are collected under different rules. ta_app_install is triggered every time the app is newly installed or uninstalled and reinstalled, while af sdk install has an attribution window, and uninstalling and reinstalling within the window doesn't report the install event again. For details about AF attribution windows, see the following documentation: Re-attribution window explained
Besides the inherent differences, troubleshoot other data differences with the following steps (we recommend checking them in the order 1, 2, 3):
API used
Install differences
In-app event differences
Push API
1. Check whether the sampling period of the comparison is too short and whether the time zones being compared match
2. Check whether some app versions don't integrate the AE SDK or the AppsFlyer SDK
3. Check whether the install events that the AE server receives from AppsFlyer contain the Custom Data/Customer User Id field with a normal, non-empty value
4. Check whether the key names of the Custom Data/Customer User Id field in the raw data downloaded from the AppsFlyer dashboard are ta_account_id and ta_distinct_id
5. Check whether the Custom Data/Customer User Id field has missing values in the raw data downloaded from the AppsFlyer dashboard
5.1 If it isn't empty, Custom Data/Customer User Id wasn't selected in the Push API push settings;
5.2 If it's empty, the client SDK didn't report Custom Data/Customer User Id
6. Check whether the AppsFlyer SDK has a high failure rate when reporting ta_account_id or ta_distinct_id through setAdditionalData() or setCustomerUserId()
7. Check the inbound authorization object settings of the server's security group. You can also add all AppsFlyer IP addresses to the allowlist
Check whether the sampling period of the comparison is too short and whether the time zones being compared match
Check whether some app versions don't integrate the AE SDK or the AppsFlyer SDK
Cost differences: check whether you've connected SRN channels such as Facebook and Google, whose cost data can't be obtained through Push API;
Revenue differences: check the name of the event that carries revenue, and determine whether AppsFlyer gets that event in batches or in real time
1.5 Why can't I find the data even though all callback events were converted successfully?
Check whether Strict Verification mode is enabled for the project. If it is, we recommend that you turn it off first and turn it back on after a batch of data has been sent back.
To check whether Strict Verification mode is enabled: click the settings button in the upper-right corner, click Project Settings, and then check Data Processing Rules.
When you connect AppsFlyer S2S data, report the customer_user_id or custom_data field obtained from the client SDK so that the data can later be bound to AE users. For details about reporting S2S fields, see the AppsFlyer S2S events API for mobile (S2S-mobile)
1.6.4 How to download AppsFlyer Push API raw data
Log in to the AppsFlyer dashboard, go to Export - Raw Data Export in the left navigation bar, select the organic and non-organic events, click create, then select customize, select the custom_data field, and then download the data
1.6.5 What does the te_ads_object property mean, and can other fields be stored in it?
te_ads_object is a standardized object field. It stores fields that have different names but the same meaning on different third-party platforms in one object, to make later analysis easier.
Yes. You can configure this in the User Properties Configuration module: set the source data name to the field name before conversion, and set Target Property to the field name to ingest
For example, map the raw data field idfa sent back by AF to the te_ads_object object.
If you don't need real-time data, we recommend pulling the last 3-7 days of AppsFlyer data at 12:00 noon (UTC) every day. If you need near-real-time data, pull every hour.
Master API
No
If you don't need real-time data, we recommend pulling the past 3-7 days of AppsFlyer data at 12:00 noon (UTC) every day. If you need near-real-time data, pull every hour.
Cohort API
No
If you don't need real-time data, we recommend pulling the past 3-7 days of AppsFlyer data at 12:00 noon (UTC) every day. If you need near-real-time data, pull every hour.
2.2 How do I configure multiple App IDs in the same plan?
Separate multiple App IDs with English commas (,), as shown below
2.3 Does pulling data for the same time range repeatedly create duplicate data?
Pulling data for the same time range multiple times doesn't create duplicates. The data for that time range is entirely overwritten by the new data
If you pull partner data, change the value of partner in the event_mapping object.
If you pull geo data, change the value of geo in the event_mapping object.
Master Api
Change the value of event_name
CohortApi
Change the value of event_name
2.5 How to check whether a data pull succeeded or failed
After the configuration succeeds, click Single pull task in the upper-right corner of the plan. You're notified of the pull result through Notifications.
Example of a successful pull
Example of a failed pull
2.6 Configure AF data pulls in a specified time zone
Add the extra_params - timezone configuration. A complete example follows
tip
Notes:
The time zone configured for AF must match the time zone configured in the AF dashboard
This error usually occurs when you pull data for the first time or add fields to pull in a plan. Server overload may cause the creation of new fields to fail. Wait about 10 minutes and try pulling the data again. If the problem persists, report it to the ThinkingAI customer success manager (CSM) or ThinkingAI technical contact in your support group.
Missing image:img-7250795c0df5
Get thirdparty data failed! The possible error is: AppsFlyer - Page Not Found
Possible cause 1: AF Cohort & Master API are paid AF APIs. Make sure the related permissions are enabled.
Possible cause 2: the AppID entered may be wrong. Check whether the AppID configured in the AE plan matches the one provided in the AF admin dashboard.
Possible cause 3: the App ID isn't live on the AppsFlyer side yet and is still in test status.
If none of the above causes applies, report it to the ThinkingAI customer success manager (CSM) or ThinkingAI technical contact in your support group.
2.9.1 Pulled data doesn't match the data in the AppsFlyer dashboard
Check whether the metrics you compare in AppsFlyer are the same as the metrics you compare in the AE backend;
Analyze whether the difference is caused by different dimensions or parameter settings
The selected apps or cost channels are different
Check whether the time zone of the AppsFlyer dashboard data matches the time zone the plan uses to pull data (by default, the plan pulls data in UTC)
AppsFlyer API data is subject to delays and updates. If the data for a few dates is inaccurate, click Single pull task in the upper-right corner of the plan to pull it again;
If the issue persists after you check all of the above, contact ThinkingAI technical support for help.
2.9.2 Revenue data in the AppsFlyer dashboard cohort report doesn't match the data pulled by Master API
As shown below, the revenue data in the AppsFlyer cohort dashboard is cumulative since install. To compare, pull the data with Cohort API.
Missing image:img-e47832d7ddef
2.9.3 No cost value for the FB channel in data pulled through Cohort API
Because cost isn't aggregated data, different grouping items can cause data differences. For example, when Geo and Channel are both used as grouping items, the FB cost value is 0. AF official documentation: cost metrics can't be combined with certain grouping dimensions. For example, Facebook data can be grouped by Geo (country/region) or Channel (traffic source), but not by both at the same time. The available combinations of grouping dimensions depend on the ad network. For details, contact ThinkingAI technical support.
2.9.4 No cost value for the applovin channel in data pulled through Cohort API
Set group_by to "date","c","pid" and check whether there's cost data.
2.9.5 AppsFlyer Master API cost data for the last 7 days doesn't match the overview dashboard in the AF backend
AE shows more FB channel users than the AF backend
Reason: both the install event and the af_app_install event are data sent back from the AF platform to AE. In AF, these two events are different data sources for the same kind of behavior
Solution: distinguish between the event definitions
Solution: check the group by configuration and make sure it includes required fields such as gp_install_begin, campaign_type, att, keyword_match_type, and conversion_type
AF pull raw data doesn't support the timezone field
The Pull API raw data interface doesn't support time zone settings
Reason: event_mapping is missing from the configuration
Solution: replace it with the standard configuration, save the plan, and pull again. Pull today's data first, and after that succeeds, pull historical data
preferred_timezone defaults to true (the app time zone). To use the UTC time zone, set preferred_timezone to false through custom_properties (Base64-encoded):