Airbridge Actuals Report
Note that data generated by third-party data integration counts toward the cluster's data consumption
Summary
Interface overview
| Interface | Type | Granularity | Attribution | Cost | Revenue | Impressions | Clicks | Conversions |
|---|---|---|---|---|---|---|---|---|
| Actuals Report | API | Aggregated metrics | ✅ | ✅ | ✅ | ✅ |
Airbridge Actuals Report provides aggregated report data, including metrics such as cost, impressions, clicks, and conversions. This integration plan pulls Airbridge report data on a schedule in the AE backend. The API uses an asynchronous task mode: AE first creates a report task, then polls the task status, and reads the results page by page after the task completes.
Integration process
- Get the authorization information
app_nameandapi_tokenin the Airbridge dashboard - Log in to the AE backend, go to the Third-party Integration module, add an Airbridge Actuals Report plan, and complete the related configuration
- Check whether the AE system receives the data successfully, and build reports
1. Get Airbridge authorization information
Before you use Airbridge Actuals Report, prepare the following authorization information.
| Authorization information | Required | Description |
|---|---|---|
| app_name | Yes | Airbridge app name, used to build the API request path |
| api_token | Yes | Airbridge API call credential |
2. Plan configuration
After getting the Airbridge authorization information, log in to the AE system and configure the new plan in the Third-party Integration module. The image below shows the configuration page of Airbridge Actuals Report. Follow this section to create the plan:
2.1 Authorization information configuration
In Authorization Information, enter the app_name and api_token obtained from Airbridge.
2.2 Sync Schedule
You can configure how often the plan pulls data on a schedule. Once this is enabled, the AE system starts Actuals Report data retrieval tasks in Airbridge at the configured interval.
Airbridge Actuals Report can pull data from a time range of up to the past 1000 days, and a single pull covers up to 400 days.
2.3 Event Data Configuration
You can control whether the data is written as events. After you turn on the Event Data Configuration switch, the AE system writes the aggregated data pulled from Airbridge Actuals Report to the event table.
We recommend that you enable event data ingestion. If you turn off this setting, the pulled data is not written to the event table and cannot be used in Events Analysis later.
2.4 Configuration
Configuration defines how data is retrieved from Airbridge Actuals Report and how it is stored, including metrics, dimensions, time granularity, date range, the event name after ingestion, and extended parameters.
The content of the configuration is a JSON, which you can customize as follows:
| Module | Name | Required | Description |
|---|---|---|---|
source | metrics | Yes | List of metrics to pull |
| group_by | Yes | Dimensions by which data is aggregated | |
| time_granularity | Yes | Time granularity; currently only day is supported | |
| Root configuration | date_range | Yes | Date range of each pull |
| sink_event | event_name | Yes | Event name after ingestion; customizable |
| extra_params | filters | No | Airbridge filter conditions |
| sorts | No | Airbridge sort conditions |
{
"source": {
"metrics": [
"app_events",
"app_installs",
"impressions",
"impressions_channel",
"clicks_channel",
"cost_channel"
],
"group_by": [
"ad_account_id",
"campaign_id",
"ad_group_id",
"ad_creative_id",
"event_date",
"channel"
],
"time_granularity": "day"
},
"date_range": "0,1",
"sink_event": {
"event_tracking": true,
"event_name": "airbridge_event_data"
},
"extra_params": {}
}
2.4.1 Metric configuration
metrics configures the Airbridge metrics to pull. Common metrics include event count, install count, impression count, click count, cost, and revenue.
| Metric field | Description | Description |
|---|---|---|
| app_events | Number of in-app events | In sample configuration |
| app_installs | Number of app installs | In sample configuration |
| impressions | Number of impressions | In sample configuration |
| impressions_channel | Channel impressions | In sample configuration |
| clicks_channel | Channel clicks | In sample configuration |
| cost_channel | Channel cost | In sample configuration |
| app_total_revenue | Total app revenue | Optional |
2.4.2 Group-by dimensions
group_by configures the aggregation dimensions of the report. groupBys in the Airbridge response is returned in the order of group_by in the request.
| Group-by dimension | Ingested field name | Type | Description | Remarks |
|---|---|---|---|---|
| ad_account_id | ad_account_id | String | In sample configuration | Ad account ID |
| campaign_id | campaign_id | String | In sample configuration | Campaign ID |
| ad_group_id | ad_group_id | String | In sample configuration | Ad group ID |
| ad_creative_id | ad_creative_id | String | In sample configuration | Ad creative ID |
| event_date | event_date | Date | In sample configuration | Data date |
| channel | channel | String | In sample configuration | Channel |
| platform | platform | String | Optional | Platform |
| event_type | event_type | String | Optional | Event type |
| event_source | event_source | String | Optional | Event source |
| event_category | event_category | String | Optional | Event category |
Do not change the order of
group_byduring parsing or ingestion. If the order changes, dimension values may be misaligned.
2.4.3 Extended parameters
Airbridge Actuals Report supports filtering and sorting. You can configure filters and sorts in extra_params.
| Config items | Required | Description |
|---|---|---|
| extra_params.filters | No | Filter conditions; dimension must be in source.group_by |
| extra_params.sorts | No | Sort conditions; fieldName must be in source.group_by or source.metrics |
Configuration example:
{
"extra_params": {
"filters": [
{
"dimension": "channel",
"filterType": "IN",
"values": [
"App"
]
}
],
"sorts": [
{
"fieldName": "event_date",
"isAscending": true
}
]
}
}
2.5 Configuration limits
| Module | Limit | Rule |
|---|---|---|
| Sync Schedule | Time window per query | Up to 400 days |
| Query time range | Up to 1000 days | |
| Configuration | source.group_by | Up to 10 |
| source.metrics | Up to 20 | |
| extra_params.filters[].dimension | Must be in source.group_by | |
| extra_params.sorts[].fieldName | Must be in source.group_by or source.metrics |
2.6 Event ingestion rules
The report results of Airbridge Actuals Report are not flat field objects. Instead, they consist of groupBys and values.
- Because Actuals Report returns aggregated data, a fixed value is used as the user identifier. You can think of all data as attached to one virtual user.
- The
event_datefield in the data, that is, the data date, is set as the#event_timeof the aggregated data. - The event name used in the template is
airbridge_event_data. To change it, modifysink_event.event_name. groupBysis returned in the order ofsource.group_byin the request.- During ingestion, the values in the
groupBysarray are written to the corresponding dimension fields in the same order. values.<metric>.valueis written to event properties as the metric value.- All other recognizable metric and dimension fields are stored.
- If a metric returns
isMasked=true, the metric value has been masked or hidden by Airbridge. Keep this in mind during analysis. - If
notificationsexists in the response, Airbridge has added notices to or processed the aggregated results. We recommend that you refer to it when you troubleshoot data discrepancies.
Example:
{
"groupBys": [
"2026-06-02",
"facebook.business",
"120239009297780452"
],
"values": {
"app_events": {
"value": 2,
"isMasked": false
}
}
}
If group_by in the request is ["event_date", "channel", "campaign_id"], the above data is mapped as follows:
| Ingested field | Ingested value |
|---|---|
| event_date | 2026-06-02 |
| channel | facebook.business |
| campaign_id | 120239009297780452 |
| app_events | 2 |
2.7 Standardized fields
Airbridge fields can be standardized based on the AE system's standard ad object te_ads_object, but the final mapping must be confirmed against the semantics of the Airbridge fields and the AE system's common field definitions before it is published.
| Original field | Standardized field | Description |
|---|---|---|
| ad_account_id | te_ads_object.ad_account_id | Ad account ID |
| campaign_id | te_ads_object.campaign_id | Campaign ID |
| campaign | te_ads_object.campaign_name | Campaign name |
| ad_group_id | te_ads_object.ad_group_id | Ad group ID |
| ad_group | te_ads_object.ad_group_name | Ad group name |
| ad_creative_id | te_ads_object.ad_id | Ad ID |
| ad_creative | te_ads_object.ad_name | Ad name |
| channel | te_ads_object.media_source | Media source |
| platform | te_ads_object.platform | Platform |
| country | te_ads_object.country | Country/Region |
| currency | te_ads_object.currency | Currency |
| agency_of_the_tracking_link_creator | te_ads_object.agency | Agency |
| app_package_name | te_ads_object.app_id | App ID |
| airbridge_app_name | te_ads_object.app_name | App name |
| impressions_channel | te_ads_object.impressions | Impressions |
| clicks_channel | te_ads_object.clicks | Clicks |
| cost_channel | te_ads_object.cost | Ad cost |
| app_installs | te_ads_object.installs | Install |
3. Next steps
3.1 Check data ingestion
After you save and enable the plan, you can check in the AE system whether data has been stored for the event specified by sink_event.event_name.
3.2 Pull data once
To backfill data for a specific date range as a one-off, use the single pull feature. Backfills are still subject to the date range limits of Airbridge Actuals Report.
The date range of a single backfill cannot exceed 400 days.
3.3 Troubleshoot data discrepancies
If the data in the AE system is inconsistent with what the Airbridge dashboard shows, check the following settings first:
- Whether
date_rangeand the pull time zone match the calculation basis of the Airbridge report. - Whether
metricsandgroup_bymatch the selections in the Airbridge dashboard report. - Whether
filtersandsortsaffect the returned results. - Whether all paginated results have been read.
- Whether
isMasked=trueornotificationsexists in the returned results.

