应用用户代理
我们为全方位打击垃圾内容采取了广泛的措施,其中包括针对分析/广告产品代表应用用户发送的用户代理标头制定了标准规范。应用用户代理可通过原生代码获取,以遵守以下规范:
name version (os_and_version; locale; device; build; Proxy)
这些字段的定义如下:
用户代理组件 | |
---|---|
name | 分析/广告产品的名称。( 请注意,如果用户代理在客户端上构建,则 Android// Specified by API consumer. iOS// Specified by API consumer. |
version | 分析/广告产品的版本。
( Android// Specified by API consumer. iOS// Specified by API consumer. |
os_and_version | 运行该应用的操作系统及操作系统版本。( AndroidString osAndVersion = "Android " + Build.VERSION.RELEASE; iOSUIDevice *uid = [UIDevice currentDevice]; NSString *osAndVersion = [NSString stringWithFormat:@"%@ %@", [uid systemName], [uid systemVersion]]; |
locale | 设备的 IETF 语言区域标记,采用分别由两个字母组成的语言代码和国家/地区代码,两者之间用下划线分隔。( AndroidString locale = Locale.getDefault(); iOSNSString *locale = [[NSLocale currentLocale] localeIdentifier] |
device | 运行分析/广告产品的实体设备的名称。( AndroidString device = Build.MODEL; iOS@import Darwin.sys.sysctl; NSString *device(void) { size_t bufferSize = 64; NSMutableData *buffer = [[NSMutableData alloc] initWithLength:bufferSize]; int status = sysctlbyname("hw.machine", buffer.mutableBytes, &bufferSize, NULL, 0); if (status != 0) { return nil; } return [[NSString alloc] initWithCString:buffer.mutableBytes encoding:NSUTF8StringEncoding]; } |
build | “Build/”后跟操作系统的版本号。( AndroidString build = "Build/" + Build.ID; iOS@import Darwin.sys.sysctl; NSString *build(void) { size_t bufferSize = 64; NSMutableData *buffer = [[NSMutableData alloc] initWithLength:bufferSize]; int status = sysctlbyname("kern.osversion", buffer.mutableBytes, &bufferSize, NULL, 0); if (status != 0) { return nil; } return [[NSString alloc] initWithCString:buffer.mutableBytes encoding:NSUTF8StringEncoding]; } |
仅当在服务器端构建应用用户代理时,才应在应用用户代理末尾添加 ; Proxy
。如果应用用户代理完全在客户端构建,请不要添加 ; Proxy
。因此,应用用户代理可以是:
- Android:
AdMob/7.10.1 (Android 6.0; en_US; SM-G900F; Build/MMB29M; Proxy)
- iOS:
AdMob/7.10.1 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)
转化跟踪请求
发送转化跟踪请求的目的是,将应作为转化加以跟踪并/或用于填充再营销名单的应用事件通知给 Google Ads,以及检索用来描述该事件之前的任何点击的元数据。
所有 API 调用都会发送到 www.googleadservices.com
网域。转化请求是通过 HTTPS 按照以下路径发出的 POST
请求:
/pagead/conversion/app/version
1.0
。
标准应用转化请求将包含以下参数。
转化跟踪请求 | |
---|---|
dev_token |
必需 位置:查询 为 API 使用者提供的唯一静态开发者令牌。 Z_eErE4DkvcKjDM1OVE4c4 |
link_id |
必需 位置:查询 用于将 API 使用者的开发者令牌绑定到特定应用的关联 ID。 31FF8D67E5BB5DD5029DCC2734C2F884 |
app_event_type |
必需 位置:查询 发生的应用事件的名称。此字段为枚举类型,只接受下列值: • first_open • session_start • in_app_purchase • view_item_list • view_item • view_search_results • add_to_cart • ecommerce_purchase • custom 如果要归因的是安装操作,请务必发送 |
app_event_name |
在特定情况下必需 位置:查询
level_achieved Level Achieved 该字段不得包含为 |
app_event_data |
可选 位置:正文 将任何其他丰富事件数据作为一个将字符串键映射到值的简单 JSON 对象进行转发。可接受的值是字符串和字符串数组。 {"level": 5, "attempts": 20} |
rdid |
必需 位置:查询 表示原始设备 ID 的有效 UUID 字符串。 f10e1de2-e237-4f50-b6aa-843c45cc63d6 如果缺少设备 ID(例如未征得 ATT 同意的用户的设备 ID),请将其设置为全零。 00000000-0000-0000-0000-000000000000 |
id_type |
必需 位置:查询 存储在 Androidadvertisingid iOSidfa |
eea |
在特定情况下必需 位置:查询 EEA 范围。
|
ad_personalization |
在特定情况下必需 位置:查询 个性化广告的标志
|
ad_user_data |
在特定情况下必需 位置:查询 用户同意将用户数据用于广告目的的同意情况标志
|
lat |
必需 位置:查询 设备的“限制广告跟踪”状态。
|
app_version |
必需 位置:查询 应用的当前版本。应按如下方式进行标准化。 AndroidpackageManager.getPackageInfo(packageName(), PackageManager.GET_META_DATA).versionName iOS[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] 1.2.4 |
os_version |
必需 位置:查询 应用的主机操作系统的当前版本。应按如下方式进行标准化。 Androidandroid.os.Build.VERSION.RELEASE iOS[[UIDevice currentDevice] systemVersion] |
sdk_version |
必需 位置:查询 衡量事件的 SDK 的版本。由于该参数主要用于调试,并且随您的 SDK 版本一起发布,因此应准确反映发布版本。如果应用未使用 SDK,请传递与 1.9.5r6 |
timestamp |
必需 位置:查询 表示转化事件发生时间的 UNIX 时间戳(以秒为单位,精确到微秒)。 1432681913.123456 |
value |
可选 位置:查询 事件的货币价值(如果有)。应始终采用机器可读浮点值的格式,使用小数点来分隔值的整数部分和小数部分。 1.99 |
currency_code |
在特定情况下必需 位置:查询
USD |
gclid |
在特定情况下必需 位置:查询 打开过应用的深层链接网址中的 Cj0KEQjw0dy4BRCuuL_e5M |
market_referrer_gclid |
在特定情况下必需 位置:查询 通过 Play Install Referrer API 从 install_referrer 值捕获的深层链接网址中的 BX3QojHp4mY5MrJtFM_d1u |
gclid_only_request |
在特定情况下必需 位置:查询 在 rdid (advertisingid) 为 1 |
gbraid |
在特定情况下必需 位置:查询 通过打开应用的深层链接网址发送的上次看到的 ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O |
app_open_source |
在特定情况下必需 位置:查询 用于标识广告点击深层链接或自然应用会话的值。 ad_click or organic |
User-Agent |
必需 位置:标头 在上一部分中定义的应用用户代理。 AdMob/7.10.1 (Android 6.0; en_US; SM-G900F; Build/MMB29M) |
X-Forwarded-For |
必需 位置:标头 衡量事件的设备的公开 IPv4 或 IPv6 地址。 216.58.194.174 |
所有请求均必须通过 HTTPS 发送。通过 HTTP 接收的 ping 会被拒绝。
请注意,如果请求正文为空(在 app_event_data
载荷中没有传递丰富事件数据的情况下),则我们的服务器会要求您在请求中明确设置 Content-Length: 0
标头。
示例请求
下面显示一个采用非自定义事件类型且包含收入信息的有效转化跟踪请求示例:
POST /pagead/conversion/app/1.0 ?dev_token=Z_eErE4DkvcKjDM1OVE4c4 &link_id=31FF8D67E5BB5DD5029DCC2734C2F884 &app_event_type=in_app_purchase &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D &id_type=idfa &eea=0 &ad_personalization=1 &ad_user_data=1 &lat=0 &app_version=1.2.4 &os_version=9.3.2 &sdk_version=1.9.5r6 ×tamp=1432681913.123456 &value=1.99 ¤cy_code=USD &market_referrer_gclid=BX3QojHp4mY5MrJtFM_d1u &gclid=Cj0KEQjw0dy4BRCuuL_e5M &gclid_only_request=0 &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O Host: www.googleadservices.com User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy) X-Forwarded-For: 216.58.194.174 Content-Type: application/json; charset=utf-8
{"app_event_data":{"item_id":["Crayons","Markers"]}}
下面显示一个采用非自定义事件类型且包含收入信息但没有 rdid (advertisingid) 的有效转化跟踪请求示例:
POST /pagead/conversion/app/1.0 ?dev_token=Z_eErE4DkvcKjDM1OVE4c4 &link_id=31FF8D67E5BB5DD5029DCC2734C2F884 &app_event_type=in_app_purchase &rdid=00000000-0000-0000-0000-000000000000 &id_type=advertisingid &eea=0 &ad_personalization=1 &ad_user_data=1 &lat=1 &app_version=1.2.4 &os_version=9.3.2 &sdk_version=1.9.5r6 ×tamp=1432681913.123456 &value=1.99 ¤cy_code=USD &market_referrer_gclid=BX3QojHp4mY5MrJtFM_d1u &gclid=Cj0KEQjw0dy4BRCuuL_e5M &gclid_only_request=1 &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O Host: www.googleadservices.com User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; Android,1; Build/13D15; Proxy) X-Forwarded-For: 216.58.194.174 Content-Type: application/json; charset=utf-8
{"app_event_data":{"item_id":["Crayons","Markers"]}}
下面显示一个有效的会话启动请求示例:
POST /pagead/conversion/app/1.0 ?dev_token=Z_eErE4DkvcKjDM1OVE4c4 &link_id=31FF8D67E5BB5DD5029DCC2734C2F884 &app_event_type=session_start &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D &id_type=idfa &eea=0 &ad_personalization=1 &ad_user_data=1 &lat=0 &app_version=1.2.4 &os_version=9.3.2 &sdk_version=1.9.5r6 ×tamp=1432681913.123456 &gclid=Cj0KEQjw0dy4BRCuuL_e5M &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O Host: www.googleadservices.com User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy) X-Forwarded-For: 216.58.194.174 Content-Type: application/json; charset=utf-8
下面显示一个针对会话发出的有效会话启动重新归因请求示例(该会话来自深层链接 example://product/123?gclid=Cj0KEQjw0dy4BRCuuL_e5M
):
POST /pagead/conversion/app/1.0 ?dev_token=Z_eErE4DkvcKjDM1OVE4c4 &link_id=31FF8D67E5BB5DD5029DCC2734C2F884 &app_event_type=session_start &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D &id_type=idfa &eea=0 &ad_personalization=1 &ad_user_data=1 &lat=0 &app_version=1.2.4 &os_version=9.3.2 &sdk_version=1.9.5r6 ×tamp=1432681913.123456 &gclid=Cj0KEQjw0dy4BRCuuL_e5M &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O Host: www.googleadservices.com User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy) X-Forwarded-For: 216.58.194.174 Content-Type: application/json; charset=utf-8
下面显示一个有效转化跟踪请求示例,该请求针对的是已同意使用广告用户数据但拒绝接收个性化广告的欧洲经济区用户:
POST /pagead/conversion/app/1.0 ?dev_token=Z_eErE4DkvcKjDM1OVE4c4 &link_id=31FF8D67E5BB5DD5029DCC2734C2F884 &app_event_type=in_app_purchase &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D &id_type=idfa &eea=1 &ad_personalization=0 &ad_user_data=1 &lat=0 &app_version=1.2.4 &os_version=9.3.2 &sdk_version=1.9.5r6 ×tamp=1432681913.123456 &value=1.99 ¤cy_code=USD Host: www.googleadservices.com User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy) X-Forwarded-For: 216.58.194.174 Content-Type: application/json; charset=utf-8
事件数据编码
对于 app_event_data
正文参数,请遵循基元数据类型的以下惯例:
Float
- 使用点字符作为小数点分隔符,而不考虑应用的本地化规则
- 使用精确到小数点后两位的数值表示货币价值,例如 2.99
- 请勿使用指数计数法,例如 2E+9
- 请勿使用逗号分隔数位组,例如 1,000,000
- 有效示例:
-0.5
2.99
1000000.123
整数
- 仅发送没有小数位数的整数值
- 请勿使用逗号分隔数位组,例如 1,000,000
- 有效示例:
1000
-11
0
日期
- 日期格式:yyyy-mm-dd
yyyy
表示四位数年份,例如 2016mm
表示两位数月份,例如,09 表示 9 月dd
表示两位数日期,例如,23 表示当月 23 号
- 始终发送上述指定位数的数值,例如,如果要发送表示本月 5 号的 dd 值,请发送
05
。 - 有效示例:
"2016-09-23"
"1990-12-31"
- 日期格式:yyyy-mm-dd
时间戳
- 时间格式:以 UTC 时区定义的 Unix/Epoch 时间戳,精确到微秒
- 有效示例:
1478713087
表示 2016 年 11 月 9 日星期三 17:38:07(格林尼治标准时间)1073513982.123000
表示 2004 年 1 月 7 日星期三 22:19:42.123(格林尼治标准时间)
数组
- 仅发送基元值数组(字符串、数字和布尔值)
- 有效示例:
[123, 456, 789]
["abc"]
转化跟踪响应
转化跟踪响应采用以下格式:
{ "ad_events": [<ad event objects>], "errors": [<error strings>], "attributed": true|false }
表示广告事件的 ad_events 数组和表示错误的 errors 数组均可为空。
错误应采用机器可读的错误代码表示,例如 invalid_timestamp
。
错误代码
invalid_timestamp - 请求不包含有效的时间戳。
eea_missing_or_invalid - 请求未设置“eea”字段或该字段无效。
ad_user_data_missing - 未设置“ad_user_data”请求字段。所有符合 DMA 范围的请求都必须包含“ad_user_data”字段。
ad_user_data_invalid -“ad_user_data”请求值无效。所有符合 DMA 范围的请求都必须包含“ad_user_data”字段。
ad_personalization_missing_or_invalid - 请求未设置“ad_personalization”字段或该字段无效。所有符合 DMA 范围的请求都必须包含“ad_personalization”字段。
广告事件是应用归因的核心对象,将包含以下属性。
关于响应行为(取决于用户意见征求)的重要注意事项:
如果转化具有广告用户数据意见征求,并且用户在其 Google 用户设置中具有跨用途意见征求,则 Google Ads 将在所有 CPS 中响应单个最终点击。如果用户未在 Google 用户设置中同意交叉使用意见征求数据,Google Ads 将根据每次销售费用 (CPS) 模式,以多次最终点击进行响应。
如果转化包含用户在跨服务使用同意声明中选择的某些 CPS,但不包含其他 CPS,Google Ads 将针对获得跨服务使用同意声明的 CPS 返回单个最终点击,但针对未获得跨服务使用同意声明的 CPS 返回多个最终点击(每个 CPS 一个)。
转化跟踪响应 | |
---|---|
ad_event_id |
始终存在 字符串
Q2owS0VRancwZHk0QlJDdXVMX2U1TQ |
conversion_metric |
始终存在 字符串 用于归因的转化指标。我们最初将支持一个转化指标。 conversion |
timestamp |
始终存在 数值 表示广告事件发生时间的 UNIX 时间戳(以秒为单位,精确到微秒)。对于最终点击归因,应采用此值。 1432681913.123456 |
campaign_type |
始终存在 字符串 此字段将标识产生广告事件的广告系列的类型。可能的值如下。 ACI ACE ACPre Search Display Video Shopping Hotel Performance_Max Other ACI 是“应用安装广告系列”的英文缩写。ACE 是“应用互动广告系列”的英文缩写。 |
campaign_id |
始终存在 数值 产生广告事件的广告系列的数值型广告系列 ID。此值保证唯一。 123456789 |
campaign_name |
始终存在 字符串 产生广告事件的广告系列的名称(由广告客户定义)。此值不能保证唯一。 Occasional Gamers (Video) |
ad_type |
始终存在 字符串 产生广告事件的广告的类型。此值可用于区分各种类型的广告资源,如下所示。 应用宣传ClickToDownload AppDeepLink AppDeepLinkContinue Unknown |
external_customer_id |
始终存在 数值 对于产生广告事件的广告系列,此值是指拥有该广告系列的广告客户的广告客户标识符。此值可用于区分 Google Ads 账号。 123456789 |
location |
始终存在 数值 广告事件的地理位置的地理位置 ID 代码。请参阅 Google Ads API 参考来解读地理位置代码。 |
network_type |
始终存在 字符串 此字段将标识发生广告事件的 Google Ads 广告网络。可能的值如下。 Search Display YouTube GoogleTv cross-network |
network_subtype |
如果 字符串 此字段将标识发生广告事件的 Google Ads 广告网络的“子类型”。可能的值因主要广告资源网类型而异。 搜索广告系列普通 Google 搜索GoogleSearch SearchPartners 展示广告移动网站发布商mGDN Google AdMob YouTubeYouTube 视频网络YouTubeVideos YouTubeSearch VideoPartners GoogleTvGoogleTV 视频网络GoogleTvVideos 跨广告网络效果最大化广告系列跨广告资源网cross-network |
video_id |
仅当 字符串 与广告事件关联的 YouTube 视频 ID。 dQw4w9WgXcQ |
keyword |
仅当 字符串 与广告事件关联的搜索关键字。 +food +delivery |
match_type |
仅当 字符串 搜索关键字的匹配类型。 完全匹配e p b |
placement |
仅当 字符串 与广告事件相关联的展示位置。 mobileapp::1-343200656 |
ad_group_id |
仅当 数值 产生广告事件的广告组的数字 ID。此值保证唯一。 123456789 |
ad_group_name |
仅当 字符串 产生广告事件的广告组的名称(由广告客户定义)。此值不能保证唯一。 My App AdGroup |
creative_id |
仅当 数值 产生广告事件的广告素材广告单元的数值型 ID。此值保证唯一。 123456789 |
interaction_type |
此字段将始终为互动。 字符串 |
示例响应
下面显示请求包含错误时的转化跟踪响应示例:
{ "ad_events": [], "errors": ["INVALID_CURRENCY_CODE"], "attributed": false }
下例是一个否定性的转化跟踪响应:
{ "ad_events": [], "errors": [], "attributed": false }
所有转化跟踪请求都会获得转化跟踪响应。
下例是针对非 EEA 用户的通用应用广告系列的一个肯定性的转化跟踪响应:
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "engagement", "campaign_type": "ACI", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Search", "network_subtype": "GoogleSearch", "video_id": null, "keyword": null, "match_type": null, "placement": null, "ad_group_id": null, "ad_group_name": "", "creative_id": null, "timestamp": 1432681913.123456 }], "errors": [], "attributed": true, "warnings": [] }
下例是针对搜索广告系列的肯定性转化跟踪响应(适用于非 EEA 用户):
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "engagement", "campaign_type": "Search", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Search", "network_subtype": "GoogleSearch", "video_id": null, "keyword": "+space +birds", "match_type": "b", "placement": null, "ad_group_id": 123456789, "ad_group_name": "My App AdGroup", "creative_id": 123456789, "timestamp": 1432681913.123456 }], "errors": [], "attributed": true, "warnings": [] }
下例是针对展示广告系列的一个肯定性的转化跟踪响应(适用于非 EEA 用户):
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "engagement", "campaign_type": "Display", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Display", "network_subtype": "mGDN", "video_id": null, "keyword": null, "match_type": null, "placement": "mobile-app::2-343200656", "ad_group_id": 123456789, "ad_group_name": "My App AdGroup", "creative_id": 123456789, "timestamp": 1432681913.123456 }], "errors": [], "attributed": true, "warnings": [] }
下例是针对 YouTube 广告系列的一个肯定性的转化跟踪响应(适用于非 EEA 用户):
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "engagement", "campaign_type": "Video", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "YouTube", "network_subtype": "YouTubeVideos", "video_id": "dQw4w9WgXcQ", "keyword": null, "match_type": null, "placement": null, "ad_group_id": 123456789, "ad_group_name": "My App AdGroup", "creative_id": 123456789, "timestamp": 1432681913.123456 }], "errors": [], "attributed": true, "warnings": [] }
下面显示了一个归因的转化跟踪响应示例,其中转化归因于 Play + 搜索广告互动,但 Play + 搜索 CPS 之间拒绝了 5(2)(b) + 5(2)(c) 交叉使用同意情况:
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "click", "campaign_type": "ACI", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Display", "network_subtype": "", "video_id": null, "keyword": null, "match_type": null, "placement": null, "ad_group_id": null, "ad_group_name": "", "creative_id": null, "timestamp": 1432681913.123456 }, { "ad_event_id": "I8YUwWqxvOyqcwOcqBAkYZBMaOONSd", "conversion_metric": "conversion", "interaction_type": "click", "campaign_type": "ACI", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Search", "network_subtype": "", "video_id": null, "keyword": null, "match_type": null, "placement": null, "ad_group_id": null, "ad_group_name": "", "creative_id": null, "timestamp": 1432681913.123456 }, ], "errors": [], "warnings": [], "attributed": true }
如果转化归因于 Play + 搜索广告互动,并且 Play + 搜索 CPS 之间接受了 5(2)(b) + 5(2)(c) 交叉使用同意声明,则归因的转化跟踪响应与当前的转化行为类似:
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "click", "campaign_type": "ACI", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Display", "network_subtype": "", "video_id": null, "keyword": null, "match_type": null, "placement": null, "ad_group_id": null, "ad_group_name": "", "creative_id": null, "timestamp": 1432681913.123456 }, ], "errors": [], "warnings": [], "attributed": true }
下例是归因的转化跟踪响应,其中转化归因于 Play、Google 搜索和 YouTube 广告互动,并且 Play + Google 搜索 CPS 之间接受了 5(2)(b) + 5(2)(c) 交叉使用同意声明,但 YouTube CPS 拒绝了该同意声明:
{ "ad_events": [{ "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ", "conversion_metric": "conversion", "interaction_type": "click", "campaign_type": "ACI", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Display", "network_subtype": "", "video_id": null, "keyword": null, "match_type": null, "placement": null, "ad_group_id": null, "ad_group_name": "", "creative_id": null, "timestamp": 1432681913.123456 }, { "ad_event_id": "I8YUwWqxvOyqcwOcqBAkYZBMaOONSd", "conversion_metric": "conversion", "interaction_type": "click", "campaign_type": "ACI", "campaign_id": 123456789, "campaign_name": "My App Campaign", "ad_type": "ClickToDownload", "external_customer_id": 123456789, "location": 21144, "network_type": "Youtube", "network_subtype": "YouTubeVideos", "video_id": null, "keyword": null, "match_type": null, "placement": null, "ad_group_id": null, "ad_group_name": "", "creative_id": null, "timestamp": 1432681913.123456 }, ], "errors": [], "warnings": [], "attributed": true }
跨广告联盟归因请求
当 Google Ads 以肯定的方式响应转化跟踪请求时,API 使用者必须在识别最终点击后将其跨广告联盟归因决定通知给 Google Ads。
跨广告联盟归因请求与原始转化跟踪请求相同,不过前者的请求路径为:
/pagead/conversion/app/1.0/cross_network
且需添加两个必需参数:
跨广告联盟归因请求 | |
---|---|
ad_event_id |
必需 位置:查询 来自与之前请求中的归因相关联的广告事件的 |
attributed |
必需 位置:查询 对于 API 使用者所完成的这次转化,功劳是否归于 Google Ads。 |
下面显示一个有效的跨广告联盟归因请求示例:
POST /pagead/conversion/app/1.0/cross_network ?dev_token=Z_eErE4DkvcKjDM1OVE4c4 &link_id=31FF8D67E5BB5DD5029DCC2734C2F884 &app_event_type=custom &app_event_name=level_achieved &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D &id_type=idfa &lat=0 &app_version=1.2.4 &os_version=9.3.2 &sdk_version=1.9.5r6 ×tamp=1432681913.123456 &value=1.99 ¤cy_code=USD &ad_event_id=Q2owS0VRancwZHk0QlJDdXVMX2U1TQ &attributed=1 Host: www.googleadservices.com User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy) X-Forwarded-For: 216.58.194.174 Content-Type: application/json; charset=utf-8
有效的跨广告联盟归因请求将始终收到通用 200 响应,且无响应正文。