跳到主要内容

AppsFlyer 数据集成解决方案

最近更新 2026/10/05

最近更新日期:2023-04-04

一、集成方案介绍​

提示

请注意,第三方数据集成产生的数据会被纳入集群的消耗数据量

概要​

本文介绍如何将 AppsFlyer 的数据回传到 Agentic Engine(后文简称 AE 系统) ,本方案支持 AppsFlyer 的多种数据集成方法,以下表格展示了各种数据集成方法的特性以及数据类型,您可以点击标题跳转至方案的对应章节:

接口数据粒度API 类型产品化数据更新频率请求次数限制

Push API 用户数据

用户级别

推式

是

实时

无限制

Pull API 用户级别数据接口

用户级别

拉式

否

实时

  • 每次请求最多 1M 行
  • 每个 APP 每天最多 24 次请求
  • 每天每个账户最多 120 次请求

Pull API 聚合数据

聚合数据

拉式

否

实时

  • 每分钟最多请求 1 次
  • 拉取时间范围 0-2 天内:无限制
  • 拉取时间范围 3 天或以上:
    • 每个 APP 每天最多 24 次请求
    • 每天每个账户最多 120 次请求

Master API

聚合数据拉式

否

按天

  • 每次请求不限行
  • 每天请求次数不限

Cohort API

聚合数据拉式否按天

无限制

Data Locker用户级别 / 聚合数据拉式-按天/小时根据转存云存储的限制
警告

注意,部分平台会限制用户级别数据的部分字段回传,包括归因信息、收益数据与成本数据等

提示

部分接口为 AppsFlyer 的收费功能,在使用前请咨询您在 AppsFlyer 的客户经理了解接口的使用权限。

二、Push API 用户级别数据接口(已产品化)​

接口基本信息

接口名API 类型产品化数据粒度归因数据成本数据收益数据展示数据点击数据转化数据
Push API推式是用户级别是是是是是

Push API 可以实时获取 AppsFlyer 的用户级别数据,其中包括了展示、点击、激活、收益数据等。成本数据由于 AF 平台的数据限制,可能无法获取。

提示

注意 Push API 集成已经在 AE 系统后台产品化,建议参考相关产品文档进行界面化集成配置。

在接入 Push API 用户级别数据前,请确保您已经阅读 AE 系统用户识别规则,并理解 AE 系统如何通过 #distinct_id 和 #account_id 识别一个用户。AppsFlyer Push API 接口的数据集成流程如下图:

查看原图

2.1 客户端 SDK 设置​

如果要将 Push API 的用户级别数据与 AE 项目的用户数据进行打通,就需要在 AppsFlyer SDK 中上报 AE 项目的账号 ID 与访客 ID,以下是客户端 SDK 的设置方法。

方案一(自动集成):

提示

如果您接入的 AE SDK 版本为 2.8.0~2.8.1 ,可以直接使用本方案

如果您接入的 AE SDK 版本为 2.8.2 及以上 ,您还需要安装三方数据插件

本方案是自动集成方案,请在初始化 AE 客户端 SDK 后调用以下代码开启,详情请参考安卓 SDK 三方数据 与 iOS SDK 三方数据

// 初始化 AE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);

// 开启 AE SDK 的 AppsFlyer ID 关联功能
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);

// 强烈建议您使用 setCustomerUserId() 再设置一遍访客 ID
String distinctId = instance.getDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);

// 初始化 AppsFlyer SDK
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);

// 在调用 AE SDK 的 login 设置账号 ID 后,需要再次向 AF SDK 同步数据
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);

如果调用了 AE SDK 的 login() 方法或者 identify() 方法,需要再次调用 enableThirdPartySharing() 同步数据。

注意:如果您也需要调用 AppsFlyer SDK 的 setAdditionalData() 方法,由于该方法调用多次,会覆盖之前的参数,因此可以将参数传递给 AE SDK,AE SDK 内部会将参数进行拼接合并。

Map<String, Object> additionalData = new HashMap<>();
additionalData.put("af_test_key1", "test1");
additionalData.put("af_test_key2", "test2");
instance.enableThirdPartySharing(
TDThirdPartyShareType.TD_APPS_FLYER,
additionalData
);

本方案的原理就是内部自动调用 AppsFlyer 的 setAdditionalData() 方法,传入 AE 项目的访客 ID 与账号 ID。

方案二(手动集成):

手动集成方案,需要您在 AppsFlyer SDK 中使用 setAdditionalData 配置 AE 项目的访客 ID 与账号 ID, 以下是 Java 的代码样例:

// 初始化 AE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);

