Blame view

docs/用户匹配与外部数据打通-平台官方机制提权.md 13.2 KB
fbc7f114   tangwang   docs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
  # 用户匹配与外部数据打通:平台官方机制提权(Meta / Google Ads / TikTok)
  
  > 本文是“提权版”总结:只聚焦 **用户匹配(Identity Resolution)** 与 **外部数据打通(Ad/Social/Search)** 两件事,基于平台官方机制(OAuth 授权、Server-to-Server 事件回传、报表/洞察拉取、Advanced Matching/Enhanced Conversions)整理成可落地的工程手册。
  >
  > 与整体 S2S 对接的关系:更完整的“全渠道闭环、归因标签字段、端到端案例”请见 `docs/全渠道数据整合-广告平台S2S对接手册.md`,本文不重复那部分,只做“匹配/打通”的深挖。
  
  ---
  
  ## 0. 提权结论(先给结论)
  
  ### 0.1 “用户匹配”在广告平台里到底是什么?
  
  平台不会把“用户身份”回传给你;用户匹配的本质是:
  
  - 你把**站内事件**(购买/加购/注册…)通过 S2S 回传给平台
  - 事件里携带一组 **可匹配标识符**(click id、一方 cookie id、哈希化 PII、IP/UA 等)
  - 平台用这些标识符把事件与其广告触达(点击/曝光/设备图谱)关联起来,从而:
    - 让平台的**归因/投放优化**成立(平台侧收益)
    - 让你能从平台报表拿到更准确的**聚合归因维度**(campaign/adgroup/keyword/cost…)并回灌你的 CDP/画像(你侧收益)
  
  ### 0.2 “外部数据打通”最稳定的三件套(跨平台通用)
  
  按稳定性从高到低:
  
  - **(1) click id / 广告点击链路标识**`fbclid` / `ttclid` / `gclid` / `wbraid` / `gbraid`
  - **(2) 一方标识符(first-party id)**:浏览器/设备侧的一方 cookie(例如 `_fbp/_fbc/_ttp` 等)+ 你们自己的 `anonymous_id`
  - **(3) 哈希 PII(Advanced Matching / Enhanced Conversions)**:邮箱/手机号/姓名地址等标准化后 SHA-256(必须 consent + 合规)
  
  > 真实世界落地建议:实时推荐/实时分群尽量依赖 (1)(2);(3) 用于提升匹配率、跨设备、以及广告侧归因完整性。
  
  ### 0.3 跨设备(Cross-Device)在你们 SaaS 里怎么做“最小可用”?
  
  不要一上来就做“设备指纹 + 概率图谱”作为主链路;MVP 最小闭环:
  
  - **确定性合并**(Deterministic):登录/下单/留资触发 `anonymous_id → user_id/email/phone` 合并
  - **外部匹配增强**(Platform Matching):在回传事件里带哈希邮箱/手机号 + click id + 一方 cookie id,让平台用它自己的跨设备图谱完成归因优化
  - **你们内部**:沉淀 Identity Graph(节点=各种 ID,边=同人证据),后续再迭代概率匹配
  
  ---
  
  ## 1. 统一“可匹配标识符”字典(跨平台抽象)
  
  建议你们内部事件模型统一下列字段(平台字段差异只在适配层解决):
  
  - **租户与用户**
    - `tenant_id`
    - `anonymous_id`(你们 SDK 生成)
    - `user_id`(商家会员/登录用户)
  - **入口与归因**
    - `landing_url`(白名单参数、脱敏)
    - `referrer`(脱敏)
    - `utm_*`
    - `click_id`:`fbclid | ttclid | gclid | wbraid | gbraid`
    - `attribution_platform`:`meta | tiktok | google_ads | ...`
  - **一方 cookie / 平台浏览器标识**
    - `meta.fbp`、`meta.fbc`
    - `tiktok.ttp`
  - **匹配增强(哈希 PII)**(可选,合规后启用):
    - `email_sha256`
    - `phone_sha256`
    - (可扩展)姓名/地址等(不同平台支持程度不同)
  - **设备/网络信号(通常作为辅助手段)**
    - `client_ip`、`user_agent`
    - `device_type`、`os`、`browser`
  
  > 关键:这些字段不是“为了把用户身份拿回来”,而是为了让 **平台能匹配、你能做 join**。
  
  ---
  
  ## 2. Meta(Facebook/Instagram):官方授权机制 + Conversions API 用户匹配
  
  参考(官方):
  
  - `https://developers.facebook.com/docs/marketing-api/conversions-api/`
  - `https://developers.facebook.com/docs/facebook-login/`(OAuth/登录)
  - `https://developers.facebook.com/docs/marketing-api/`(广告报表/洞察)
  
  ### 2.1 授权机制(合作伙伴常用形态)
  
  你们会遇到两类“凭证来源”,工程上要分清:
  
  #### A) 广告/报表类权限(读取投放结构与 Insights)
  
  - 典型是 OAuth 授权后拿到 access token,再用 token 调用 Marketing API(读取账户、campaign、insights)
  - 你们需要做:
    - token 加密存储、按 `tenant_id` 隔离
    - token 续期/失效处理
    - 权限最小化(常见 `ads_read` 起步)
  
  #### B) CAPI 事件回传凭证(Pixel/数据源 Access Token)
  
  - CAPI 常见方式是在 Events Manager / Pixel 设置里生成一个“用于回传事件的 token”
  - 工程意义:这更像“写入凭证”,与“读取报表” token 可以不是同一个体系
  
  > 提权点:**不要把 CAPI token 当作 OAuth token** 去做复杂权限管理;在你们 SaaS 里把它作为“数据源写入密钥”管理(可轮换、可禁用、可审计)。
  
  ### 2.2 用户匹配(Advanced Matching)在 CAPI 里怎么落地?
  
  你回传事件时,Meta 侧的匹配信号主要来自三块:
  
  - **点击链路**`fbclid`(落地页 URL 参数)→ 你生成/保存 `fbc`
  - **浏览器标识**`fbp`(通常由 Pixel/你们 SDK 生成的一方 cookie)
  - **哈希化 PII**:邮箱/手机号等(标准化后 SHA-256)
  
  你们应该实现的“最低配 CAPI user_data”组合:
  
  - **优先**`fbp + fbc`(对 web 场景非常关键)
  - **增强**`email_sha256` / `phone_sha256`(用户登录/下单后可得,显著提升跨设备/匹配率)
  - **辅助**`client_ip_address + client_user_agent`(常见必填/强建议字段,按官方要求为准)
  
  ### 2.3 Meta 能“获取”到哪些外部数据?(澄清)
  
  Meta 分两条线:
  
  - **你从 Meta 拉到的**:投放结构 + 聚合报表(insights:展示、点击、花费、聚合转化等)
  - **你回传给 Meta 的**:站内事件(Purchase/AddToCart…)+ 匹配标识符(fbp/fbc/哈希PII…)
  
  > 提权点:Meta 不会把“用户是谁”回给你;你要的“外部数据”是 **campaign/adset/ad 层级的聚合指标**,用于与你站内画像做 join。
  
  ### 2.4 Meta 打通闭环的最小工程动作
  
  - **商家侧**
    - 确保落地页保留 `fbclid`
    - 允许写入一方 cookie(`_fbp/_fbc`)或由你们 SDK 兼容生成
  - **你们 SaaS**
    - 采集:落地页 → 解析 `fbclid` → 写入/读取 `fbp/fbc` → 上报到你们
    - 订单:下单时把 `order_id ↔ anonymous_id/user_id ↔ fbp/fbc` 绑定
    - 回传:用 CAPI 回传 Purchase(带 `event_id` 做去重)
    - 富化:定时拉 insights,把 campaign 维度指标回灌画像/分析库
  
  ---
  
  ## 3. Google Ads:官方授权机制 + 归因标签 + Enhanced Conversions
  
  参考(官方):
  
  - `https://developers.google.com/google-ads/api/docs/start`
  - `https://developers.google.com/google-ads/api/docs/oauth/overview`
  -(增强型转化/Enhanced Conversions 官方入口通常在 Google Ads/Tag/Measurement 文档体系中,落地时请以最新官方页为准)
  
  ### 3.1 授权机制(你们最常见的 SaaS 形态)
  
  Google Ads API 通常涉及:
  
  - **Developer Token**:你们应用级别的“开发者资质”
  - **OAuth 2.0**:商家授权你们访问其 Google Ads 账户
  - **Manager Account (MCC)**(可选):你们作为管理账号,集中管理多个客户账号(更适合 SaaS)
  
  > 提权点:从产品策略上,建议你们尽早支持“通过 MCC 管理多商家”,否则单店授权与权限维护成本会在规模化后爆炸。
  
  ### 3.2 归因标签(Attribution Tags):Google 这边你到底要沉淀什么?
  
  Google 侧可串联的关键入口标识:
  
  - `gclid`:点击标识(web/传统场景)
  - `wbraid` / `gbraid`:移动/隐私/特定投放场景下的点击标识(你们应该一并支持采集与存储)
  
  你们内部“归因标签”建议最小字段:
  
  - `google.click_id`:优先存 `gclid`,否则存 `wbraid/gbraid`(并记录类型)
  - `campaign_id` / `ad_group_id` / `keyword_id` / `match_type`(实时意图更稳定)
  - `utm_*`(若商家已有)
  
  > 提权点:不要把“search_term(搜索词)”作为实时意图的核心依赖;它受隐私阈值影响、延迟高。用广告组/关键词/匹配类型更稳定。
  
  ### 3.3 用户匹配(Enhanced Conversions)怎么用?
  
  Enhanced Conversions 的定位与 Meta Advanced Matching 类似:
  
  - 你在回传转化时附带 **哈希化 PII**(邮箱/手机号/地址等,按官方支持字段)
  - 平台用它提升匹配率(尤其跨设备、cookie 受限场景)
  
  你们工程落地建议:
  
  - 只在 **用户已明确同意****商家可合法使用** 的前提下启用
  - 在你们 SDK/后端统一做 **标准化 → SHA-256**(避免商家各自实现造成不一致)
  
  ### 3.4 外部数据打通:Google 能给你什么?
  
  - **你从 Google 拉到的**:campaign/adgroup/keyword 维度的聚合指标(展示/点击/花费/转化…)
  - **你回传给 Google 的**:离线/在线转化(Conversion Upload)
  
  > 提权点:Google 并不会把“某个 gclid 对应哪个用户”回给你;你要做的是把 gclid 与你自己的 `anonymous_id/order_id` 绑定,然后用报表维度做分析/分群/推荐策略。
  
  ---
  
  ## 4. TikTok:官方授权机制 + Events API 用户匹配(Advanced Matching 类能力)
  
  参考(官方):
  
  - `https://developers.tiktok.com/`
  - `https://ads.tiktok.com/marketing_api/docs`
  -(Events API 官方页通常在 Ads/Marketing API 文档下的 Events/Pixel 章节)
  
  ### 4.1 授权机制(Marketing API / 报表拉取)
  
  典型流程:
  
  - 商家在你们后台点击“连接 TikTok” → OAuth → 你们拿到 token
  - 你们用 token 拉取 `advertiser_id` 下的 campaign/adgroup/ad 报表与元数据
  
  ### 4.2 用户匹配:Events API 里的关键标识符
  
  TikTok 场景下最常见的串联信号:
  
  - `ttclid`:点击标识(落地页 URL 参数)
  - `_ttp`:一方 cookie(由 Pixel/SDK 生成或你们 SDK 兼容)
  - 哈希 PII:邮箱/手机号(标准化后 SHA-256,需合规)
  
  ### 4.3 外部数据打通:TikTok 能给你什么?
  
  - **你从 TikTok 拉到的**:投放结构 + 聚合报表(展示/点击/花费/转化…)
  - **你回传给 TikTok 的**:站内关键事件(Purchase/AddToCart…)
  
  ---
  
  ## 5. Cross-Device(跨设备用户关联):你们 SaaS 内部的“身份图谱”落地法
  
  ### 5.1 身份图谱的节点与边(建议数据模型)
  
  - **节点(ID 类型)**
    - `anonymous_id`(你们 cookie/device id)
    - `user_id`(商家会员)
    - `email_sha256`、`phone_sha256`
    - `meta.fbp`、`meta.fbc`
    - `tiktok.ttp`
    - `google.click_id`(gclid/wbraid/gbraid)
  - **边(关联证据)**
    - `login`:同一会话中 `anonymous_id ↔ user_id`
    - `checkout`:同一订单 `order_id` 绑定多个标识
    - `platform_match`:回传事件时同一 payload 中出现(fbp+email_sha256 等)
  
  ### 5.2 合并策略(先确定性,后概率)
  
  - **确定性合并(MVP 必做)**
    - 登录/下单/留资触发合并:把历史匿名行为挂到 `user_id`
    - 采用“主键用户(canonical user)”策略:一旦有 `user_id`,以其为主
  - **概率性合并(迭代项)**
    - 设备指纹/行为序列相似度/IP 近似等
    - 仅作为“候选关联”,不要直接影响计费/归因等敏感逻辑
  
  ### 5.3 你们与平台跨设备能力的边界
  
  - 平台(Meta/Google/TikTok)拥有自己的跨设备图谱:你无法直接拿到其图谱细节
  - 你们能做的是:在合规前提下把更多“可匹配信号”回传 → 平台归因更准 → 你们从报表拿到更可靠的聚合维度
  
  ---
  
  ## 6. “外部数据打通”的标准 Join 方法(你们数据仓库/画像侧)
  
  ### 6.1 两类 Join:实时 vs 离线
  
  - **实时(推荐/分群)**:只依赖你们采集到的入口参数与 click id/一方 cookie
    - 例:用户首次进入就打上 `traffic_source=google_ads`、`g_campaign_id=...`
  - **离线(归因分析/成本/ROI)**:用平台报表把 `campaign_id/ad_id/keyword_id` 维度的指标回灌
    - 例:每天把 cost/conv_value 写入 campaign 维度事实表
  
  ### 6.2 典型数据表建议
  
  - `event_stream`:站内事件(含 click id/一方 cookie/哈希PII)
  - `identity_graph_edges`:ID 关联边(证据、时间、权重)
  - `ad_platform_reports_daily`:平台聚合报表(按 tenant + platform + campaign/adgroup/... + date)
  - `user_profile`:用户画像(实时标签 + 离线标签)
  
  ---
  
  ## 7. 合规与安全(必须前置,不然“提权”变“踩雷”)
  
  - **Consent**:把 consent 状态作为事件字段,决定是否写 cookie、是否回传哈希PII、是否用于个性化
  - **最小化**:只传/存必要字段;`landing_url/referrer` 参数白名单 + 脱敏
  - **哈希规范统一**:标准化(trim、lower、去空格、E164 等)→ SHA-256;避免商家各自实现导致匹配率下降
  - **分租户隔离**:token、数据源密钥、identity graph 必须 tenant 隔离(含日志与备份)
  
  ---
  
  ## 8. 与现有文档的关系(避免重复)
  
  - 全量 S2S 闭环、归因标签字段、端到端案例(更偏“怎么接入平台”):`docs/全渠道数据整合-广告平台S2S对接手册.md`
  - 本文(更偏“为什么这样能匹配、哪些字段/机制能提权匹配率、跨设备怎么做”):`docs/用户匹配与外部数据打通-平台官方机制提权.md`