SupplyChain 对象让买方和中间方能够了解正在销售/转售广告资源的各方。该对象可与 ads.txt/app-ads.txt 和 sellers.json 结合使用,以提高广告生态系统的透明度。
- 发布商发送出价请求。
- 买方通过 SupplyChain 对象收到出价请求和相关数据。
- 买方查找转销广告资源的所有中间方的身份信息。
- 买方抓取并验证获授权销售广告资源的供应商。
在适用的情境下,Google 会自动在 OpenRTB 请求中创建这类对象。
SupplyChain 对象的工作原理
SupplyChain 对象(也称为 )是 OpenRTB 出价请求的一部分,由多个“节点”构成。schainschain 对象中的每个节点都代表一个参与出价请求的特定实体,出价请求则包含了广告资源的直接付款流程中涉及到的所有实体。
sid)。
// 示例对象
"schain": {
"complete": 1,
"nodes": [{
"asi":"google.com",
"sid":"pub-1234567891234567", // 与 sellers.json 中发布商的 seller_id 相同
"hp":1
}],
"ver":"1.0"
}
如需了解更多详情,请阅读 OpenRTB 的开发者文档和 IAB 的文档。
SupplyChain 对象的外观会有所不同,具体取决于您与买方的合作方式。
直接通过 Google 销售广告资源的发布商
对于直接通过 Ad Manager、AdMob 或 AdSense 销售广告资源的发布商,schain 对象仅包含 1 个代表“google.com”的节点,相应的 seller_id 可在 sellers.json 中找到。
使用公开出价的发布商
对于使用公开出价与第三方广告交易平台合作的发布商,schain 对象中有两个节点:一个节点代表 google.com(该节点的 seller_id 可在 sellers.json 中找到),另一个节点代表广告交易平台收益合作伙伴。
就像 Google 会在发送出价请求之前创建代表 google.com 的节点一样,第三方广告交易平台负责在传递该请求之前添加自己的节点。
所有非付款中间方
不处理付款的中间方不会包含在 SupplyChain 对象中。这包括客户端标头出价、非支付标头出价、广告资源共享和其他中介。
在发出请求之前使用支付中间方的发布商 (测试版)
Beta 版阶段的功能可能并未在您的广告资源网中提供。敬请关注版本说明,了解此功能何时会推出正式版。
在向 Google Ad Manager 发出请求之前利用支付中间方的发布商必须根据 IAB 指南传递 SupplyChain 对象。SupplyChain 对象应仅包含直接参与广告资源支付流程的中间方。此类中间方可能包括发布商使用的第三方广告服务器技术。您可以使用 SupplyChain 参数在广告请求中发送 SupplyChain 对象。
说明
“供应链”(schain) 参数接受一个变量值,该值应为序列化的 SupplyChain 对象。包含此参数时,Google 会在将任何收到的 schain 对象发送给买方之前,向其附加一个节点。
如需了解如何通过代码(而非 OpenRTB)传达 SupplyChain 信息,请参阅完整的 IAB 文档。
查看正确解析schain 需遵循的要求
下面根据 IAB 文档定义了 SupplyChain 对象的序列化:
{SupplyChainObject}!{SupplyChainNode array}。SupplyChainObject和SupplyChainNode属性都以英文逗号分隔,因此可选字段可以省略,并且可以选择性地排除相应的英文逗号分隔符。- 各个
SupplyChainNode元素间用“!”分隔。 - 如果任何属性的值包含需要进行网址编码的字符(例如“
,”或“!”),则应先对该值进行网址编码,然后再进行序列化。
序列化顺序
SupplyChainObject 属性按以下顺序进行序列化:
ver,complete
SupplyChainNode 属性按以下顺序进行序列化:
asi,sid,hp,rid,name,domain,ext
ext 的内容因广告交易平台而异。Google Ad Manager 不会解析此属性。有关如何序列化 SupplyChain 对象的示例
下面是序列化上述 SupplyChain 对象的两种方法示例:
1.0,1!exchange1,12345,1,bid-request-1,publisher1,publisher1.com!google.com,pub-12345678910,1,,,,
1.0,1!exchange1,12345,1,bid-request-1,publisher1,publisher1.com!google.com,pub-12345678910,1
用法示例
schain=1.0,1!exchange1,12345,1,bid-request-1,publisher1,publisher1.com!google.com,pub-12345678910,1,,,,
如果 asi 的值为 exchange,1,则使用转义字符进行序列化后的结果如下所示:
1.0,1!exchange%2C1,12345,1,bid-request-1,publisher1,publisher1.com!google.com,pub-12345678910,1
要求和建议
虽然对于任何特定实现或交易类型而言,无需此参数即可投放广告,但对于在向 Google Ad Manager 发出请求之前利用支付中间方的发布商,此参数为必需参数。其中包括使用第三方广告服务器技术的发布商。
SupplyChain 对象的任何其他节点也应在发布商的 ads.txt/app-ads.txt 文件中体现出来,否则买方可能会认为流量未经授权。使用“多客户管理”的发布商
通过多客户管理 (MCM),父级发布商可以逐个地(借助“管理帐号”这一委托类型)或批量地(借助“管理广告资源”这一委托类型)利用子发布商的广告资源创收。
对于使用“管理帐号”的合作伙伴
对于使用管理帐号这一委托类型的父级发布商和子发布商,schain 对象会有 1 个包含子发布商的卖方 ID 的节点,并且相应链会被标记为完成。对于使用“管理帐号”这一委托类型的发布商,创收是在子发布商的帐号中进行的。子发布商会被视为最终发布商。父级发布商的信息未包含在 schain 对象中。
对于使用“管理广告资源”的合作伙伴
SupplyChain 对象现已针对 MCM 管理广告资源发布商标记为已完成。MCM 中的子发布商会对应 1 个节点,MCM 中的父级发布商也会对应 1 个节点,整条供应链将得以成功闭合。
此次更新要求 MCM 工具中的“管理广告资源”父级必须通过 Ad Manager 前端或 API 共享其子发布商的卖方 ID (SID)。
完整 SupplyChain 对象示例
"schain" : {
"ver": "1.0",
"complete" : 1,
"nodes" : [
// MCM 子发布商的节点
{
"asi":"mcm-parent-example.com", // 这是一个示例。请务必输入父级的实际域名。
"sid":"52e41fac28963d1e058a106f", // 父级发布商的 seller.json 中的子卖方 ID
"hp":1,
},
// MCM MI 父级对应的节点
{
"asi":"google.com",
"sid":"pub-1234567891234567", // Google 的 seller.json 中的 MCM 父级发布商 ID
"hp":1,
}
]
}
常见问题解答
为什么 MCM 中的父级发布商需要创建 sellers.json 文件?
通过允许在 sellers.json 文件中列出合作伙伴的信息来公开这些信息,是帮助广告买方验证其广告资源的重要步骤。
详细了解 IAB sellers.json 规范。
我的所有子发布商是否都必须具备有效的 ads.txt 文件?
如果子发布商的 ads.txt 不包含将 MCM 中的父级发布商列为“DIRECT”的行(例如 MCM-parent-example.com, Seller-ID for the MCM child, DIRECT),但其中列出的 Google 行包含父级发布商 ID(例如 google.com, PUB ID for the MCM parent, RESELLER, f08c47fec0942fa0),收入是否会受到任何负面影响?供应链是否会被标记为完成?