// 获取 AE 的访客 ID, 对应 AE 中的 #distinct_id
String distinctId = instance.getDistinctId();

// 将访客 ID 通过 setAdditionalData() 设置到 AF SDK
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

// 强烈建议您使用 setCustomerUserId() 再设置一遍访客 ID
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);

// 初始化 AppsFlyer SDK
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
...

// 在调用 AE SDK 的 login 设置账号 ID 后,需要再次向 AF SDK 同步数据
String accountId = "your_account_id";
instance.login(accountId);
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id", distinctId);
CustomDataMap.put("ta_account_id",accountId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

经过以上设置后,回传数据中的custom_data 将带有 ta_distinct_id、ta_account_id 这两个字段,customer_user_id 则等于访客 ID。

注意:如果您使用产品化配置方法接入 AppsFlyer Push API 的数据,则需要在关联字段处填写:

  • 账号 ID 关联字段:custom_data.ta_account_id
  • 访客 ID 关联字段:customer_user_id,custom_data.ta_distinct_id

2.2 配置回传地址​

接下来使用管理员账号登录 AppsFlyer 后台,在「Integration」- 「API Access」找到 Push API 部分,按照以下方法设置回调地址:

  • 回传 API 版本(Push API Version)

    • 请选择 2.0 版本
  • HTTP 请求方法(HTTP method)

    • AE 系统同时支持 POST 和 GET 方式回传,我们建议选择 POST 方式
  • 终端地址(Endpoint URL)

    • AE 工作人员将向您提供数据终端接收地址
  • 事件信息类型 (Event Messages)

    • 您至少需要选中激活 (Install) 和激活应用内事件 (Install in-app events) 。如果您还有其他需要回传的事件数据,可以按需勾选
  • 回传字段 (Message Fields)

    • 消息字段至少要包括以下信息:

      • 移动归因相关字段:media_source、channel、af_adset、af_ad 等
      • 用户识别 ID 相关字段:custom_data、customer_user_id、event_value 等
      • 需要作为事件属性或者用户属性的字段
      • 事件相关字段:event_time_selected_timezone
  • 回传的应用内事件(In-app events)

    • 按需选择回传的事件,例如客户端上报的 ta_registration 事件
警告

注意,如果需要 Facebook 的数据,您需要在 AF 后台 Facebook 渠道设置中同意 Facebook 数据使用协议 (Terms of Service),否则无法获取 Facebook 的用户级别数据。

2.3 数据入库​

2.3.1 用户识别规则​

根据之前客户端 SDK 设置的用户识别字段的逻辑,您需要确定相应的用户识别规则,使 Push API 回传的用户粒度数据能够关联在 AE 项目中的对应用户身上。

在默认情况下,我们会在回传数据中根据以下规则寻找用户标识字段:

  • Step 1: 检查 custom_data 字段是否包含 ta_account_id / ta_distinct_id,即 setAdditionalData() 设置的字段
  • Step 2: 检查 event_value 字段是否包含 ta_account_id / ta_distinct_id,即 AppsFlyer 自定义事件设置的字段
  • Step 3: 如果事件为 Install 事件(event_name: install),则会检查 customer_user_id 字段,如有,则将 customer_user_id 作为 #distinct_id,即 setCustomerUserId() 设置的字段

在每一步骤中,如果能获取到任一有效的 ID,则停止后续步骤的检查。如果经过全部 3 个步骤的确认,仍然无法获得有效用户 ID。在默认情况下,该条数据将被视作无效数据,直接丢弃。如果您希望保留这些数据,可以联系 AE 工作人员进行配置,这些数据将会记录在事件表中,访客 ID 为固定值 -- "without_id",且这些数据不会进行接下来的用户属性入库

如果您设置的用户识别字段与上述不同,请在数据集成配置信息模板中记录下来。

2.3.2 数据入库规则​

默认情况下,回传的数据不会写成事件数据,如果您需要将其写为事件数据,则所有接收到的事件都将写为事件数据,以下是事件数据的入库规则:

  • 根据用户识别规则,将事件数据归在对应的 AE 用户身上
  • 使用数据中的 event_time_selected_timezone 字段,取其中的时间和时区信息,时间作为 #event_time,时区写为 #zone_offset。如果该字段为空,则取 event_time 作为 #event_time,时区 #zone_offset 会被设置为 0
  • 数据事件名为该事件在 AppsFlyer 中的事件名
  • 其余字段都将会入库

2.3.3 用户属性入库配置​

在默认情况下,我们会从数据中读取以下四个字段的值,并将其设置为用户属性:

AppsFlyer 字段AE 标准化字段说明
media_sourcete_ads_object.media_source渠道
campaignte_ads_object.campaign_name广告系列
af_adsette_ads_object.ad_group_name广告组
af_adte_ads_object.ad_name广告

除此之外,您还可以自定义需要入库的用户属性,包括用户属性的入库规则(即使用 user_set 还是 user_setOnce),如果您需要进行用户属性的自定义,请在数据集成配置信息模板中记录下来。

2.4 数据集成配置信息模板​

在阅读完以上文档之后,建议您完成以下信息模板,并发送给您在 ThinkingAI 的客户成功经理:

接口:AppsFlyer Push API
--------
公司名称:XXX
AE 项目环境:(SAAS/私有化)
AE 项目名称:XXX
AE 项目 APP ID: XXX
数据接收地址 push_url: XXX
---------
用户识别规则:XXX 作为 访客 ID/账号 ID(不填则为默认)
是否入库事件:否/是
是否保留未获取用户识别 ID 的数据:否/是(只有入库事件时才会有效)
入库用户属性:XXX,XXX(不填则为默认)

三、Pull API 用户级别数据​

接口基本信息

接口名API 类型产品化数据粒度归因数据成本数据收益数据展示数据点击数据转化数据
Pull API Raw Data拉式否用户级别是是是是

Pull API Raw Data 是拉取式的用户级别数据接口,非常适合拉取用户粒度的历史数据。

3.1 接入前准备工作​

3.1.1 获取 API Token​

请您登录管理员账号,并在 AppsFlyer 侧边栏菜单中找到「API Access」,并且获取用于 Pull API Raw Data 的 V2.0 API Token。

3.1.2 获取 App ID​

可以在 AppsFlyer 后台「My Apps」找到您的应用的 App ID,安卓端以com.开头,如 com.demoapp.ta,iOS 以id开头,如id12345678

3.1.3 客户端 SDK 设置​

如果要将 Pull API 用户级别数据与 AE 项目的用户数据进行打通,就需要在 AppsFlyer SDK 中上报 AE 项目的账号 ID 与访客 ID,以下是客户端 SDK 的设置方法。

方案一(自动集成):

提示

如果您接入的 AE SDK 版本为 2.8.0~2.8.1 ,可以直接使用本方案

如果您接入的 AE SDK 版本为 2.8.2 及以上 ,您还需要安装三方数据插件

本方案是自动集成方案,请在初始化 AE 客户端 SDK 后调用以下代码开启,详情请参考安卓 SDK 三方数据 与 iOS SDK 三方数据

// 初始化 AE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// 开启 AppsFlyer id关联
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);

