程序化广告以「以人为中心」的精准投放为核心,而精准投放的基础是跨平台识别同一个用户。
但程序化广告链路上存在多方参与者,每方都有自己的用户 ID 系统:
- 网站(Publisher):使用 Cookie 标识
- SSP / AdX(广告交易平台):自有 ID
- DSP(需求方平台):自有 ID
- DMP(数据管理平台):自有 ID
- PCP(第三方受众平台):自有 ID
- 广告主 Landing Page:可自行埋点
因此,同一个用户会被多次赋予不同的 ID,例如:
| 平台 | 本地 Cookie 名称 | 示例值 |
|---|---|---|
| DSP | AAA | 6z14131… |
| AdX | 111 | adx_7831… |
| 媒体 | uid | uid_123… |
浏览器的同源策略限制Cookie不可跨域读取,这就导致:
各参与者都识别不到彼此的用户 → 无法关联用户画像 → 无法精准出价
这就是Cookie Mapping(Cookie 映射) 的意义。
Cookie Mapping 是什么?
Cookie Mapping = 让两个平台互相知道“你的用户 ID”和“我的用户 ID”对应哪个人。
即:
<a href="https://www.ichdata.com/tag/dsp" title="查看更多关于DSP的文章" target="_blank">DSP</a> ←→ AdX AAA 111
它的结果是一张 Match Table(映射表)
| DSP Cookie | AdX Cookie |
|---|---|
| AAA123 | 111999 |
| AAA000 | 111888 |
只有当 DSP、AdX、DMP 等平台能正确识别人,程序化广告才具备:
- 频次控制(Frequency Capping)
- 智能出价(Bid Optimization)
- 重定向(Retargeting)
- 用户画像定向(Audience Targeting)
APP环境不需要 Cookie Mapping:因为 APP 使用设备唯一 ID(IDFA、GAID、OAID),不需要跨域映射。
Cookie Mapping 三要素
| 问题 | 说明 |
|---|---|
| 谁发起? | 谁需要这段关系,谁就可能发起(DSP、AdX、DMP、PCP 均可发起) |
| 使用谁的CM代码? | 一定是被匹配方的代码(因为需要访问对方Cookie) |
| 谁保存Match Table? | 默认发起方保存,也可能双方都保存(单向/双向Mapping) |
当某平台收到广告请求时:
- 从请求中解析对方的 UID(如 AdX-UID)
- 到自己的 Match Table 查是否存在映射
- 如果找不到 → 触发 Cookie Mapping
- 找到 → 正常出价,无需映射
Cookie 是会过期的,因此映射需要周期性刷新。
常见Mapping组合
| Mapping 组合 | 是否常见 | 说明 |
|---|---|---|
| DSP ↔ AdX | ⭐⭐⭐⭐⭐ | 主流方式 |
| AdX 主动发起 | ⭐⭐⭐⭐ | 大平台常见(Google, Facebook, 百度BES) |
| DSP ↔ DMP | ⭐⭐⭐ | DMP为DSP 补足用户画像 |
| PCP ↔ DMP | ⭐⭐⭐ | 媒体侧或第三方受众系统 |
| DSP ↔ PCP | ⭐⭐ | DSP使用第三方定向能力 |
我们这里只介绍三种方式:一种是是DSP和ADX,这个是主流的模式;一种是ADX主动发起的;一种是独立PCP和独立DMP的,这种是涉及独立广告服务平台的;其他按照前面的类似逻辑去处理。
在介绍Cookie Mapping之前先了解RTB的竞价过程。
Cookie Mapping触发原则:什么情况下需要映射?
我们先来看一下竞价的过程:
- 1、用户浏览网站,网站是接入广告交易平台的,判断是否符合如何要求后向ADX发起广告请请求
- 2、广告交易平台发起竞价活动,向不同的DSP发送bid request,里面会包含有访客信息
- 3、DSP根据发送的信息,去自己的用户系统,DMP查询匹配出用户的信息(如果找不到 → 触发 Cookie Mapping),根据这些信息去出价
- 4、ADX中交易,价高者得,此高结算
- 5、返回竞得者信息给网站
- 6、网站请求广告资源素材
- 7、返回广告资源素材
在上面第3步的时候,从AdX接到的信息里面会有AdX-UID,这个是AdX专门用于Cookie Mapping的一个ID,如果DSP的系统里面找不到这个ID,那么就需要发起Cookie Mapping,如果找得到,那么直接就用找到的一些维度,用于计算该不该出价,该出多少。
第一类:DSP 发起的 Cookie Mapping(最主流)
接下来我们来看一下Cookie Mapping是怎么运行的,也就是没有Cookie或清除Cookie的时候:
前面的4步都是一样的
5、赢得广告展示后,由于在Match Table找不到该用户的信息,DSP发送广告素材和Match Tag(匹配标签)
匹配标签是由ADX提供的,上面会有对应的DSP的ID,Match Tag的结构如:
img src="http://cm.adx.net/pixel?dspid=1234&adx_cm
代码中的1234就是DSP的ID了。
6、将DSP发送广告素材和Match Tag发送给浏览器,如果是网站直接请求,则DSP直接到网站。
7、浏览器加载到Match Tag时,向ADX调用Cookie Match Server(所以Cookie Mapping能否实施是依赖AdX,有些AdX是需要另外申请才可以开通这个服务)
8、Cookie Mapping Server触发后,通过dpsid去获得对应DSP的接口和token,由于浏览器的限制,Cookie不能跨域访问,但ADX能通过http heeder获得在该域中下的 Cookie,将ADX的Cookie加密后生成一个openid,再将openid加到302重定向后的查询参数位置,重定向后的地址如:
http://ad.dsp.com/pixel?openid=dGhpcyBpcyBhbiBleGFtGxl&cver=1
DSP需要提供一个接口才能做跳转,假设DSP会提供如下的接口:
http://ad.dsp.com/pixel
9、浏览器加载DSP的url重定向,DSP接收到重定向请求后,从http和查询参数中解析的Cookie,重定向后跳转URL为:
http://ad.dsp.com/pixel?openid=dGhpcyBpcyBhbiBleGFtGxl&cver=1
里面openid就是加密后的ADX的的用户标识,然后在通过Http Header获取DSP的Cookie,再将映射关系存到Match Table。
10、发送一像素的图片到web页面,将映射关系种到cookie里。
至此,Cookie Mapping就完成。
如果是已经种好Cookie的,那么在第2步在Match Table里面查询到直接就用于出价的计算,赢得广告展示机会返回的就只有广告素材。
如果是双向Cookie Mapping,第10步的同时还会向ADX搭起一个携带有映射关系的请求,ADX如有对应借口则可以保存这个映射关系,实现DSP和ADX都保存有Match Table。
Cookie Mapping不是所有的成功竞价都会发起的,只有在用户系统里面找不到的时候才发起。Cookie是有有效期的,而且用户也可以主动清除Cookie,Cookie是会失效的,所以需要定期重新mapping。
对于一个新的DSP平台来说,可以预想得到的时候它的Match Tables(就是存储的匹配表)是很低,所以前期的精准度是比较低的,会发起比较多的Cookie Mapping去构建自己的Match Tables,可以选择一些已经投放比较大的平台,这类平台积累的Match Table会比较全和精准。
Cookie Mapping是精准营销的基础,但Cookie Mapping需要双方都有对应的API接口和匹配服务,不是所有的平台都会有,很多的DSP却对Cookie Mapping只是有限的支持,所以在数据打通上的能力也是有限的,特别是垂直媒体的。
第二类:AdX 主动发起(大平台提供的 Mapping 方式)
ADX可以做主动的Cookie Mapping服务,以此能够扩大Cookie Matched的比例,将Cookie Matched Table上传到ADX的服务器中,ADX发起和保存的流程如下:
1、用户浏览网站,网站是接入广告交易平台的,判断是否符合如何要求后向ADX发起广告请求
2、广告交易平台根据广告请求的里的ADX的Cookie去DSP的Match Table匹配,找对应的属于DSP的Cookie,匹配后会有不同的逻辑:如匹配到就发起竞价活动;匹配不到的话,根据其他的角度判断,是否发送竞价活动,如果不发,就结束,如果发就继续。
3、 Match Table没有匹配到且发起竞价请求的情况才会有Cookie Mapping,广告交易平台发起竞价活动,向不同的DSP发送bid request,里面会包含有访客信息。
4、DSP根据发送的信息出价
5、ADX通知赢得广告展示
6、DSP发送广告素材发送给ADX
7、由于在Match Table找不到该用户的信息,ADX发起Match Tag连同广告素材发给浏览器,匹配标签是由DSP提供的,上面会有对应的ADX的ID,Match Tag的结构如:
<img src="http://cm.dsp.com/pixel?adxid=1234" />
代码中的1234就是ADX的ID了。
8、浏览器加载到Match Tag时,生成DSP的Cookie,向DSP调用Cookie Match Server
9、Cookie Mapping Server触发后,通过adxid去获得对应DSP的接口和token,由于浏览器的限制,Cookie不能跨域访问,但DSP能获得到DSP的Cookie,将DSP的Cookie加密后生成一个openid,再将openid加到302重定向后的查询参数位置,重定向后的地址如:
http://adx.network.com/pixel?openid=dGhpcyBpcyBhbiBleGFtGxl
ADX需要提供一个接口才能做跳转,假设ADX会提供如下的接口:
http://adx.network.com/pixel
10、浏览器加载ADX的url重定向,ADX接收到重定向请求后,从http查询解密参数中解析DSP的Cookie,重定向后跳转URL为:
http://adx.network.com/pixel?openid=dGhpcyBpcyBhbiBleGFtGxl
里面openid就是加密后的DSP的的用户标识,再通过http header去获取ADX的cookie,然后将映射关系存到Match Table。
11、发送一像素的图片到web页面,将映射关系种到cookie里。
至此,Cookie Mapping就完成。
目前如Google、Facebook、百度的BES都提供Match Table托管,Match Table托管有如下的优点:
- 节省流量:只发已匹配用户给DSP(Pre-targeting)
- 缩短响应时间:DSP免检索,直接获得映射后的 UID
- 提高匹配率:由AdX主动触达所有 DSP
第三类:PCP发起 → DMP Mapping(适用于独立受众平台)
媒体使用独立的 PCP(Publisher-side Customer Platform),DSP使用独立的DMP,二者需要共享用户 ID。
下面是PCP向DMP发起的简要过程:
1、PCP在广告创意中嵌入DMP提供的 tag:,如:
<img src="http://www.dmp.com/?pcp_id=ichdata&pcp_uid=ichdat123">,
PCP需在后面拼接其pcp_id以及pcp_uid,以及接受服务。
2、由浏览器直接向DMP服务器发起cookie tag识别请求,请求会带上PCP用户cookie_id,DMP可以据此进行cookie mapping。
3、DMP识别用户标签后,由服务器后端直接向PCP API服务器发起callback请求,异步回写cookie tag数据。






