在 Protected Audience 竞价中实现交易(也称为私下交易市场 [PMP])
概览
交易(也称为私下交易市场 [PMP])可让买方以优惠价格或通过精选方式认购部分广告资源。为了促成程序化交易,系统会使用席位 ID 和交易 ID:
- 席位 ID 源自买方,是表示买方客户的标识符。席位 ID 可能会产生结算方面的影响,例如,如果某个席位从特定卖家处购买时可享受折扣。
- 交易 ID 源自买方或卖方,是表示买方与卖方之间协议的标识符。交易 ID 可能具有多种属性,例如费用/价格、量承诺、受众群体信息、独家性等。
Protected Audience 通过使用报告 ID 来促成交易,从而使席位 ID 和交易 ID 可用于竞价、评分和报告。报告 ID 提供了一种机制,让广告技术公司可以在竞价后的 Protected Audience 报告中接收这些交易和席位 ID,以便进行交易并安排结算事宜。我们预计,买方、卖方、代理机构和广告客户可能会制定专门的策略来解读和理解他们收到的交易 ID 和席位 ID。
演示
在 Protected Audience 竞价中促成交易的步骤如下:
- 买方在竞价开始之前在兴趣组配置中注册交易和席位 ID
- 可以在可选择的报告 ID 字段 (
selectableBuyerAndSellerReportingIds) 中设置交易 ID 和席位 ID。 - 如果所有交易的席位 ID 相同,则可以在
buyerAndSellerReportingId中设置该席位 ID,并在可选择的报告 ID 字段 (selectableBuyerAndSellerReportingIds) 中设置交易 ID。
- 可以在可选择的报告 ID 字段 (
- 在出价生成期间,交易 ID 和席位 ID 会变为可用状态。买方从
selectableBuyerAndSellerReportingIds中选择交易 ID。买方通过返回selectedBuyerAndSellerReportingId生成包含与相应出价关联的交易 ID 的出价。只有当返回的交易 ID 与其他报告 ID 和兴趣组的所选属性一起实现 k-匿名化时,出价才能赢得竞价。 - 在广告评分期间,所选交易和席位 ID 会提供给卖方。
- 交易 ID 和席位 ID 将在卖方的报告函数中提供。
- 买方的报告功能中会提供交易 ID 和席位 ID。
1. 交易和席位 ID 注册
买方在竞价开始之前在兴趣组配置中注册交易和席位 ID。交易 ID 和席位 ID 在 selectableBuyerAndSellerReportingIds 中设置为字符串数组。如果所有交易的席位 ID 相同,且无需重复,则可以在接受字符串的 buyerAndSellerReportingId 字段中添加席位 ID:
const interestGroupConfig = {
owner: 'https://buyer.example',
name: 'example-ig',
ad: [
{
renderURL: 'https://buyer.example/ad.html',
selectableBuyerAndSellerReportingIds: ['deal123', 'deal456', 'deal789'], // Deal IDs
buyerAndSellerReportingId: 'seat123', // Seat ID
// Though it is not used to facilitate deals, the buyer
// reporting ID can be defined with other reporting IDs
buyerReportingId: 'brid123'
},
],
};
navigator.joinAdInterestGroup(interestGroupConfig);
如果不同交易的席位 ID 不同,则可以使用以下设置:
const interestGroupConfig = {
owner: 'https://buyer.example',
name: 'example-ig',
ad: [
{
renderURL: 'https://buyer.example/ad.html',
selectableBuyerAndSellerReportingIds: [
'deal123seat123',
'deal456seat456',
'deal789seat456'
], // Deal and Seat IDs
},
],
};
navigator.joinAdInterestGroup(interestGroupConfig);
2. 出价生成期间买方的交易 ID 和席位 ID
在生成出价期间,买方会决定是否要针对交易 ID 出价。在 generateBid() 中,买方可以从 selectableBuyerAndSellerReportingIds 中选择交易 ID,并将该值作为 selectedBuyerAndSellerReportingId 返回。如果所选交易 ID 不在 selectableBuyerAndSellerReportingIds 数组中,则出价会被拒绝。
function generateBid(interestGroup, ...) {
const [{
buyerAndSellerReportingId, // 'seat123'
selectableBuyerAndSellerReportingIds // ['deal123', 'deal456', 'deal789']
buyerReportingId // 'brid123' - Not used for deals, but the value is available
}] = interestGroup.ads;
// ...
return {
bid: 1,
render: 'https://buyer.example/ad.html',
selectedBuyerAndSellerReportingId: 'deal456', // Buyer selects a deal ID
};
}
如果出价的 selectedbuyerAndSellerReportingId 返回了值,则只有当 selectedbuyerAndSellerReportingId 的值与 buyerAndSellerReportingId(如果存在)、buyerReportingId(如果存在)、兴趣组所有者、出价脚本网址、呈现网址和广告尺寸共同具有 k-匿名性时,该出价才能赢得竞价(在 2025 年第 1 季度之前,广告尺寸不会纳入此检查范围)。
即使在兴趣组配置中定义了 selectablebuyerAndSellerReportingIds,generateBid() 仍可返回不包含 selectedbuyerAndSellerReportingId 的出价;在这种情况下,如果此出价胜出,提供给报告函数的报告 ID 将遵循不可选择的报告 ID 行为。
如果因初始调用未生成任何通过 k-匿名性检查的广告而重新运行 generateBid(),则在重新运行时,未通过 k-匿名性检查的 selectableBuyerAndSellerReportingIds 将不会出现在兴趣组中。
3. 广告评分期间卖方的交易 ID 和席位 ID
所选交易 ID(以及席位 ID,如果有)可供 scoreAd() 访问。卖家会提供胜出出价的理想程度得分,其中会考虑交易 ID 和任何特殊条款。如果卖方认为买方选择的交易 ID 不适用,则会通过为出价提供零或负的期望值得分来拒绝出价。
function scoreAd(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'seat123'
selectedBuyerAndSellerReportingIds, // 'deal456'
} = browserSignals;
// ...
}
4. 卖家报告的交易 ID 和席位 ID
请注意,只有当出价与兴趣组所有者、出价脚本网址、呈现网址和广告尺寸(至少在 2025 年第 1 季度之前,广告尺寸不会纳入此检查范围)满足 selectedBuyerAndSellerReportingId、buyerAndSellerReportingId(如果存在)和 buyerReportingId(如果存在)的 k-匿名性要求时,出价才能赢得竞价。因此,包含 selectedBuyerAndSellerReportingId 的报告 ID 值将始终可在 reportResult() 中使用。请注意,即使 buyerReportingId 经过了 k-匿名性检查,该值也仅适用于买方报告函数,而不适用于此处的卖方报告函数。
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'seat123'
selectedBuyerAndSellerReportingIds // 'deal456'
} = browserSignals;
// ...
}
5. 买家报告的交易 ID 和账号 ID
卖家报告中的相同概念也适用于买家报告。请注意,只有当出价与兴趣组所有者、出价脚本网址、呈现网址和广告尺寸(至少在 2025 年第 1 季度之前,广告尺寸不会纳入此检查范围)满足 selectedBuyerAndSellerReportingId、buyerAndSellerReportingId(如果存在)和 buyerReportingId(如果存在)的 k-匿名性要求时,出价才能赢得竞价。因此,包含 selectedBuyerAndSellerReportingId 的报告 ID 值始终可在 reportWin() 中使用。
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'seat123'
selectedBuyerAndSellerReportingId // 'deal456'
buyerReportingId // 'brid123' - Not used for deals, but the value is available
} = browserSignals;
}
互动和分享反馈
- 如需详细了解报告 ID,请参阅 Protected Audience 说明文档的“报告 ID”部分。
- GitHub:在 API 代码库的问题中提出问题并关注讨论。
- W3C:在 WICG 通话中讨论行业用例。
- 公告:加入或查看邮寄名单。
- Privacy Sandbox 开发者支持:在 Privacy Sandbox 开发者支持代码库中提问和参与讨论。
- Chromium:提交 Chromium bug,询问有关可在 Chrome 中测试的实现的问题。