// 初始化 AppsFlyer SDK
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);

// 强烈建议您使用 setCustomerUserId() 再设置一遍访客 ID
String distinctId = instance.getDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);

// 在调用 login 设置账号 ID 后需要再次同步数据(可选)
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);

如果调用了 AE SDK 的 login() 方法或者 identify() 方法,需要再次调用 enableThirdPartySharing() 同步数据。

注意:如果您也需要调用 AppsFlyer SDK 的 setAdditionalData() 方法,由于该方法调用多次,会覆盖之前的参数,因此可以将参数传递给 AE SDK,AE SDK 内部会将参数进行拼接合并。

Map<String, Object> additionalData = new HashMap<>();
additionalData.put("af_test_key1", "test1");
additionalData.put("af_test_key2", "test2");
instance.enableThirdPartySharing(
TDThirdPartyShareType.TD_APPS_FLYER,
additionalData
);

本方案的原理就是内部自动调用 AppsFlyer 的 setAdditionalData() 方法,传入 AE 项目的访客 ID 与账号 ID。

方案二(手动集成):

手动集成方案,需要您在 AppsFlyer SDK 中使用 setAdditionalData 配置 AE 项目的访客 ID 与账号 ID, 以下是 Java 的代码样例:

// 初始化 AE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);

// 获取 AE 的访客 ID, 对应 AE 中的 #distinct_id
String distinctId = instance.getDistinctId();
// 您的账号 ID (或 角色 ID),对应 AE 中的 #account_id
String accountId = "your_account_id";

// 激活时部署
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

// 强烈建议您使用 setCustomerUserId() 再设置一遍访客 ID
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
...

