多币种出价方Prebid对接GAM 360匹配错位问题最优解决方案咨询
多币种Prebid+GAM适配最优解决方案
方案1:调整Currency模块原生配置(改造成本最低)
Prebid Currency模块本身支持「统一换算货币做竞价排序、输出到广告服务器时保留出价方原始出价」的能力,仅需添加2行配置即可解决你的问题:
- 在Prebid配置的
currency节点下,设置adServerCurrency为你用来做竞价排名的基准货币(比如你案例中用来统一换算的TRY) - 新增配置项
useBidCurrencyForCpm: true
开启该配置后,你的场景运行逻辑会变为:
- Prebid内部接收所有出价后,统一换算为
adServerCurrency指定的TRY做竞价排序,1USD换算为8TRY高于bidder_B的5TRY,bidder_A正确胜出 - 胜出后生成发往GAM的键值对时,自动读取bidder_A的原始出价(1USD)填充
hb_pb字段,输出hb_bidder=bidder_A、hb_pb=1.00,和你已配置的USD币种订单项完全匹配,无需修改任何GAM侧配置
方案2:自定义出价钩子适配(适配旧版Prebid)
如果你使用的Prebid版本不支持useBidCurrencyForCpm参数,可以通过bidResponseHook拦截胜出出价,手动回写原始出价:
pbjs.bidderSettings.addHook('bidResponse', (bid, next) => { // Currency模块会将原始出价存储在originalCpm字段,原始价格档位存储在originalPbMg字段 if (bid.originalCpm) { bid.cpm = bid.originalCpm; bid.pbMg = bid.originalPbMg; } next(bid); });
该方案仅需添加几行前端代码,无需调整现有GAM配置、无需开启「Send all bids to the ad server」功能。
注意事项
- 需确保Currency模块的汇率配置同步准确,避免汇率偏差导致竞价排序错误
- 上线前需覆盖不同出价方胜出的测试场景,验证输出的
hb_pb、hb_bidder键值对与GAM订单项匹配规则一致
内容的提问来源于stack exchange,提问作者Umut KIRGÖZ
相关产品推荐
相关产品推荐

