APP转化行为Marketing API接入方案选择
通过API上报数据有两种方案:
方案一
广告主先将转化数据与获取到的点击数据进行关联,然后将关联到的转化数据上报给腾讯广告,腾讯广告进行归因处理。
方案二
广告主将所有数据上报给腾讯广告,腾讯广告与点击数据进行关联,并归因处理。
注:通过旧版转化API上报数据的广告主,无需再次进行点击转发配置,只需停止使用老转化API上报数据,并按照下文对接marketingAPI,进行数据上报即可。
APP转化行为API接入流程
1. MarketingAPI账户配置授权
1.1 注册开发者和创建应用
2. 数据上报
2.1 创建APP用户行为数据源
用户行为数据源是APP用户行为数据的容器,针对一个APP,只需要创建一次即可(Android和iOS需要分开创建)。后续需要将用户行为数据上报到用户行为数据源中。
可以在DMP系统(de.qq.com)的“数据接入”模块里创建APP用户行为数据源;
2.2 上报用户行为数据
名称
|
是否必填
|
类型
|
描述
|
|
user_id
|
||||
hash_imei
|
Android 必填
iOS 不填
|
string
|
IMEI 设备号保持小写,进行 md5 编码
字段长度为 32 字节
|
|
hash_idfa
|
iOS 必填
Android 不填
|
string
|
IDFA 设备号保持大写,进行 MD5 编码
字段长度为 32 字节
|
|
hash_phone
|
选填
|
string
|
电话号码直接 MD5 编码,如 md5(13500000000)
字段长度为 32 字节
|
|
|
|
|
移动安全联盟(简称MSA)制定的匿名设备标识符,保留原始值,不需要MD5编码。具体OAID介绍以及最新覆盖厂商范围请详见MSA官网
|
|
hash_android_id
|
Android选填
iOS不填
|
string
|
对 android_id 进行 MD5 编码
字段长度为 32 字节
|
|
trace
|
click id
|
选填
|
string
|
可以通过feedback url回传的点击数据里匹配获取
使用方案一推荐填入
|
常用转化行为
|
行为类型(action_type)
|
说明
|
激活
|
ACTIVATE_APP
|
30天内第一次打开APP
|
注册
|
REGISTER
|
用户点击广告后注册成为APP的新用户
|
下单
|
COMPLETE_ORDER
|
用户点击下单生成订单
|
购买
|
PURCHASE
|
用户完成付费
|
加入购物车
|
ADD_TO_CART
|
用户将商品加入购物车
|
次日留存
|
START_APP
|
用户激活后第二天打开APP的行为
|
参数名
|
类型
|
是否必填
|
说明
|
value
|
integer
|
no
|
转化行为的价值,如下单金额,购买金额。单位为分,100表示1元
|
用户行为说明
|
DMP标准行为(action_type)
|
标准行为名称
|
行为参数 action_param
|
用户激活APP后第二个自然日打开
|
START_APP
|
次日留存
|
length_of_stay=1
|
名称
|
类型
|
必填
|
限制
|
描述
|
access_token
|
string
|
是
|
以Query Parameter方式在请求路径中传递。
|
|
timestamp
|
timestamp
|
是
|
以Query Parameter方式在请求路径中传递。
|
当前的时间戳,单位为秒,允许客户端请求最大时间误差为300秒。MarketingAPI 所使用的时间戳,若无特殊说明,均为秒级时间戳MarketingAPI 所使用的时区为GMT+8,例如当时间戳为1494840119时,表示 2017-05-15 17:21:59
|
nonce
|
string
|
是
|
以Query Parameter方式在请求路径中传递。
|
随机字串标识,不超过32个字符,由调用方自行生成,需保证全局唯一性。
|
|
|
接口功能
|
不同应用程序在接口功能上可能存在差异,由开发者创建应用的时候根据应用的使用场景进行选择
|
调用天频次
|
1、系统对每个应用程序调用每个接口都有调用天频次限制,不同应用等级下的调用次数不同,具体可通过应用程序管理页面了解
2、达到限制后,您当日将无法继续调用超限的接口,第二天可自动恢复正常
3、如需要调整限制可以联系您的运营接口人
|
调用分钟频次
|
1、系统对每个应用程序调用每个接口都有调用分钟频次限制,不同应用等级下的调用次数不同,具体可通过应用程序管理页面了解
2、达到限制后,您需要暂停对该接口的调用,5分钟后可自动恢复正常
3、如需要调整限制可以联系您的运营接口人
|
|
-H ‘Content-Type: application/json’ \
-d ‘{
“account_id”: “<your_account_id>“,
“user_action_set_id”: “<your_user_action_set_id>“,
“oaid”: “<oaid>” //Android选填,推荐使用
}’
|
click_idhash_imei参数更换为 hash_idfa,另外iOS不支持hash_android_id)
|
-H ‘Content-Type: application/json’ \
-d ‘{
“account_id”: “<your_account_id>“,
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
“oaid”: “<oaid>” //Android选填,推荐使用
},
“action_type”: “ACTIVATE_APP”
}
]
}’
|
)
|
-H ‘Content-Type: application/json’ \
-d ‘{
“account_id”: “<your_account_id>“,
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
“oaid”: “<oaid>” //Android选填,推荐使用
},
“action_type”: “PURCHASE”,
“action_param”:{
“value”: <purchase_value>
}
}
]
}’
|
上报 Android 数据示例,红色部分需要替换成对应的真实信息(上报iOS激活数据需要将 user_id 中参数更换为 hash_idfa)
|
curl
-H ‘Content-Type: application/json’ \
-d ‘{
“account_id”: “<your_account_id>“,
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
“oaid”: “<oaid>” //Android选填,推荐使用
},
“action_param”:{
“length_of_stay”:
}
}
]
}’
|
上报成功应答示例:
{
“code”: 0,
“message”: “”
}
|
2.3 查看数据接入监测报表
数据接入模块下查看App数据的接入情况;
创建Android APP行为数据源示例(iOS需要把type中的ANDROID更改为IOS),红色部分需要替换成对应的真实信息
|
curl -X POST \
-H “Content-Type: application/json”
-d ‘{
“type”: “ANDROID”,
“mobile_app_id”:”“,
“name”: ““,
“description”: ““
}’
|
{
“errcode”: 0,
“errmsg”: “”
“data”:
“user_action_set_id”: “<USER_ACTION_SET_ID>“
}
}
|
名称
|
是否必填
|
类型
|
描述
|
|
user_id
|
||||
hash_imei
|
Android 必填
iOS 不填
|
string
|
IMEI 设备号保持小写,进行 md5 编码
字段长度为 32 字节
|
|
hash_idfa
|
iOS 必填
Android 不填
|
string
|
IDFA 设备号保持大写,进行 MD5 编码
字段长度为 32 字节
|
|
hash_phone
|
选填
|
string
|
电话号码直接 MD5 编码,如 md5(13500000000)
字段长度为 32 字节
|
|
oaid
|
Android选填,推荐使用
iOS不填
|
string
|
移动安全联盟(简称MSA)制定的匿名设备标识符,保留原始值,不需要MD5编码。具体OAID介绍以及最新覆盖厂商范围请详见MSA官网
|
|
hash_android_id
|
Android选填
iOS不填
|
string
|
对 android_id 进行 MD5 编码
字段长度为 32 字节
|
|
trace
|
click id
|
选填
|
string
|
可以通过feedback url回传的点击数据里匹配获取
使用方案一推荐填入
|
行为名称
|
ActionType
|
推广目标
|
数据指标
|
说明
|
激活
|
ACTIVATE_APP
|
推广我的应用
|
APP激活次数
|
用户下载应用后首次打开的操作行为。
|
注册
|
REGISTER
|
推广我的应用
|
APP注册次数
|
用户在应用内完成注册,如手机号码验证、注册应用下账户、创建游戏角色、通过QQ微信号等方式通过授权或其他类注册行为
|
加入购物车
|
ADD_TO_CART
|
推广我的应用
|
APP加入购物车次数
|
用户在应用内发起购买而未完成付费的行为,如加入购物车、下单等。
|
付费
|
PURCHASE
|
推广我的应用
|
APP付费次数
|
用户在应用内进行付费,完成了交易的操作行为。
|
次留
|
START_APP
|
推广我的应用
|
APP次留人数
|
用户完成应用激活后,第二天继续进入APP
|
参数名
|
类型
|
是否必填
|
说明
|
value
|
integer
|
no
|
转化行为的价值,如下单金额,购买金额。单位为分,100表示1元
|
用户行为说明
|
DMP标准行为(action_type)
|
标准行为名称
|
行为参数 action_param
|
用户激活APP后第二个自然日打开
|
START_APP
|
|
length_of_stay=1 //必填
|
上报据示例,红色部分需要替换成对应的真实信息
|
curl
‘https://api.weixin.qq.com/marketing/user_actions/add?version=v1.0&access_token=<ACCESS_TOKEN>‘ \
-H ‘Content-Type: application/json’ \
-d ‘{
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
“oaid”: “<oaid>” //Android选填,推荐使用
},
“action_type”: “ACTIVATE_APP”
}
]
}’
|
如果你想更准确的归因,推荐在user_id中额外上传更多归因标识,并且传入click_id。Android激活上报示例如下(上报iOS激活数据需要将 user_id 中hash_imei参数更换为 hash_idfa,另外iOS不支持hash_android_id,适用于所有转化行为)
|
https://api.weixin.qq.com/marketing/user_actions/add?version=v1.0&access_token=<ACCESS_TOKEN>‘ \
-H ‘Content-Type: application/json’ \
-d ‘{
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
对 android_id 进行MD5编码
“oaid”: “<oaid>” //Android选填,推荐使用
},
“action_type”: “ACTIVATE_APP”,
“trace”: {
}
}
]
}’
|
上报数据示例,红色部分需要替换成对应的真实信息
|
curl
‘https://api.weixin.qq.com/marketing/user_actions/add?version=v1.0&access_token=<ACCESS_TOKEN>‘ \
-H ‘Content-Type: application/json’ \
-d ‘{
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
“oaid”: “<oaid>” //Android选填,推荐使用
},
}
]
}’
|
上报示例,红色部分需要替换成对应的真实信息
|
curl
‘https://api.weixin.qq.com/marketing/user_actions/add?version=v1.0&access_token=<ACCESS_TOKEN>‘ \
-H ‘Content-Type: application/json’ \
-d ‘{
“user_action_set_id”: “<your_user_action_set_id>“,
“actions”: [
{
“action_time”: <action_timestamp>,
“user_id”: {
“hash_imei”: “<MD5_hash_imei>“,
“oaid”: “<oaid>” //Android选填,推荐使用
},
}
]
}’
|
{
“errcode”: 0,
“errmsg”: “”
}
|
|
|
|
external_action_id
|
string
|
字段长度最小1字节,255,且只能为数字,字母,下划线,连接符组成。
去重标识,平台会基于user_action_set_id,external_action_id 和action_type三个字段做去重 ,如果历史上报数据中存在某条数据的这三个字段与当前上报数据完全一样的,则当前数据会被过滤掉
|
典型用户行为 | DMP标准行为(action_type) | 标准行为名称 | 数据源类型 | 行为参数 | 投放端效果栏 | 投放端指标 | 是否支持作为OCPA优化目标 | OCPA优化目标 |
落地页下单 | COMPLETE_ORDER | 下单 | WEB | 无 | 网页栏 | 下单量 | 支持 | 下单 |
落地页填单留资 | RESERVATION | 预约 | WEB | 无 | 网页栏 | 表单预约量 | 支持 | 表单预约 |
用户在落地页上留资后下载APP,在APP内注册登录/跳转到网页注册页面,完成网站用户注册 | REGISTER | 注册 | WEB | 无 | 网页栏 | 注册量 | 支持 | 注册 |
用户在线上或线下实际完成付费购买行为并成交 | PURCHASE | 购买 | WEB | 无 | 网页栏 | 付费行为量 | 支持 | 付费 |
用户通过在一级页面上点击按钮,跳转到广告主指定二级页面并浏览 | VIEW_CONTENT | 关键页面访问 | WEB | object=product | 网页栏 | 商品页面浏览量 | 支持 | 商品页面浏览量 |
用户直接下载APP后第一次打开/在落地页上留资后下载APP后第一次打开 | ACTIVATE_APP | 激活应用 | ANDROID/IOS | 无 | APP效果栏 | 激活总量 | 支持 | 激活 |
用户在页面上发起网页咨询 | CONSULT | 网页咨询 | WEB | consult_type=ONLINE_CONSULT | 网页栏 | 网页咨询量 | 支持 | 网页咨询 |
用户在页面上发起电话咨询 | CONSULT | 电话咨询 | WEB | consult_type=MAKE_PHONE_CALL | 网页栏 | 电话直拨量 | 支持 | 电话咨询 |
用户访问自有落地页 | VIEW_CONTENT | 关键页面访问 | WEB | 无 | 网页栏 | 自有网页关键页面浏览量 | 支持 | 关键页面浏览 |
用户在落地页上下单,并且订单商品已发货 | DELIVER | 订单发货 | WEB | 无 | 网页栏 | 订单发货量 | 支持 | 发货 |
用户下载APP后在APP内注册 | REGISTER | 注册 | ANDROID/IOS | 无 | APP效果栏 | 注册量 | 支持 | 注册 |
用户在APP内将商品加入购物车 | ADD_TO_CART | 加入购物车 | ANDROID/IOS | 无 | APP效果栏 | 加入购物车量 | 支持 | 加入购物车 |
用户在APP内完成付费购买行为并成交 | PURCHASE | 购买 | ANDROID/IOS | 无 | APP效果栏 | 付费量 | 支持 | 付费 |
用户访问APP内落地页 | VIEW_CONTENT | 关键页面访问 | ANDROID/IOS | 无 | APP效果栏 | 关键页面浏览量 | 支持 | 关键页面浏览 |
用户在APP内通过在一级页面上点击按钮,跳转到广告主指定二级页面并浏览 | VIEW_CONTENT | 关键页面访问 | ANDROID/IOS | object=product | APP效果栏 | 商品页浏览量 | 支持 | 商品详情页浏览 |
APP内下单 | COMPLETE_ORDER | 下单 | ANDROID/IOS | 无 | APP效果栏 | 下单量 | 支持 | 下单 |
用户激活APP后第二天打开应用 | START_APP | 启动应用 | ANDROID/IOS | length_of_stay=1 | APP效果栏 | 次日留存量 | 支持 | 次日留存 |
用户在APP内首次完成付费购买行为并成交 | PURCHASE | 购买 | ANDROID/IOS | 无 | APP效果栏 | 首次付费行为量 | 支持 | 首次付费 |
会员购买 | PURCHASE | 购买 | APP/WEB | 无 | 网页/APP | 首次会员购买量/ 会员购买量 | 3.18后支持 | 首此会员购买量 |
三、转化上报常用参数列表(action_param)
|
|
|
|
|
|
value
|
int
|
订单价值,单位:分
|
否
|
|
体现转化带来的价值,在上报COMPLETE_ORDER或PURCHASE行为时可选填
|
consult_type
|
string
|
咨询类型
|
否
|
^.{0,200}$
|
目前包括三种类型:MAKE_PHONE_CALL(电话咨询)、ONLINE_CONSULT(网页咨询)和RESERVE_PHONE_NUMBER(电话回拨)
|
object
|
string
|
行为对象
|
否
|
^.{0,200}$
|
在上报VIEW_CONTENT行为时参数填写为object=product,表示上报的是商品页面浏览行为
|
length_of_stay
|
int
|
停留天数,单位:天
|
否
|
|
在上报START_APP作为留存行为时必填。length_of_stay=1,表示上报的是次日留存行为。
|
设备号
|
描述
|
原始数据获取
|
加密方式
|
示例:原值
|
示例:MD5后
|
IMEI
|
(1)Android版本 < 6.0,只需要READ_PHONE_STATE静态权限(安装App时即可获取到该权限),即可通过系统API TelephonyManager#getDeviceId API获取准确值;
(2)6.0 <= Android版本 <= 9.0,READ_PHONE_STATE升级为动态权限,安装App时不会获得该权限,需要在App运行时用户在弹窗确认授权后才可以获取;
(3)Android版本 >= 10.0,设备不可变ID的隐私保护得到进一步升级,需要READ_PRIVILEGED_PHONE_STATE权限才可以获取IMEI,而该权限只有系统级别的应用才可以获得,因此一般App无法获取到IMEI。
|
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
deviceId = tm.getDeviceId();
android版本>=10不获取
|
对IMEI设备号转成小写,再进行md5编码,再小写,32位
md5(imei.toLowerCase()).toLowerCase()
|
868049039501257
|
8d3ebd3654fb46a2832296669cf1b536
|
IDFA
|
目前iOS系统主流的广告获取设备标识符方式
用户可开启、关闭,每次切换会改变为新的取值。 10以下的版本关闭时也能取到唯一值, >=10的iOS版本关闭时取到的值为00000000000 ;系统大版本升级(如11 到 12) IDFA也会发生变化
|
|
IDFA 设备号保持大写,进行 md5 编码,再小写,32位
md5(idfa.toUpperCase()).toLowerCase()
|
|
|
Android ID
|
(1)Android版本 < 8.0,不需要任何权限即可使用系统API(Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID))获取准确值;
(2)Android版本 >= 8.0,应用签名、用户(即系统上的用户账号)和设备的每个组合都具有唯一的 ANDROID_ID值,即使系统升级也不变。
|
Settings.System.getString(context.getApplicationContext().getContentResolver(),
Settings.System.ANDROID_ID);
|
对 android_id 进行 md5 编码,再小写
md5(androidId).toLowerCase()
|
f40c5cf5100f9be3
|
1995c8f7cec20632797539b68555752f
|