// 注册时部署
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id", distinctId);
CustomDataMap.put("ta_account_id",accountId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

经过以上设置后,回传数据中的custom_data 将带有 ta_distinct_id、ta_account_id 这两个字段,customer_user_id 则等于访客 ID。

3.2 涵盖字段​

默认情况下 Pull API Raw Data 支持拉取以下数据:

字段中文名默认获取类型
Attributed Touch Type归因类型(曝光、点击)是
Attributed Touch Time归因时间是时间
Install Time激活时间是时间
Event Time事件时间是时间
Event Name事件名称是
Event Value事件值是
Event Revenue事件收益是数值
Event Revenue Currency事件收益货币类型是
Event Revenue USD事件收益(USD)是数值
Event Source事件来源是
Is Receipt Validated是否开启验证接收
Partner合作伙伴是
Media Source媒体渠道是
Channel子渠道是
Keywords关键词是
Campaign广告计划名称是
Campaign ID广告计划 ID是
Adset广告组名称是
Adset ID广告组 ID是
Ad广告素材名称是
Ad ID广告素材 ID是
Ad Type广告类型是
Site ID站点 ID是
Sub Site ID子站点 ID是
Sub Param [1-5]子参数 [1-5]
Cost Model成本模型 (CPC/CPI/CPM/Other)是
Cost Value成本值是数值
Cost Currency成本货币类型是
Contributor [1-3] Partner贡献者 [1-3] 合作伙伴
Contributor [1-3] Media Source贡献者 [1-3] 媒体渠道
Contributor [1-3] Campaign贡献者 [1-3] 广告计划
Contributor [1-3] Touch Type贡献者 [1-3] 归因类型
Contributor [1-3] Touch Time贡献者 [1-3] 归因时间时间
Region地区是
Country Code国家代码是
State州/省是
City城市是
Postal Code邮政编码
DMADMA码
IPIP地址是
WIFI是否开启WI-FI是
Operator移动运营商是
Carrier手机运营商是
Language语言是
AppsFlyer IDAppsFlyer ID是
Advertising IDAdvertising ID是
IDFAIDFA是
Android IDAndroid ID是
Customer User IDCustomer User ID是
IMEIIMEI是
IDFVIDFV是
Platform平台是
Device Type设备类型是
OS Version操作系统是
App Version应用版本是
SDK VersionSDK 版本是
App IDApp ID是
App Name应用名称是
Bundle IDBundle ID是
Is Retargeting是否再营销是
Retargeting Conversion Type再营销转化类型是
Attribution Lookback归因 Lookback
Reengagement Window再互动窗口
Is Primary Attribution是主归因
User Agent用户代理
HTTP ReferrerHTTP Referrer
Original URL原始 URL是

3.3 接口参数​

  • 时间:

    • 拉取以日为时间单位的数据(仅支持拉取近 90 天的数据)
    • 默认的数据时区为 UTC 时间

3.4 数据入库规则​

Pull API 用户级别数据接口会入库多种数据,每种数据的处理规则如下:

  • Installs 数据

    • 拉取仅包含 user acquisition(UA)的 Installs 数据以及 Organic Installs 数据
    • 数据默认以用户属性形式写入
    • 支持以事件形式写入,事件名为 af_install
    • 以用户识别字段配置来确定用户识别字段,如果没有配置用户识别规则,默认取数据中的 customer_user_id 作为访客 ID。没有获取到用户识别字段,则该条数据将会被抛弃。
    • 所有字段均会入库
  • Ad Revenue

    • 拉取 Attributed ad revenue、Organic ad revenue,其中 Attributed ad revenue 会同时拉取 user acquisition(UA)和 retargeting 数据
    • 数据将以事件形式写入,事件名为 af_ad_revenue_raw
    • 以数据中的 Event Time ,即事件发生时刻,作为事件的 #event_time
    • 以用户识别字段配置来确定用户识别字段,如果没有配置用户识别规则,默认取数据中的 customer_user_id 作为访客 ID。没有获取到用户识别字段,则该条数据将会被抛弃。
    • 所有字段均会入库

3.5 数据集成配置信息模板​

在阅读完以上文档之后,建议您完成以下信息模板,并发送给您在 ThinkingAI 的客户成功经理:

接口:AppsFlyer Pull API Raw Data
--------
公司名称:XXX
AE 项目环境:(SAAS/私有化)
AE 项目名称:XXX
AE 项目 APP ID: XXX
数据接收地址 push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
用户识别规则:XXX 作为 访客 ID/账号 ID(不填则为默认)
接入的数据:Install、Ad Revenue
写入用户属性的 Install 事件的属性:xxx,xxx(不填则为默认)

历史数据拉取时间范围:yyyy/mm/dd - yyyy/mm/dd(仅支持拉取近 90 天的数据)
定时拉取:每天 X 点拉取前一天的数据

四、Pull API 聚合指标接口​

接口基本信息

接口名API 类型产品化数据粒度归因数据成本数据收益数据展示数据点击数据转化数据
Pull API 聚合指标拉式否聚合数据是是是是是

AppsFlyer Pull API 聚合指标接口提供了不同类型的聚合指标数据,目前 AE 系统支持的数据类型有 Partners (by date) 与 Geo (by date)。

4.1 接入前准备工作​

4.1.1 获取 API Token​

请您登录管理员账号,并在 AppsFlyer 侧边栏菜单中找到「API Access」,并且获取用于 Pull API 的 V2.0 API Token。

4.1.2 获取 App ID​

可以在 AppsFlyer 后台「My Apps」找到您的应用的 App ID,安卓端以com.开头,如 com.demoapp.ta,iOS 以id开头,如id12345678

4.2 涵盖字段​

4.2.1 Partner (by date) 数据​

本节介绍的是 Partner (by date) 类型的数据,该报告基于 LTV 数据,即拉取指定时间段内安装的新用户的后续数据。

由于 Facebook 的数据格式与其他媒体渠道的格式不同,因此 AE 系统会分别拉取仅有 Facebook 数据与所有平台数据,以下是 Partner (by date) 能够获取到的字段:

字段名入库名仅 Facebook 数据全平台数据
Date#event_time✓✓
Agency/PMD (af_prt)agency_pmd_af_prt✓✓
Media Source (pid)media_source_pid✓✓
Campaign

campaign_name(Facebook)

campaign_c(全平台)

✓✓
Campaign IDcampaign_id

✓

Adgroup IDadgroup_id✓
Adgroup Nameadgroup_name✓
Adset IDadset_id✓
Adset Nameadset_name✓
ARPUarpu✓✓
Average eCPIaverage_ecpi✓✓
Clicksclicks✓✓
Conversion Rateconversion_rate✓✓
CTRctr✓✓
{your event name}(Unique users){your_event_name}_unique_users✓✓
{your event name} (Event counter){your_event_name}_event_counter✓✓
{your event name} (Sales in XXX){your_event_name}_sales_in_usd✓✓
Impressionsimpressions✓✓
Installsinstalls✓✓
Loyal Usersloyal_users✓✓
Loyal Users/Installsloyal_users_installs✓✓
ROIroi✓✓
Sessionssessions✓✓
Total Costtotal_cost✓✓
Total revenuetotal_revenue

✓

✓

4.2.2 Geo (by date) 数据​

本节介绍的是 Geo (by date) 类型的数据,该报告基于 LTV 数据,即拉取指定时间段内安装的新用户的后续数据。

由于 Facebook 的数据格式与其他媒体渠道的格式不同,因此 AE 系统会分别拉取仅有 Facebook 数据与所有平台数据,以下是 Geo (by date) 能够获取到的字段:

字段名入库名仅 Facebook 数据全平台数据
Countrycountry✓✓
Date#event_time✓✓
Agency/PMD (af_prt)agency_pmd_af_prt✓✓
Media Source (pid)media_source_pid✓✓

Campaign

campaign_name(Facebook)

campaign_c(全平台)

✓

✓
Campaign IDcampaign_id✓
Adgroupadgroup_id✓
Adgroup Nameadgroup_name✓
Adset IDadset_id✓
Adset Nameadset_name✓
ARPUarpu✓✓
Clicksclicks✓✓
Conversion Rateconversion_rate✓✓
{your event name}(Unique users){your_event_name}_unique_users✓✓
{your event name} (Event counter){your_event_name}_event_counter✓✓
{your event name} (Sales in XXX){your_event_name}_sales_in_usd✓✓
Installsinstalls✓✓
Loyal Usersloyal_users✓✓

Sessions

sessions✓✓

Total revenue

total_revenue

✓

✓

4.3 接口参数​

  • 时间:

    • 拉取以日为时间单位的数据
    • 默认的数据时区为 UTC 时间

4.4 数据入库规则​

默认情况下,我们会将拉取的数据以事件形式写入 AE 项目中:

  • 由于 Pull API 聚合指标接口返回的是聚合数据,因此我们将使用一个固定值作为其用户标识,您可以认为所有数据挂载在一个虚拟用户上

  • 使用数据中的 Date 字段,即用户的安装日期,作为事件的 #event_time

  • 数据事件名为:

    • Partner (by date)

      • appsflyer_facebook_partner_by_date(Facebook 数据)
      • appsflyer_partner_by_date(全平台数据)
    • Geo (by date)

      • appsflyer_facebook_geo_by_date(Facebook 数据)
      • appsflyer_geo_by_date(全平台数据)
  • 其他字段将全数入库

4.5 数据集成配置信息模板​

在阅读完以上文档之后,建议您完成以下信息模板,并发送给您在 ThinkingAI 的客户成功经理:

接口:AppsFlyer Pull API 聚合数据接口
--------
公司名称:XXX
AE 项目环境:(SAAS/私有化)
AE 项目名称:XXX
AE 项目 APP ID: XXX
数据接收地址 push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
数据拉取时区:XXX(默认使用 UTC 时间)
数据拉取类型:Partner (by date)/Geo (by date)

历史数据拉取时间范围:yyyy/mm/dd - yyyy/mm/dd
定时拉取:每天 X 点拉取前一天的数据

五、Master API​

接口基本信息

接口名API 类型产品化数据粒度归因数据成本数据收益数据展示数据点击数据转化数据
Master API拉式否聚合数据是是是是

Master API 支持自定义分析维度以及聚合指标,相较于 Pull API 聚合指标接口而言,灵活性更强。

5.1 接入前准备工作​

5.1.1 获取 API Token​

请您登录管理员账号,并在 AppsFlyer 侧边栏菜单中找到「API Access」,并且获取用于 Master API 的 V2.0 API Token。

5.1.2 获取 App ID​

可以在 AppsFlyer 后台「My Apps」找到您的应用的 App ID,安卓端以com.开头,如 com.demoapp.ta,iOS 以id开头,如id12345678

5.2 涵盖字段​

Master API 包含了多种类型的指标,其中比较常用的指标大类有:LTV KPIs、Retention KPIs 以及 Cohort KPIs。由于 Cohort KPIs 支持的分析维度要窄于其他指标大类,因此 AE 系统会分开拉取包含以及不包含 Cohort KPIs 的数据,以下是这两类数据涵盖的字段:

  • 分析维度
字段名af_groupings入库名排除 Cohort KPIs 数据包含 Cohort KPIs 数据
App IDapp_idapp_id✓✓
Media Sourcepidmedia_source✓✓
Agencyaf_prtpartner✓
Campaignccampaign✓✓
Adsetaf_adsetadset✓
Adaf_adad✓
Channelaf_channelchannel✓
Publisher IDaf_siteidpublisher_id_af_siteid✓✓
Keywordsaf_keywordskeywords
Is Primary Attributionis_primaryis_primary_attribution
Campaign IDaf_c_idcampaign_id
Adset IDaf_adset_idadset_id
Ad IDaf_ad_idad_id
Install Timeinstall_timeinstall_time✓✓
Touch Typeattributed_touch_typetouch_type✓
GEOgeogeo✓✓
  • 指标字段

以下列举的是 Master API 的部分常用字段,如需了解全量字段,可以访问 AppsFlyer 官网文档:

提示

新增的指标字段将添加在 排除 Cohort KPIs 数据 中,如需增加,可以在数据集成配置信息模板中写明

入库名描述排除 Cohort KPIs 数据包含 Cohort KPIs 数据
impressions曝光数✓✓
clicks点击数✓✓
installs安装数✓✓
cr转化率✓✓
sessionsSession 数✓✓
loyal_users忠实用户安装数✓✓
loyal_users_rate忠实用户比例✓✓
cost总成本✓✓
revenue总收益✓✓
roiROI✓✓
arpu_ltv平均生命周期价值✓✓
average_ecpi平均eCPI✓✓
uninstalls卸载数✓✓
uninstalls_rate卸载率✓✓

retention_day_[x]

第 N 天留存用户数(N = 0,1,2,3,4,5,6,7,15,30)✓
retention_rate_day_[x]第 N 天留存用户率(N = 0,1,2,3,4,5,6,7,15,30)✓

cohort_day_[x]_total_revenue_per_user

第 N 日累积收益(N = 1,2,3,4,5,6,7,15,30,40,50,60,70,80,90)✓

cohort_day_[x]_revenue_per_user

第 N 日当天收益(N = 1,2,3,4,5,6,7,15,30,40,50,60,70,80,90)✓
cohort_[x]_days_total_revenue_per_user同第 N 日累积收益(N = 1,2,3,4,5,6,7,15,30,40,50,60,70,80,90)✓

5.3 接口参数​

  • 时间:

    • 拉取以日为时间单位的数据
    • 默认的数据时区为 UTC 时间

5.4 数据入库规则​

默认情况下,我们会将拉取的数据以事件形式写入 AE 项目中:

  • 由于 Master API 聚合指标接口返回的是聚合数据,因此我们将使用一个固定值作为其用户标识,您可以认为所有数据挂载在一个虚拟用户上

  • 使用数据中的 install_time 字段,即用户的安装时间,作为事件的 #event_time

  • 数据事件名为:

    • 包含 Cohort KPIs 数据
      • appsflyer_master_ltv_act_cohort_kpis
    • 排除 Cohort KPIs 数据
      • appsflyer_master_ltv_act_retention_kpis
  • 其他字段将全数入库

5.5 数据集成配置信息模板​

在阅读完以上文档之后,建议您完成以下信息模板,并发送给您在 ThinkingAI 的客户成功经理:

拉取数据接口:AppsFlyer Master API 聚合数据接口
--------
公司名称:XXX
AE 项目环境:(SAAS/私有化)
AE 项目名称:XXX
AE 项目 APP ID: XXX
数据接收地址 push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
数据拉取时区:XXX(默认使用 UTC 时间)
新增指标:XXX, XXX(如果是与事件相关的 activity 指标,可以指定需要拉取指标数据的事件名;新增指标将添加在排除 Cohort KPIs 数据,即 appsflyer_master_ltv_act_retention_kpis 事件上)

历史数据拉取时间范围:yyyy/mm/dd - yyyy/mm/dd
定时拉取:每天 X 点拉取前一天的数据

六、Cohort API​

接口基本信息

接口名API 类型产品化数据粒度归因数据成本数据收益数据展示数据点击数据转化数据
Cohort API拉式否聚合数据是是是

Cohort API 同样也是聚合数据 API。相比其他聚合数据 API,数据指标的形态更类似于 AppsFlyer 的 Cohort Dashboard以及 AE 系统的留存分析模型的数据结果,即第 N 日(或累计第 N 日)指标。

6.1 接入前准备工作​

6.1.1 获取 API Token​

请您登录管理员账号,并在 AppsFlyer 侧边栏菜单中找到「API Access」,并且获取用于 Cohort API 的 V2.0 API Token。

6.1.2 获取 App ID​

可以在 AppsFlyer 后台「My Apps」找到您的应用的 App ID,安卓端以com.开头,如 com.demoapp.ta,iOS 以id开头,如id12345678

6.2 涵盖字段​

  • 分析维度

需要注意的是,Cohort API 最多支持 7 个分析维度,以下是默认的分析维度,如果需要调整,请在数据集成配置信息模板中注明:

字段名入库名默认
Adaf_ad✓
Ad IDaf_ad_id
Campaignc✓
Campaign IDaf_c_id
Channelaf_channel✓
Media Sourcepid✓
Sub Param 1af_sub1
Keywordsaf_keywords
Agencyaf_prt
Conversion Type (1)cohort_type
Site IDsite_id
Attributed Touch Type (3)attributed_touch_type
Adsetaf_adset✓
Adset IDaf_adset_id
Countrygeo
Datedate✓
警告

请注意,如果您需要拉取 Facebook(Meta) 的数据,则分析维度请不要同时选择 af_channel 与 geo,否则将无法获取 Facebook 的成本数据

  • 指标字段

需要注意的是,Cohort API 会返回 3 类默认指标以及一个额外指标,以下是默认的指标字段,如果需要调整,请在数据集成配置信息模板中注明:

指标类型入库名描述默认
users(必有)users人群总用户数(与时间窗口无关)✓
ecpi(必有)ecpi人群总eCPI(与时间窗口无关)✓
cost(必有)cost人群总成本(与时间窗口无关)✓

"event_name"(自定义事件)

"event_name"_unique_users_day_N第 N 日自定义事件触发用户数
"event_name"_count_day_N第 N 日自定义事件完成数
"event_name"_rate_day_N第 N 日自定义事件完成率
"event_name"_sum_day_N第 N 日由自定义事件产生的收益额

revenue

revenue_count_day_N第 N 日收益事件触发数✓
revenue_sum_day_N第 N 日收益额✓
ROASroas_rate_day_N第 N 日 ROAS
roiroi_rate_day_N第 N 日 ROI

sessions

sessions_unique_users_day_N第 N 日 Session 触发用户数(如果是累计指标则不返回该数据)
sessions_count_day_N第 N 日 Session 数
sessions_rate_day_N第 N 日留存率( Session 触发用户数 / 人群总用户数)
uninstallsuninstalls_count_day_N第 N 日卸载数
uninstalls_rate_day_N第 N 日卸载率

注:上表中入库名列中的 N 代表第 N 日指标,默认取值范围为 0-30

6.3 接口参数​

  • 时间:

    • 拉取以日为时间单位的数据
    • 默认的数据时区为 UTC 时间
    • 可以选择数据是每日独立(即展示当天的指标),还是累计数据(即从第 0 日累计至第 N 日)
    • 可以选择是否允许非完整天(比如计算的第 N 日为今天)的数据回传

6.4 数据入库规则​

默认情况下,我们会将拉取的数据以事件形式写入 AE 项目中:

  • 由于 Cohort API 聚合指标接口返回的是聚合数据,因此我们将使用一个固定值作为其用户标识,您可以认为所有数据挂载在一个虚拟用户上
  • 使用数据中的 date 字段,即用户的归因/转化时间,作为事件的 #event_time
  • 数据事件名为:appsflyer_cohort_api
  • 其他字段将全数入库

6.5 数据集成配置信息模板​

在阅读完以上文档之后,建议您完成以下信息模板,并发送给您在 ThinkingAI 的客户成功经理:

拉取数据接口:AppsFlyer Cohort API 聚合数据接口
--------
公司名称:XXX
AE 项目环境:(SAAS/私有化)
AE 项目名称:XXX
AE 项目 APP ID: XXX
数据接收地址 push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
数据拉取时区:XXX(默认使用 UTC 时间)
是否允许非完整天数据:是/否(默认“是”)
数据的时间聚合类型:当天/累计(默认为累计)

分组维度: XXX,XXX (默认 date,pid,geo,c,af_adset,af_ad,af_channel)
指标字段:XXX (默认为 revenue,仅可设置一个)

历史数据拉取时间范围:yyyy/mm/dd - yyyy/mm/dd
定时拉取:每天 X 点拉取前 N 天的数据

七、Data Locker 与 Cost ETL​

Data Locker 是 AppsFlyer 的数据转存服务,可以支持将多种数据转存到 AWS 或者 GCS 云存储上。

Cost ETL 是 AppsFlyer 的成本数据转存服务,可以将各媒体渠道的广告系列成本数据转存到 AWS 或者 GCS 云存储上。

目前 AE 系统已经支持集成 AWS S3 以及 GCS 的数据,您可以根据转存的云存储类型,查看下列文档:

八、联调测试与集成后数据使用​

1. 联调测试​

1.1 Push API 接口

可以在「数据管理」 ->「用户属性管理」页面查看相关归因数据,若有相关用户属性,则代表集成成功。

AppsFlyer 回传字段入库 AE 后用户属性名称数据类型
media_source#appsflyer_media_source文本
campaign#appsflyer_campaign文本
af_adset#appsflyer_adset文本
af_ad#appsflyer_ad文本

若您开启了事件表入库,在「数据管理」 ->「事件管理」页面查看相关事件数据,事件名和在 AppsFlyer 定义的事件名相同。

1.2 Pull API 和 Master API 聚合数据接口

可以在「数据管理」 ->「事件管理」页面查看相关事件,若有相关事件,则代表集成成功。

接口报告名称入库 AE 后事件名称数据类型
Pull API所有媒体渠道投放报告-按日appsflyer_partner_by_date文本
Pull APIFacebook 投放报告-按日appsflyer_facebook_partner_by_date文本
Master APILTV, Activity, Retention 相关 KPIsappsflyer_master_ltv_act_retention_kpis文本
Master APILTV, Activity, Retention 外加 Cohort 相关 KPIsappsflyer_master_ltv_act_retention_cohort_kpis文本

2. 数据使用​

2.1 围绕归因信息做分析

2.2 对比不同媒体按照渠道、广告组、广告计划、广告素材维度计算激活、成本、收益、ROAS

2.3 在一个平台同时查看营销数据和用户行为数据,减少跨平台使用

2.4 数据联动分析,比如和变现、其他媒体渠道数据打通

2.5 通过 revenue / cost 计算不同媒体渠道的 ROAS

2.6 通过非自然用户的关键用户行为(比如付费前的某个事件:某个核心玩法的留存)来分析这批用户的质量,从而减少从分析到决策的时间

2.7 事件属性集成后数据类型

通过 AppsFlyer Pull API 拉取的数据,事件属性默认「按字符串类型接入」,您可以通过 AE 系统的虚拟属性功能将字符串类型的字段转换为其他类型,例如:

  • 将 install 属性转换为数值类型:"af_install_number" (数据类型选择数值)
  • 将 total_cost 属性转换为数值类型:"af_total_cost_number" (数据类型选择数值)

九、常用 FAQ​

参考 AppsFlyer FAQ

这篇文档对你有帮助吗?