AppLovin data integration solution
Last updated: 2023-07-05
1. Integration plan overview
Note that data generated by third-party data integration counts toward the cluster's data consumption
Summary
This document describes how to send AppLovin data back to Agentic Engine (hereinafter the AE system). This solution supports:
Click a name to jump to the corresponding section of the solution
| Integration method | Data granularity | Integration type | Data covered |
|---|---|---|---|
| Impression-Level User Revenue API | User data | Client SDKs | Revenue data, impression data |
| MAX S2S Impression Revenue API | User data | Push | Revenue data, impression data |
| User Revenue API (impression level) | User data | Pull | Revenue data, impression data |
| Aggregated metrics | Pull | Cost data, revenue data, impression data, click data, conversion data | |
| Revenue Reporting API | Aggregated metrics | Pull | Revenue data, impression data |
| Aggregated metrics | Pull | Cost data, impression data, click data, conversion data |
2. Impression-Level User Revenue API (client SDK reporting)
Basic interface information
| Interface | API type | Productized | Data granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|---|
| Impression-Level User Revenue API | Client SDKs | No | User level | Yes | Yes |
Starting from AppLovin SDK version 10.3.0, you can get impression-level user revenue data through the Impression-Level User Revenue API in the AppLovin SDK. Then report the data through the AE SDK to send the revenue data directly to the AE system, which enables real-time revenue data reporting.
To get revenue data, create a MaxAdRevenueListener and override the onAdRevenuePaid() method. In this method, get the revenue data and report it through the AE SDK. Finally, pass the listener to setRevenueListener(). The following code examples show how to override the onAdRevenuePaid() method to get revenue data and upload it to the AE server through the AE SDK:
Code example 1:
If the AE SDK version you integrate is 2.8.0~2.8.1, we recommend this option
If the AE SDK version you integrate is 2.8.2 or later, you also need to install the third-party data plugin to use this option
For details, see Android SDK third-party data and iOS SDK third-party data
void onAdRevenuePaid(final MaxAd ad){
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPLOVIN_USER,ad)
}
This option works by automatically parsing the parameters in MaxAd internally and sending the appLovin_sdk_ad_revenue event
Code example 2:
void onAdRevenuePaid(final MaxAd ad)
{
JSONObject properties = new JSONObject();
try {
properties.put("revenue",ad.getRevenue());
properties.put("countryCode",AppLovinSdk.getInstance(context).getConfiguration().getCountryCode());
properties.put("networkName", ad.getNetworkName());
properties.put("adUnitId", ad.getAdUnitId());
properties.put("adFormat", ad.getFormat());
properties.put("placement", ad.getPlacement());
}catch(JSONException e){
}
instance.track("appLovin_sdk_ad_revenue", properties);
}
3. MAX S2S Impression Revenue API
Basic interface information
| Interface | API type | Productized | Data granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|---|
| MAX S2S Impression Revenue API | Callback | No | User level | Yes | Yes |
AppLovin provides a way to send back data through the MAX S2S Impression Revenue API. Whenever a monetization ad is displayed, AppLovin sends impression-level revenue data back to the configured callback link.
3.1 Configure the AppLovin client SDK
To associate the callback data with the AE project data, pass the distinct ID of the AE system into the AppLovin SDK as the AppLovin custom user identifier. The following are code samples for Android and iOS (Swift):
- Android sample
// Get the AE distinct ID, which corresponds to #distinct_id in AE
String ta_distinct_id = ThinkingAnalyticsSDK.sharedInstance(context, TA_APP_ID).getDistinctId();
AppLovinSdk.getInstance(context).setUserIdentifier(ta_distinct_id);
- iOS sample
ALSdk.shared()!.userIdentifier = ThinkingAnalyticsSDK.sharedInstance()!.getDistinctId()
3.2 Configure the callback URL
Next, configure the callback URL. The fields that can be received in the callback data are called "macros". By default, we pull all fields (that is, configure all macros). The following table lists all macros supported by MAX S2S Impression Revenue API. You can adjust the fields to pull as needed:
| Macro | Required or optional | Description | Sample |
|---|---|---|---|
| {AD_UNIT_ID} | MAX ad ID | 9ad0816ac071552a | |
| {AD_UNIT_NAME} | MAX ad name | My%20App%20Banners | |
| {AD_UNIT_TEST_NAME} | Name of the ad test group | Control | |
| {ALL_REVENUE} | Yes | Estimated revenue, including revenue from FB Bidding | 0.0121, 5.74466e-05 |
| {CC} | Two-letter Country Code | gb | |
| {CUSTOM_DATA} | Custom data set through the SDK | gb | |
| {EVENT_ID} | Unique event ID | 8dc948013d71f04264b8e5c1c61933154b226e08 | |
| {EVENT_TOKEN} | Event token (generated from the unique event ID) | e000949f6d851c1f34adae08e6ef1076ba43cf31 | |
| {EVENT_TOKEN_ALL} | Global event token (generated from the unique event ID and all request parameter macros) | eba615583ed59bc679a495ec58439f4b82b5460d822348eff6be5f218702a97a | |
| {FORMAT} | Ad type | reward, banner, inter | |
| {IDFA} | IDFA on iOS or Google Advertising ID on Android | 860635ea-65bc-eaed-d355-1b5283b30b94 | |
| {IDFV} | IDFV | 4CD1C3C4-3FD7-00F5-1635-7BC6D9387E60 | |
| {IP} | User's IP address | 162.1.1.1, fe80%3A%3A1ff%3Afe23%3A4567%3A890a%0A | |
| {NETWORK} | The Ad Network that displayed the ad | For possible values, see (MAX Mediation Documentation (applovin.com)) APPLOVIN_NETWORK | |
| {NETWORK_PLACEMENT} | Internal Placement name of the Ad Network | ca-app-pub-12345678%2F0987654321 | |
| {PACKAGE_NAME} | Package name: the App Package Name on Android and the Bundle ID (iOS) on iOS | com.test.app | |
| {PLACEMENT} | Placement name customized in the SDK | Launch%20Screen | |
| {PLATFORM} | Platform | android, ios | |
| {PRECISION} | Precision of the revenue data, which depends on the data source:
| exact | |
| {REVENUE} | Yes | Estimated revenue; the value is 0 for FB Bidding | 0.0121, 5.74466e-05 |
| {TS} | Yes | Time of the ad impression | 1546300800 |
| {USER_ID} | Yes | User ID set by the SDK, which corresponds to the distinct ID of the AE project | 7634657898 |
| {WATERFALL_NAME} | Name of the ad Waterfall | LAT |
ThinkingAI staff will then send you the callback URL, and you need to contact AppLovin staff to configure this callback link.
3.3 Data ingestion rules
By default, we write the callback data into the AE project as events, one event per callback record (that is, one impression):
- {USER_ID} in the data is used as the distinct ID of the data, and this field should correspond to the distinct ID in the AE project
- The {TS} field in the data, that is, the ad impression time, is used as the #event_time of the event
- The event name is applovin_max_s2s_impression_revenue
- All other fields configured in the callback link are stored
You can then analyze the applovin_max_s2s_impression_revenue event in the AE system.
3.4 Data integration configuration template
After reading the documentation above, we recommend that you fill in the following template and send it to your customer success manager at ThinkingAI:
Data interface: AppLovin MAX S2S Impression Revenue API
---------
Company name: XXX
AE project environment: (SAAS/on-premises)
AE project name: XXX
AE project APP ID: XXX
Data receiving URL push_url: XXX
---------
Callback macro configuration
Required fields: {AD_UNIT_ID}, {AD_UNIT_NAME}, {AD_UNIT_TEST_NAME}, {ALL_REVENUE}, {CC}, {CUSTOM_DATA}, {EVENT_ID}, {EVENT_TOKEN}, {EVENT_TOKEN_ALL}, {FORMAT}, {IDFA}, {IDFV}, {IP}, {NETWORK}, {NETWORK_PLACEMENT}, {PACKAGE_NAME}, {PLACEMENT}, {PLATFORM}, {PRECISION}, {REVENUE}, {TS}, {USER_ID}, {WATERFALL_NAME}
4. User Revenue API (impression level)
Basic interface information
| Interface | API type | Productized | Data granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|---|
| User Revenue API (impression level) | Pull | No | User level | Yes | Yes |
In addition to the SDK and callback links, AppLovin also provides a data pull API, the User Revenue API, which supports pulling user-level or impression-level ad revenue data.
Currently, AE only supports pulling impression-level data (non-aggregated; one record corresponds to one ad impression)
4.1 Configure the AppLovin client SDK
Option 1 (automatic association):
If the AE SDK version you integrate is 2.8.0~2.8.1, we recommend this option
If the AE SDK version you integrate is 2.8.2 or later, you also need to install the third-party data plugin to use this option
For details, see Android SDK third-party data and iOS SDK third-party data
// Initialize the AE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// Enable AppLovinSdk ID association
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPLOVIN_IMPRESSION);
// Initialize the AppLovinSdk SDK
This option works by automatically calling the setUserIdentifier() method of the AppLovinSdk SDK internally to pass in the distinct ID of the AE project.
Option 2 (manual association):
To associate the data pulled through the API with the AE project data, pass the distinct ID of the AE system into the AppLovin SDK as the AppLovin custom user identifier. The following are code samples for Android and iOS (Swift):
- Android sample
// Get the AE distinct ID, which corresponds to #distinct_id in AE
String ta_distinct_id = ThinkingAnalyticsSDK.sharedInstance(context, TA_APP_ID).getDistinctId();
AppLovinSdk.getInstance(context).setUserIdentifier(ta_distinct_id);
- iOS sample
ALSdk.shared()!.userIdentifier = ThinkingAnalyticsSDK.sharedInstance()!.getDistinctId()
4.2 API parameters
-
API Key:
- Provide the API Key (that is, the Report Key) used to pull reports. You can get it on the Keys tab in the AppLovin dashboard
-
Platform:
- Specify the platform of the data to pull separately, that is, Android or iOS
-
App:
- Specify which app's data to pull. For Android and iOS, pass in the corresponding package name or app store ID. Provide this information to ThinkingAI staff
-
Time:
- Data is pulled by day
- Data for the previous UTC day can be pulled at 08:00 each UTC day. For example, data for the UTC day 2019-01-01 is available after 2019-01-02 08:00:00 UTC
4.3 Data ingestion rules
By default, we write the pulled data into the AE project as events, one event per record (that is, one impression):
- user_id in the data is used as the distinct ID of the data. This field should correspond to the distinct ID in the AE project
- The date field in the data, that is, the ad impression time, is used as the event's #event_time
- The event name is applovin_ad_revenue_impression_level
- All other fields are stored. The following are the meanings of all fields in the returned data:
| Field | Description | Sample |
|---|---|---|
| Ad Format | Ad type | INTER, BANNER, REWARD |
| Ad Placement | Placement name customized in the SDK | Launch%20Screen |
| Ad Unit ID | MAX ad ID | 9ad0816ac071552a |
| Ad Unit Name | MAX ad name | Control |
| Country | Two-letter Country Code | gb |
| Custom Data | Custom data set through the SDK | gb |
| Date | Time of the ad impression | 2019-07-29 15:53:07.39 |
| Device Type | Device Type | PHONE, TABLET |
| IDFA | IDFA on iOS or Google Advertising ID on Android | 860635ea-65bc-eaed-d355-1b5283b30b94 |
| IDFV | IDFV | 4CD1C3C4-3FD7-00F5-1635-7BC6D9387E60 |
| Network | The Ad Network that displayed the ad | For possible values, see (MAX Mediation Documentation (applovin.com)) APPLOVIN_NETWORK |
| Placement | Placement name of the Ad Network | MY_NATIVE_PLACEMENT |
| Revenue | Estimated revenue, including FB Bidding values | 0.0121, 5.74466e-05 |
| User ID | User ID set by the SDK, which corresponds to the distinct ID of the AE project | 7634657898 |
| Waterfall | Name of the ad Waterfall | LAT |
4.4 Data integration configuration template
After reading the documentation above, we recommend that you fill in the following template and send it to your customer success manager at ThinkingAI:
Interface: User Revenue API (impression level)
--------
Company name: XXX
AE project environment: (SAAS/on-premises)
AE project name: XXX
AE project APP ID: XXX
Data receiving URL push_url: XXX
---------
AppLovin api_key (that is, Report Key): XXX
App store App ID: XXX (starts with com. on Android and with id on iOS)
--------
API configuration
Time range for historical data pull: yyyy/mm/dd - yyyy/mm/dd
Scheduled pull: pull the previous day's data at X:00 every day (we recommend after 16:00 Beijing time, that is, after 8:00 UTC)
5. Basic Reporting API
Basic interface information
| Interface | API type | Productized | Data granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|---|
| Basic Reporting API | Pull | No | Aggregated data | Yes | Yes | Yes | Yes | Yes |
In addition to user-level revenue data, AppLovin also provides an aggregated metrics API, the Basic Reporting API.
5.1 Report types
Basic Reporting API provides two distinctly different reports: the advertiser report (advertiser) and the publisher report (publisher). The following sections describe each of them:
5.2 Advertiser report (advertiser)
5.2.1 API parameters
- API Key:
- Provide the API Key (that is, the Report Key) used to pull reports. You can get it on the Keys tab in the AppLovin dashboard
- Time:
- Data is pulled by UTC day, and only data from the last 45 days can be pulled
- Filter:
- You can filter on metric fields, for example, to get data with more than 500 clicks, similar to the having logic in SQL
5.2.2 Included fields
The following are the fields returned by the advertiser report. You can choose the fields to return as needed
| Field name | Default | Description |
|---|---|---|
| day | Yes | Date of the report |
| impressions | Yes | Impressions |
| clicks | Yes | Clicks |
| ctr | Yes | Click-through rate |
| conversions | Yes | Conversions (that is, installs) |
| conversion_rate | Yes | Conversion rate (installs / clicks) |
| average_cpa | Yes | Average CPA (install) |
| average_cpc | Yes | Average CPC |
| ad | Yes | Ad name |
| country | Yes | Two-letter Country Code |
| campaign | Yes | Campaign name |
| app_id_external | Yes | Hashed app ID |
| external_placement_id | Encoded app ID | |
| traffic_source | Yes | Traffic source: AppLovin or the name of another exchange |
| ad_type | Yes | Ad type, such as GRAPHIC, VIDEO, REWARD, or PLAY |
| cost | Yes | Ad cost |
| sales | Yes | Number of in-app purchases (requires the Revenue callback) |
| first_purchase | Number of users with a first in-app purchase (requires the Revenue callback) | |
| size | Yes | Ad size, such as INTER, BANNER, MREC, LEADER, or NATIVE |
| device_type | Yes | Device type, such as phone, tablet, or other |
| platform | Yes | Device platform, such as android, ios, fireos, tvos |
| campaign_package_name | Yes | Package name of the promoted app: package name on Android, Bundle ID on iOS |
| campaign_store_id | App store ID of the promoted app: package name on Android, numeric part of the iTunes ID on iOS | |
| campaign_id_external | Yes | Unique identifier of the campaign |
| campaign_ad_type | Yes | ua for a User Acquisition Campaign; rt for a Retargeting Campaign |
| application | Name of the promoted app |
5.2.3 Ingestion rules
By default, we write the pulled data to the AE project as events:
- Because Basic Reporting API returns aggregated data, we use a fixed value as its user identifier. You can think of all the data as attached to one virtual user
- The day field in the data, that is, the date of the data, is set as the #event_time of the aggregated data
- The event name is applovin_advertiser
- All other fields are stored
5.3 Publisher report (publisher)
5.3.1 API parameters
- API Key:
- Provide the API Key (that is, the Report Key) used to pull reports. You can get it on the Keys tab in the AppLovin dashboard
- Time:
- Data is pulled by UTC day, and only data from the last 45 days can be pulled
- Filter:
- You can filter on metric fields, for example, to get data with more than 500 clicks, similar to the having logic in SQL
5.3.2 Included fields
The following are the fields returned by the publisher report. You can choose the fields to return as needed
| Field name | Default | Description |
|---|---|---|
| day | Yes | Date of the report |
| hour | Yes | Hour value of the report (this field exists only when you pull data for the last 30 days) |
| impressions | Yes | Impressions |
| clicks | Yes | Clicks |
| ctr | Yes | Click-through rate |
| revenue | Yes | Total monetization revenue |
| ecpm | Yes | ECPM |
| country | Yes | Two-letter Country Code |
| ad_type | Yes | Ad type, such as GRAPHIC, PLAY, VIDEO, REWARD, or MRAID |
| size | Yes | Ad size, such as INTER, BANNER, MREC, LEADER, or NATIVE |
| device_type | Yes | Device type, such as phone, tablet, or other |
| platform | Yes | Device platform, such as android, ios, fireos, tvos |
| application | Yes | App name |
| package_name | Yes | Package name of the promoted app: package name on Android, Bundle ID on iOS |
| store_id | App store ID of the promoted app: package name on Android; numeric part of the iTunes ID on iOS, or the Bundle ID if it cannot be obtained | |
| placement | Yes | Placement name |
| application_is_hidden | Yes | Whether the app is hidden in the AppLovin dashboard |
| zone | Yes | Zone name (only if Zones is enabled for your account) |
| zone_id | Yes | Zone ID (only if Zones is enabled for your account) |
| bidding_integration | Bidding integration method (such as MAX or Admob Open Bidding) |
5.3.3 Ingestion rules
By default, we write the pulled data to the AE project as events:
- Because Basic Reporting API returns aggregated data, we use a fixed value as its user identifier. You can think of all the data as attached to one virtual user
- The day field in the data, that is, the date of the data, is set as the #event_time of the aggregated data
- The event name is applovin_publisher
- All other fields are stored
5.4 Data integration configuration template
After reading the documentation above, we recommend that you fill in the following template and send it to your customer success manager at ThinkingAI:
Interface: Basic Reporting API
--------
Company name: XXX
AE project environment: (SAAS/on-premises)
AE project name: XXX
AE project APP ID: XXX
Data receiving URL push_url: XXX
---------
AppLovin api_key (that is, Report Key): XXX
Data type to pull: [advertiser/publisher]
Fields to pull: XXX, XXX
Time range for historical data pull: yyyy/mm/dd - yyyy/mm/dd (only data from the last 45 days can be pulled)
Scheduled pull: pull the previous day's data at X:00 every day
5.5 Data validation
On the Management > Events page or the SQL IDE page in the AE system backend, search for the following events to check whether they have been ingested:
- Advertiser report data: applovin_advertiser
- Publisher report data: applovin_publisher
6. Revenue Reporting API
Basic interface information
| Interface | API type | Productized | Data granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|---|
| Revenue Reporting API | Pull | No | Aggregated data | Yes | Yes |
AppLovin also provides an aggregated metrics API dedicated to Max monetization: the Revenue Reporting API.
6.1 API parameters
- API Key:
- Provide the API Key (that is, the Report Key) used to pull reports. You can get it on the Keys tab in the AppLovin dashboard
- Time:
- Data is pulled by UTC day, and only data from the last 45 days can be pulled
- Filter:
- You can filter on metric fields, for example, to get data with more than 500 clicks, similar to the having logic in SQL
6.2 Included fields
The following are the fields returned by the report. You can choose the fields to return as needed
| Field | Default | Description | Sample |
|---|---|---|---|
| ad_format | Yes | Ad type | INTER, BANNER, REWARD |
| ad_unit_waterfall_name | Yes | Name of the ad Waterfall | LAT |
| application | Yes | App name | My App |
| attempts | Yes | Number of ad attempts on the Ad Network (available only when network or network_placement is among the group-by fields to pull; unavailable when max_placement is present) | 41734 |
| country | Yes | Two-letter Country Code | gb |
| custom_network_name | Yes | Custom Ad Network name | Custom Network |
| day | Yes | Date of the ad impression | 2019-07-29 |
| device_type | Yes | Device Type | PHONE, TABLET |
| ecpm | Yes | Estimated eCPM (USD) | 8.47 |
| estimated_revenue | Yes | Estimated total revenue (USD) | 245.12 |
fill_rate | Yes | Ad fill rate = ad responses / attempts (available only when network or network_placement is among the group-by fields to pull; unavailable when max_placement is present) | .8512 |
has_idfa | Yes | Whether the user's advertising ID can be obtained. The value is 0 if the user has enabled LAT or has turned off data tracking in a region where GDPR applies; otherwise, it is 1 | 1 |
| hour | Yes | Hour value of the report (this field exists only when you pull data for the last 30 days) | 20:00 |
| impressions | Yes | Number of ad impressions | 28942 |
| max_ad_unit | Yes | MAX ad name | My%20App%20Banners |
| max_ad_unit_id | Yes | MAX ad ID | 9ad0816ac071552a |
| max_ad_unit_test | Yes | Name of the ad test group | Control |
| max_placement | Placement name customized in the SDK | Launch%20Screen | |
| network | Yes | The Ad Network that displayed the ad | For possible values, see (MAX Mediation Documentation (applovin.com)) APPLOVIN_NETWORK |
| network_placement | Yes | Placement name of the Ad Network | MY_NATIVE_PLACEMENT |
| package_name | Yes | Package name: the App Package Name on Android and the Bundle ID (iOS) on iOS | com.test.app |
| platform | Yes | Platform | android, ios |
| requests | Number of ad requests (unavailable when network, network_placement, or max_placement is present) | 45651 | |
| responses | Yes | Number of ad responses (available only when network or network_placement is among the group-by fields to pull; unavailable when max_placement is present) | 39841 |
| store_id | App store ID of the promoted app: package name on Android, numeric part of the iTunes ID on iOS | 1207472156 |
6.3 Ingestion rules
By default, we write the pulled data to the AE project as events:
- Because Revenue Reporting API returns aggregated data, we use a fixed value as its user identifier. You can think of all the data as attached to one virtual user
- When the hour field does not exist (that is, for data older than 30 days), the day field in the data, that is, the date of the data, is set as the #event_time of the aggregated data. When hour exists, the day and hour fields are combined into the #event_time of the aggregated data
- The event name is applovin_maxreport
- All other fields are stored
6.4 Data integration configuration template
After reading the documentation above, we recommend that you fill in the following template and send it to your customer success manager at ThinkingAI:
Interface: Revenue Reporting API
--------
Company name: XXX
AE project environment: (SAAS/on-premises)
AE project name: XXX
AE project APP ID: XXX
Data receiving URL push_url: XXX
---------
AppLovin api_key (that is, Report Key): XXX
Time range for historical data pull: yyyy/mm/dd - yyyy/mm/dd (only data from the last 45 days can be pulled)
Fields to pull: XXX, XXX
Scheduled pull: pull the previous day's data at X:00 every day
7. Probabilistic Report
Basic interface information
| Interface | API type | Productized | Data granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|---|
| Probabilistic Report | Pull | No | Aggregated data | Yes | Yes | Yes | Yes |
Probabilistic Report is similar to Basic Reporting API. The main differences are:
- Only advertiser report data is supported; publisher reports are not supported
- Install- and cost-related metrics are all based on estimated install data
7.1 API parameters
- API Key:
- Provide the API Key (that is, the Report Key) used to pull reports. You can get it on the Keys tab in the AppLovin dashboard
- Time:
- Data is pulled by UTC day, and only data from the last 45 days can be pulled
- Filter:
- You can filter on metric fields, for example, to get data with more than 500 clicks, similar to the having logic in SQL
7.2 Included fields
The following are the fields returned by the advertiser report. You can choose the fields to return as needed
| Field name | Default | Description |
|---|---|---|
| day | Yes | Date of the report |
| impressions | Yes | Impressions |
| clicks | Yes | Clicks |
| ctr | Yes | Click-through rate |
| conversions | Yes | Conversions (that is, installs) |
| conversion_rate | Yes | Conversion rate (installs / clicks) |
| average_cpa | Yes | Average CPA (install) |
| average_cpc | Yes | Average CPC |
| ad | Yes | Ad name |
| country | Yes | Two-letter Country Code |
| campaign | Yes | Campaign name |
| app_id_external | Yes | Hashed app ID |
| external_placement_id | Encoded app ID | |
| traffic_source | Yes | Traffic source: AppLovin or the name of another exchange |
| ad_type | Yes | Ad type, such as GRAPHIC, VIDEO, REWARD, or PLAY |
| cost | Yes | Ad cost |
| sales | Yes | Number of in-app purchases (requires the Revenue callback) |
| first_purchase | Number of users with a first in-app purchase (requires the Revenue callback) | |
| size | Yes | Ad size, such as INTER, BANNER, MREC, LEADER, or NATIVE |
| device_type | Yes | Device type, such as phone, tablet, or other |
| platform | Yes | Device platform, such as android, ios, fireos, tvos |
| campaign_package_name | Yes | Package name of the promoted app: package name on Android, Bundle ID on iOS |
| campaign_store_id | App store ID of the promoted app: package name on Android, numeric part of the iTunes ID on iOS | |
| campaign_id_external | Yes | Unique identifier of the campaign |
| campaign_ad_type | Yes | ua for a User Acquisition Campaign; rt for a Retargeting Campaign |
| application | Name of the promoted app |
7.3 Ingestion rules
By default, we write the pulled data to the AE project as events:
- Because Probabilistic Report returns aggregated data, we use a fixed value as its user identifier. You can think of all the data as attached to one virtual user
- The day field in the data, that is, the date of the data, is set as the #event_time of the aggregated data
- The event name is applovin_prob_advertiser
- All other fields are stored
7.4 Data integration configuration template
After reading the documentation above, we recommend that you fill in the following template and send it to your customer success manager at ThinkingAI:
Interface: Probabilistic Report
--------
Company name: XXX
AE project environment: (SAAS/on-premises)
AE project name: XXX
AE project APP ID: XXX
Data receiving URL push_url: XXX
---------
AppLovin api_key (that is, Report Key): XXX
Fields to pull: XXX, XXX (leave blank to use the default fields)
Time range for historical data pull: yyyy/mm/dd - yyyy/mm/dd (only data from the last 45 days can be pulled)
Scheduled pull: pull the previous day's data at X:00 every day

