作为 Privacy Sandbox 的一部分,Chrome 提出了 Protected Audience API,这是一种浏览器内 API,可让广告客户和广告技术公司在不依赖第三方 Cookie 的情况下展示以兴趣群体为定位条件的广告,同时保护用户免遭跨网站跟踪。
Chrome 正在针对 Protected Audience API 运行源试用。Authorized Buyers 有资格参与在 Ad Manager 发布商广告资源上进行的 Protected Audience API 测试。 通过测试 Protected Audience API,出价方可以实现以下目标:
- 迭代并了解 Protected Audience API 流的效力。
- 在公开论坛(例如 GitHub)中针对潜在的 API 改进生成反馈。
- 准备通过 API 支持个性化广告,而无需依赖第三方 Cookie。
有意进行测试的 Authorized Buyers 应查看入门部分,了解详情。
投放流程摘要
下面简要介绍了 Authorized Buyers 合作伙伴的 Protected Audience 广告投放流程:
- 出价方会与广告客户合作,为每个广告客户维护兴趣群体。通常,广告客户会将出价方的代码添加到广告客户的网页,以将浏览器添加到兴趣组。
- 最终用户访问广告客户的网页。网页可能包含出价方的代码。
- 出价方的代码调用 Protected Audience API
joinAdInterestGroup()。 此调用请求浏览器将用户添加到某个兴趣群组。 - 最终用户访问发布商网页。用户的浏览器请求 Google 的发布商广告代码。
- Google 的发布商广告代码会向 Google 服务器发出内容相关广告请求。
- Google 会向参与出价的买方发送情境出价请求。如需了解详情,请参阅“出价请求变更”部分。
- 出价方返回出价响应,其中包含参与兴趣组竞价所需的
InterestGroupBidding消息。在 OpenRTB 中,此字段由BidResponse.ext.igbid字段指定;在已弃用的 Google RTB 协议中,此字段由BidResponse.interest_group_bidding字段指定。如果出价方未指定此信息,Google 不会在竞价配置的interestGroupBuyers中添加出价方的来源。InterestGroupBidding还可以包含可选的买方专用信号,这些信号将在浏览器内竞价期间传递给出价方的出价函数。在 OpenRTB 中,此字段通过BidResponse.ext.igbid.igbuyer.buyerdata字段指定;在已弃用的 Google RTB 协议中,此字段通过BidResponse.interest_group_bidding.interest_group_buyers.per_buyer_signals字段指定。如需了解详情,请参阅“出价响应方面的变化”部分。 - Google 运行服务器端竞价,并向浏览器返回出价响应。服务器端竞价会考虑传统的服务器端出价。出价响应可以包含有关情境中标出价(如有)的信息。
- 出价响应包含浏览器内竞价的竞价配置。这可能包括每位参与买方提供的上下文信号(之前通过 OpenRTB 的
buyerdata或已弃用的 Google RTB 协议的per_buyer_signals发送)、上下文胜出者信息以及出价资格设置。 - Google 的发布商代码会调用 Protected Audience API
runAdAuction()以启动设备端兴趣群体竞价。Google 只会纳入在竞价配置期间作为InterestGroupBidding中的InterestGroupBuyer纳入的买方。 - Google 会将每个符合条件的出价方的可选买方专用信号传递给 Protected Audience 竞价配置。
- 如果指定出价方的兴趣群体指定了
trustedBiddingSignalsUrl,浏览器会向每个群组的trustedBiddingSignalsUrl发出请求,以提取每个群组的实时信号。如需了解详情,请参阅 Protected Audience API 规范。 - 浏览器会针对选择参与浏览器内竞价且符合条件的每个兴趣群体调用出价方的
generateBid()。此步骤会计算出价并选择广告素材。generateBid()可以访问出价方提供的可选买方信号以及指定兴趣群组的可信出价信号。 - 浏览器会调用卖方(在本例中为 Google)的
scoreAd(),为兴趣群体广告竞价中的每个出价分配一个排名。系统会根据发布商保护措施、广告政策和其他限制条件对出价进行排名和过滤。 - 浏览器会使用符合条件的兴趣群体出价进行竞价。排名最高的内容相关出价参与浏览器内竞价。
- 竞价结束后,如果存在兴趣群体胜出方,浏览器会调用卖方的
reportResult()和出价方的reportWin(),以通知各方浏览器内竞价的胜出方。 - 如果兴趣组广告胜出,Google 的发布商代码会在 iframe 中呈现该广告。
提供流程详情
广告投放前
广告素材审核
广告素材必须经过 Google 审核并获得批准,然后才能通过 Protected Audience 在浏览器内竞价投放。您可以通过 Real-time Bidding API 或自动扫描广告素材来提交广告素材以供审核。浏览器内 Protected Audience 兴趣群体广告竞价的广告素材必须包含 renderUrls 以供审核。
renderUrls 的要求:
- 通过 API 提交的
renderUrl应与在兴趣群体广告竞价中使用的renderUrl一致。 - 每个
renderUrl只能代表一个广告客户或广告系列。给定的renderUrl不能用于代表多个广告客户呈现广告。每个renderUrl都必须映射到单个广告素材。 - Google 的离线广告素材审核系统需要在广告最后一次出价后的 7 天内能够访问和提取
renderUrl。
Real-time Bidding API
出价方可以使用实时出价 API 上传广告素材,以便参与兴趣群体出价。
自动扫描广告素材
出价方可以为未通过实时出价 API 上传的广告素材设置自动广告素材扫描。
如果您设置了自动扫描广告素材,Google 会在浏览器内竞价中查找广告素材并自动扫描,以便这些广告素材有资格参与未来的竞价。
以下是启用广告素材自动扫描功能的步骤:
将所有兴趣组广告素材的
renderUrl来源添加到 Authorized Buyer 账号。向广告素材的 HTTP 响应添加以下自定义 HTTP 标头:
Authorized-Buyers-Creative-ID字符串
买方专用广告素材 ID。广告素材 ID 的长度上限为 128 字节。
Authorized-Buyers-Click-Through-URLs字符串
根据 RFC2396 编码的广告素材的一组已声明的目标网址。
示例:
HTTP/1.1 200 OK
Date: Mon, 8 Jan 2022 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Mon, 8 Jan 2022 12:01:53 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
Authorized-Buyers-Creative-ID:123456
Authorized-Buyers-Click-Through-URLs:https://www.advertiser.com/clickUrl1,https://www.advertiser.com/clickUrl12
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
广告素材过期
广告素材的批准有效期为 15 天。如果您通过 Real-time Bidding API 提交广告素材,则需要在 15 天后重新提交该广告素材。如果您依赖自动广告素材扫描,扫描流程会自动重新扫描这些广告素材。
买方报告 ID
您可以使用买方提供的维度(例如广告系列 ID 或广告客户 ID)细分报告指标(例如展示次数)。如需添加兴趣群体支出的维度,请在将用户的设备添加到兴趣群体时,为广告指定 buyerAndSellerReportingId。如需了解更多详情,请参阅 Protected Audience 文档。
以下示例展示了如何将 buyerAndSellerReportingId 添加到兴趣组配置中:
const myGroup = {
...
'ads': [
{
...
'buyerAndSellerReportingId':
'{"google_signals": {"buyer_reporting_id": "12345"}}',
...
}
]
}
joinAdInterestGroup(myGroup);
buyer_reporting_id 将作为新维度显示在 Authorized Buyer 的报告工具中,即买方报告 ID 维度。
服务器端竞价
出价请求更改
以下是实验中使用的受支持协议的早期版本:
指明兴趣组竞价支持
出价请求新增了用于指明是否支持兴趣组竞价的字段:
- OpenRTB:
BidRequest.imp.ext.aeBidRequest.imp.ext.igbid
- Google RTB 协议(已弃用):
BidRequest.adslot.supported_auction_environmentBidRequest.adslot.interest_group_bidding_allowed
您可以使用此字段来区分支持 Protected Audience 浏览器内兴趣群体竞价的展示机会和仅支持传统服务器端广告交易平台竞价的展示机会。AuctionEnvironment 枚举可以具有以下值:
SERVER_SIDE_AUCTION(OpenRTB JSON:0):确定胜出广告的竞价在广告交易平台的服务器上运行。ON_DEVICE_INTEREST_GROUP_AUCTION(OpenRTB JSON:1):支持 Protected Audience 的请求,其中情境竞价在广告交易平台的服务器上运行,而兴趣群体出价和最终竞价在浏览器中运行。SERVER_SIDE_INTEREST_GROUP_AUCTION(OpenRTB JSON:3):情境竞价在广告交易平台的服务器上运行,用于确定最终胜出广告的兴趣组出价的出价逻辑和评分逻辑在出价和竞价服务器中运行。
指明 Protected Audience 广告位尺寸
出价请求包含以下字段,可为您提供受众群体保护广告资源块大小:
- OpenRTB:
BidRequest.imp.ext.interest_group_auction.widthBidRequest.imp.ext.interest_group_auction.height
- Google RTB 协议(已弃用):
BidRequest.adslot.interest_group_auction.widthBidRequest.adslot.interest_group_auction.height
这些字段以像素为单位表示 Protected Audience 竞价的广告位大小。
此尺寸可能与上下文请求中的尺寸不同,例如 OpenRTB 的 BidRequest.imp.banner.format.w 和 BidRequest.imp.banner.format.h 字段或已弃用的 Google 实时出价协议的 BidRequest.adslot.width 和 BidRequest.adslot.height 字段中的尺寸。
情境请求可能包含多种尺寸。设备端竞价胜出的广告预计只会填充一个固定尺寸的广告资源。
指示 Protected Audience 广告的可呈现性
Protected Audience 广告可能会呈现,也可能不会呈现,具体取决于当前的集成阶段(请参阅非呈现实验)。出价请求中的 render_interest_group_ads 字段用于指明胜出的 Protected Audience 广告是否会呈现。
- OpenRTB:
BidRequest.imp.ext.interest_group_auction.render_interest_group_ads - Google RTB 协议(已弃用):
BidRequest.adslot.interest_group_auction.render_interest_group_ads
尽可能减少对用户标识符的依赖
在 Protected Audience API 测试范围内,上下文出价请求在浏览器提供传统基于 Cookie 的标识符(例如 BidRequest.user.id 和 BidRequest.user.buyerid 字段,或已弃用的 Google RTB 协议中的 BidRequest.google_user_id 和 BidRequest.hosted_match_data)时,可以继续携带这些标识符。出价请求中是否存在此类标识符取决于现有的隐私权政策。我们建议您在测试期间不要依赖基于 Cookie 的标识符来定位和出价,以便在第三方 Cookie 不再可用时更好地为高效购买做好准备。
Google 还可能会开展小规模实验,在这些实验中,系统会从 Protected Audience API 测试范围内的出价请求中隐去基于 Cookie 的标识符。这是为了评估弃用第三方 Cookie 的潜在影响。
Chrome 协助进行的第三方 Cookie 弃用测试
为了为 2024 年的第三方 Cookie 弃用 (3PCD) 做好准备,Chrome 现在提供Chrome 促成的测试。
网站和供应商可以使用 Chrome 促成的测试,在 3PCD 下测试其系统。在测试中,Chrome 浏览器会被分配到 3PCD 实验组(模式 A 或模式 B)。每个浏览器都会分配一个与特定 3PCD 实验组对应的一致标签,您可以通过浏览器内 Chrome API 访问该标签。
Google 会通过 RTB 出价请求传递来自 Chrome API 的未修改标签。由于单个标签的流量比例较小,Google 并不总是会在隐私权受限的情境中包含该标签。
您可以在以下字段中查看标签:
- OpenRTB:
BidRequest.device.ext.cdep - Google RTB 协议(已弃用):
BidRequest.device.cookie_deprecation_label
出价响应更改
指明了兴趣群体竞价参与情况
您有责任通过在情境出价响应中返回 InterestGroupBidding 对象来明确表明您参与浏览器内竞价的意图:
- OpenRTB:
BidResponse.ext.igbid - Google RTB 协议(已弃用):
BidResponse.interest_group_bidding
您必须提供内容相关出价响应。响应无需包含情境出价。InterestGroupBidding 对象应包含每个 InterestGroupBuyer 的 origin,该 origin 应与出价方为其账号配置的某个来源相匹配。当 Google 发布商代码调用 runAdAuction() 时,origin 会添加到竞价配置的 interestGroupBuyers 中。
传播买方情境信号
您可以在情境出价响应中添加买方的信号,Google 会通过 perBuyerSignals 实参将这些信号作为 JSON 对象传播到买方的设备端出价函数。这可以包含在出价响应中,具体取决于协议,包含以下字段:
- OpenRTB:
BidResponse.ext.igbid.igbuyer.buyerdata - Google RTB(已弃用):
BidResponse.interest_group_bidding.per_buyer_signals
传播买方情境呈现信号
兴趣群体广告素材在渲染期间可能会使用有限的内容相关信号,方法是通过内容相关出价响应发送这些信号,并在渲染网址请求中通过宏展开接收这些信号。例如,渲染信号可用于自定义广告素材的外观和风格,以在特定广告位或发布商网页的背景下提升效果。
您可以在情境出价响应中包含买方的渲染信号(序列化为网址安全字符串),Google 会通过构建 ${RENDER_DATA_buyer.origin.example[_OPTIONAL_SUFFIX]} 宏在胜出的兴趣组渲染网址中替换该字符串。
您可以在出价响应中使用以下字段指定呈现信号,具体取决于协议:
- OpenRTB:
BidResponse.ext.igbid.igbuyer.rsig - Google RTB(已弃用):
BidResponse.interest_group_bidding.interest_group_buyer.rendering_signals
出价响应中最多可以包含 3 组具有不同宏后缀的呈现信号,以区分不同的信号。例如,后缀可用于匹配仅适用于呈现网址中包含相应宏的广告素材的特定信号集,从而减小数据传输大小。
如果信号不是网址安全型、宏后缀不是唯一,或者提供的信号超过 3 组,则系统会拒绝相应兴趣群体买方参与 Protected Audience 竞价。
指定浏览器内出价上限
在 Protected Audience 提案中,出价计算和最终竞价预计会在设备本地运行。这可能会产生潜在的滥用途径,从而影响最终竞价结果(例如胜出出价)的完整性。
作为 Google 在 Protected Audience API 测试期间为 RTB 合作伙伴提供的缓解措施,您可以在每个情境出价响应中指定预期最高出价值。预期最高出价是指出价函数预计会返回的最高出价。如果浏览器内竞价中报告的胜出出价超过此金额,则该胜出出价不会计为可结算的事件。此方法可能会发生变化。
在出价响应中,您可以在以下字段中指定预期最高出价:
- OpenRTB:
BidResponse.igbid.igbuyer.maxbid(以 CPM 币种单位表示) - Google RTB 协议(已弃用):
BidResponse.interest_group_bidding.interest_group_buyers.max_bid_cpm_micros(以微 CPM 表示)
将展示归因于多个账号
出价方必须选择结算 ID,才能使用以下字段来归因其兴趣组出价的展示次数:
- OpenRTB:
BidResponse.igbid.igbuyer.billing_id - Google RTB 协议(已弃用):
BidResponse.interest_group_bidding.interest_group_buyers.billing_id
所选结算 ID 必须是出价请求中的有效结算 ID:
- OpenRTB:
BidRequest.imp.ext.billing_id - Google RTB 协议(已弃用):
BidRequest.adslot.matching_ad_data.billing_id
如果未提供用于归因兴趣群体出价展示的结算 ID,出价方将无法参与 Protected Audience 竞价。
子级账号最多可以有两个结算 ID。买方可以使用一个结算 ID 来支付情境广告支出,使用另一个结算 ID 来支付兴趣群体广告支出。 如果您想为子账号配置两个结算 ID,请与您的客户经理联系。
您可以为每个结算 ID 设置每日预算。请与您的客户经理联系,为子账号的结算 ID 设置每日预算。
所有有可用预算且符合竞价展示条件的子账号的结算 ID 都会显示在出价请求中,供您选择支出归因。请与您的客户经理联系,以修改某个兴趣群体结算 ID 的预算。
在浏览器内竞价期间
生成浏览器内出价
使用 generateBid() 生成浏览器内出价。
Google 提供以下参数:
auctionSignals:空perBuyerSignals:与出价方在情境响应中提供的信号相同的 JavaScript 对象
系统会返回以下参数:
ad:Google 会忽略此字段。bid:进入竞价流程的数值出价。必须以 CPM 为单位(而非以微秒为单位)。render:如果出价在竞价中胜出,则用于呈现广告素材以进行展示的网址。Google 必须审核并批准此网址,否则该网址将被从竞价中过滤掉。allowComponentAuction:必须为true。Google 目前支持对多卖方竞价进行测试。
示例如下:
function generateBid(...) {
...
return {'ad': 'example',
'bid': ad.metadata.bid,
'render': ad.renderUrl,
'allowComponentAuction': true};
}
如需了解 generateBid() 函数,请参阅 Protected Audience 规范的设备端出价部分。
出价币种
浏览器内竞价的出价以所选出价币种的 CPM 为单位。
出价币种必须在情境化出价响应和 generateBid 的返回值中指明,并且必须是有效的 ISO 4217 字母代码,例如“USD”“EUR”或“JPY”。
在 OpenRTB 中,使用 Google 出价响应扩展中的 InterestGroupBuyer 对象中的新 cur 字段。
示例如下:
ext {
igbid {
impid: "1"
igbuyer {
origin: "https://examplebuyerorigin.com"
cur: "EUR"
}
}
}
在 Google 实时出价协议中,请在出价响应的 InterestGroupBuyer 消息中使用新的 currency 字段。
示例如下:
interest_group_bidding {
adslot_id: 1
interest_group_buyer {
origin: "https://examplebuyerorigin.com"
currency: "EUR"
}
}
出价方的 generateBid 函数必须返回与情境出价响应中指示的币种相同的出价。在 generateBid 的返回值中填充新的 bidCurrency 属性:
function generateBid(...) {
...
return {'ad': ad,
'bid': bid,
'bidCurrency': 'EUR',
...};
}
如果来自情境出价响应的币种与 generateBid 返回的币种不同,或者两者都返回了无效的币种,则出价将在竞价之前被过滤掉。
广告质量检查
在 Protected Audience API 测试期间,对于 RTB 合作伙伴,浏览器内兴趣群体出价的广告素材政策和发布商控件执行可能会更加严格。
《数字服务法案》支持
根据《数字服务法案》第 26 条,发布商可能会要求买方呈现广告内透明度披露声明。如果发布商启用“Ask buyers to only show ads with DSA transparency information on my site or app in EEA”(要求买方仅在我的欧洲经济区网站或应用中展示包含 DSA 透明度信息的广告)控件,兴趣群体买方可以通过注意出价请求中的 BidRequest.regs.dsa.required 和 BidRequest.dsa.pubrender 值(在已弃用的 Google RTB 协议中分别为 BidRequest.dsa.dsa_support 和 BidRequest.dsa.publisher_rendering_support),确定哪些广告资源需要呈现买方透明度信息。
如果希望参与 Protected Audience API 竞价的出价方在出价请求中收到的信号指出,通过 Protected Audience API 投放的广告必须展示 DSA 透明度信息,出价方应评估自己能否正确展示这些必要的信息,并通过设置 BidResponse.ext.igbid.igbuyer.dsaadrender(在已弃用的 Google RTB 协议中为 BidResponse.interest_group_bidding.interest_group_buyers.dsa_buyer_render)来指定。否则,买方将不会参与 Protected Audience API 竞价。
如需详细了解《数字服务法案》广告透明度,请参阅帮助中心文章:支持《数字服务法案》。
出价过滤
Google 会在设备端竞价期间强制执行发布商控件和广告政策。
浏览器内竞价后
向买方报告竞价结果:reportWin()
Google 不会填充以下实参:
auctionSignalssellerSignals
使用 reportWin() 向买方报告竞价结果。
如需了解详情,请参阅 Protected Audience API 说明文档的买方关于渲染和广告事件的报告部分。
宏
引用 Protected Audience API 广告素材的 renderUrl 可以包含一个或多个占位符(称为宏)。在兴趣群体竞价结束之后但在渲染之前,宏会被替换为相应的值。在设备端竞价中使用的 renderUrl 可以包含以下宏:
${GDPR}
|
如果 GDPR 不适用,则展开为 0;如果 GDPR 适用,则展开为 1。请参阅文档。 |
${GDPR_CONSENT_XXXX}
|
会展开为与请求关联的透明度和用户意见征求 (TC) 字符串。如果透明度和用户意见征求 (TC) 字符串为空白或无效,此宏将不会展开。
使用此宏可通过网址将 TC 字符串传递给已在 IAB GVL 中注册的供应商。
将 如果与您插入的 IAB GVL ID 关联的 IAB GVL 注册供应商未征得用户同意,含有 ${GDPR_CONSENT_XXXX} 宏只能在 renderUrl 中出现一次。
|
${ADDL_CONSENT}
|
会展开为与请求关联的更多意见征求方式 (AC) 字符串。 |
${AD_WIDTH}, ${AD_HEIGHT)
|
这些宏会插入广告位的宽度和高度。 |
${RENDER_DATA_buyer.origin.example[_OPTIONAL_SUFFIX]}
|
包含出价响应中指定的渲染时买方信号的宏。
将 |
展示次数统计
在与 RTB 合作伙伴进行的 Protected Audience API 测试期间,当浏览器调用其 reportResult() 函数,随后在对 sendReportTo() 的调用中提取 Google 的报告网址时,Google 会统计展示次数。
由于 Google 在 Protected Audience 浏览器内竞价中用于统计展示次数的事件可能与其 RTB 买方合作伙伴用于统计展示次数的事件不同,因此展示次数可能会有所不同。
Google 测试 Protected Audience API 的目标之一是发现并减少这些差异。
可结算展示次数的归因
竞价方在 Protected Audience 浏览器内竞价中的所有支出都会归因于单个竞价方账号,具体取决于为竞价方配置的兴趣群体所有者来源的映射。不支持将支出归因于出价方的不同子席位账号。
每日预算上限
在 Protected Audience API 测试期间,每个账号都有一个账号级 Protected Audience 支出每日预算上限。每日预算上限可限制浏览器内竞价环境中的风险。达到每日预算上限后,相应账号将不再收到符合 Protected Audience 条件的出价请求。
即使达到 Protected Audience 上限,相应账号仍可继续参与服务器端内容相关竞价。例如,达到 Protected Audience 上限的出价方账号可能会收到包含 auction_environment
= SERVER_SIDE_AUCTION(OpenRTB JSON:0)的出价请求,即使该出价请求符合 Protected Audience 竞价的条件。
实时反馈和能胜出的最低出价
选择接收实时反馈的出价方将收到反馈,其中包含请求纳入设备端 Protected Audience 竞价的兴趣群体买方。无论竞价方在 Protected Audience 竞价中放置了多少出价,其在出价响应中指定的每个兴趣群体买方都将收到一个反馈对象。兴趣群体买方反馈对象中将提供以下信息:
- 反馈对象的反馈类型将为
INTEREST_GROUP_BUYER_FEEDBACK。 - 兴趣群体买家的来源。
- 兴趣群体买方赢得整体竞价所需的最低出价。
- 兴趣群体买方为在竞价中胜出而需给出的最低出价,以便击败整个竞价的服务器端组件中排名最高的出价。
- 兴趣组买方的状态代码。可能的状态代码在 interest-group-buyer-status-codes.txt 中定义。
如需了解具体字段名称,请参阅 Authorized Buyers RTB 和 OpenRTB 扩展功能的协议文档。
出价反馈通知
Chrome 为 Protected Audience API 提供了一个临时调试 API,使 Ad Manager 能够发送包含 Protected Audience 出价反馈的实时服务器到服务器调试通知。除了下文所述的有关出价的其他信息之外,此通知还将包含出价可能在 Protected Audience 浏览器内竞价中被过滤的原因。
出价方可以联系其客户经理,配置一个静态网址,用于传送 Protected Audience 调试出价反馈通知。在 Protected Audience 竞价完成后,系统会从 Google 服务器提取此静态网址,并替换所选的宏。支持以下宏:
%%GOOGLE_QUERY_ID%%:此宏会被在启用 Protected Audience 的情境出价请求中发送的 Google 查询 ID 替换。在 OpenRTB 协议中,此参数通过BidRequest.ext.google_query_id指定,而在已弃用的 Google RTB 协议中,此参数通过BidRequest.google_query_id指定。%%INTEREST_GROUP_OWNER%%:兴趣组所有者的来源。%%BID_CPM%%:买方在generateBid()函数中指定的每千次展示费用出价。%%RENDER_URL%%:广告素材的呈现网址。%%STATUS%%:如果出价在scoreAd()内被拒绝,则为状态代码。 值为广告素材状态代码。
以下是竞价方可能会向其客户经理提供的静态网址示例:
https://dsp.example/debug?google_query_id=%%GOOGLE_QUERY_ID%%&ig_owner=%%INTEREST_GROUP_OWNER%%&render_url=%%RENDER_URL%%&bid=%%BID_CPM%%&status=%%STATUS%%
出价反馈通知是一项临时功能,依赖于 Chrome 的临时 ForDebuggingOnly API。
产品级 TURTLEDOVE
在 Protected Audience API 测试期间,Google RTB 合作伙伴支持由多个部分组成的广告或产品级 TURTLEDOVE (PLTD)。如果您计划测试 PLTD,请在集成期间告知您的客户经理,因为这需要额外的资源和配置。
初始配置
您可以通过以下方式测试 Protected Audience API:
步骤
- 填写申请表单,加入 Protected Audience API 实验。
- 提交申请表单后,请与您的客户经理联系,或使用授权买方帮助中心提交支持请求。
- 账号配置完毕后,Google 和合作伙伴都可以按照测试阶段中的步骤验证集成。
广告素材审核
如需在 Protected Audience API 竞价中通过商品级广告(由多个素材资源组成的广告)出价,请遵循以下要求:
- 在组件广告的容器(也称为顶级
renderUrl)的renderUrl中添加&pltd=True查询参数,以便在广告素材审核期间区分顶级renderUrls。 - 当 Google 为进行广告素材审核而提取组件广告的容器时,渲染代表性广告素材。为了了解何时应返回代表性广告呈现,您可以参考 Google 广告素材审核系统设置的
validation=True查询参数。
集成核对清单
- 设置一个出价请求端点,该端点将在内容相关出价响应中填充 Protected Audience API 相关字段,例如
interest_group_bidding。 - 在广告客户的网页上实现代码植入,以将用户的浏览器加入兴趣群体。
- 实现
generateBid()和reportWin()。 - 选择兴趣群体所有者来源,并将其添加到 Authorized Buyer 账号中。
- 兴趣群体所有者来源应与托管
generateBid()函数的来源相匹配。 - 请与客户经理联系,或使用授权买方帮助中心提交支持请求,以完成此步骤。
- 兴趣群体所有者来源应与托管
- 为与 Protected Audience API 测试相关的广告资源设置预定位。
- 通过 Creatives API 提交广告素材以供审核和批准。
- (可选)设置可信出价信号端点。
- (可选)设置一个测试广告客户网页,让 Google 工程师能够将自己的浏览器添加到您的兴趣群体买方来源所拥有的兴趣群体中。这样,我们就可以手动触发 Protected Audience 竞价。
- (可选)在您的账号中启用实时反馈,以便接收针对以下兴趣群体买方的反馈:这些买方请求纳入 Protected Audience 竞价。
- (可选)与您的客户经理联系,配置一个静态网址以接收服务器到服务器通知,该通知会提供 Protected Audience 出价反馈,其中包含设备端 Protected Audience 竞价的出价状态,有助于调试意外问题。如需了解详情,请参阅出价反馈通知。
测试阶段
第 1 阶段:手动测试
以下是如何手动触发 Protected Audience 竞价、确保广告可以呈现并记录展示次数:
- 使用 Chrome 101 或更高版本。
- 使用
chrome://flags/#privacy-sandbox-ads-apis和chrome://flags/#enable-fenced-frames启用 Privacy Sandbox API 和 Fenced Frame。如需了解详情,请参阅测试 Privacy Sandbox。 - 使用 Real-time Bidding API 提交广告素材以供审批。
- 使用出价方提供的广告客户网页将浏览器添加到出价方拥有的兴趣群体。
使用以下 Google 提供的测试发布商网页来触发 Protected Audience 竞价:
https://fledge-testing.uc.r.appspot.com/?nid=allow_all
浏览器内兴趣群体必须提供足够高的出价才能赢得竞价,因为它可能会与传统的服务器端出价竞争。Google 还会为每个合作伙伴提供一个专用测试发布商页面,只有相应合作伙伴才能参与竞价。在合作伙伴专用页面上,可能更容易可靠地赢得浏览器内竞价。
验证以下事项:
- 系统会呈现预期胜出的广告。
- 竞价结果通过服务器端发送,这意味着中标的出价方会收到来自
reportWin()的 ping。 - 测试发布商网页控制台会针对每个出价记录一条调试消息,其中包含以下信息:
renderUrl:出价的呈现网址。interestGroupOwner:出价的兴趣组所有者。accepted:如果出价被接受,此字段为true;如果出价被scoreAd()拒绝,此字段为false。externalBidStatus:如果出价在scoreAd()内被拒绝,则为状态代码。值为广告素材状态代码。
阶段 2:(可选)非渲染实验
在 Google 和合作伙伴手动验证合作伙伴可以参与 Protected Audience 竞价后,Google 会允许合作伙伴进入下一阶段的测试。
Google 会分配少量实时流量来运行 Protected Audience 竞价。这样一来,Google 和合作伙伴就不再需要手动触发 Protected Audience 竞价。Protected Audience 竞价的结果未呈现。这样,我们就可以大规模测试集成。
准备就绪后,请与您的客户经理联系,或通过 Authorized Buyers 帮助中心提交支持请求。 Google 将为相应阶段启用账号。
第 3 阶段:呈现实验
在 Google 和合作伙伴大规模验证了不进行渲染的 Protected Audience 竞价后,Google 可以允许合作伙伴渲染 Protected Audience 胜出广告。Google 有少量流量符合运行 Protected Audience 竞价的条件,并且胜出的兴趣群体广告会进行渲染。参与竞价的出价方在浏览器中提供的出价会与传统出价竞争。
准备就绪后,请与您的客户经理联系,或通过 Authorized Buyers 帮助中心提交支持请求。 Google 将为相应阶段启用账号。
其他功能
以下功能是核心协议的扩展。
并行化
并行化是一种优化措施,通过并行启动内容相关广告请求和对 trustedBiddingSignalsUrl 中指定的买方可信服务器的请求,来缩短端到端竞价延迟时间。
并行化可缩短延迟时间,但会影响兴趣群体买方资格条件和对协同实验的支持。 并行化适用于参与设备端兴趣群体竞价的所有出价方。出价方无需采取任何行动即可参与并行竞价,但应熟悉并行化可能会如何影响其在设备端竞价中的资格。 并行竞价尚不支持协同实验的实验组 ID。
投放流程摘要
下面简要介绍了并行竞价流程:
设备端兴趣群体买方资格条件
对于并行竞价,navigator.runAdAuction 的调用发生在返回内容相关广告响应之前。为了发起买方可信服务器调用,navigator.runAdAuction 要求必须将 interestGroupBuyers 参数作为值传递,而其余竞价参数接受可在情境广告响应后解析的 JavaScript Promise。由于 interestGroupBuyers 是在内容相关广告响应之前传递的,因此内容相关广告响应(包括出价响应)无法用于选择哪些买方参与给定请求的并行竞价。Google 的发布商代码会在用户浏览器中缓存同一网域上之前执行 navigator.runAdAuction 时使用的 interestGroupBuyers 参数。
并行化有几个重要注意事项:
买方可信服务器请求不需要的竞价信号(例如
perBuyerSignals)可以继续在实时出价响应中指定,方式与非并行化竞价相同。一旦这些信号的 Promise 得到解析,设备端竞价的其余步骤将以与非并行竞价流程相同的方式完成。由于并行化依赖于缓存的兴趣群体买方列表,因此 Google 并不总是运行并行竞价,因为并行化缓存可能为空或已过期。如果缓存为空或已过期,Google 会运行标准的非并行 Protected Audience API 竞价,并使用买方意向参与非并行竞价,以构建兴趣组买方缓存。
如果当前发布商网域缓存了任何出价方的至少一个买方,Google 将运行并行竞价,这将在出价请求中指明:
- Google RTB 协议:
BidRequest.adslot.interest_group_auction.parallelized - OpenRTB:
BidRequest.imp.ext.interest_group_auction.parallelized
- Google RTB 协议:
对于并行竞价中包含的给定出价方的每个已注册的兴趣群体买方来源,都将有一个对应的
ParallelAuctionBuyer条目:- Google RTB 协议:
BidRequest.adslot.interest_group_auction.parallel_auction_buyer - OpenRTB:
BidRequest.imp.ext.interest_group_auction.pbuyer
- Google RTB 协议:
如果运行的是并行竞价,但缓存中不存在特定买方来源,则无法将相应买方添加到当前设备端竞价中。如果某个请求的
parallelized=True缺少给定兴趣组买方来源的ParallelAuctionBuyer条目,则表示存在此问题。 不过,如果出价方通过在出价响应中包含有效且符合条件的InterestGroupBuyer来表明自己感兴趣,则相应的兴趣组买方来源将被添加到缓存中,并且这些来源将有资格参与来自同一浏览器和网域的未来并行化请求。可以在以下字段中指明参与兴趣组竞价的意向:- Google RTB 协议:
BidResponse.adslot.interest_group_bidding.interest_group_buyers - OpenRTB:
BidResponse.ext.igbid.igbuyer
- Google RTB 协议:
如果出价方未在其出价响应中表明参与意向,则缓存的买方来源(包含在并行竞价的
interestGroupBuyers参数中)可能会收到买方可信服务器调用,但不会参与并行竞价。