# 用户匹配与外部数据打通：平台官方机制提权（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`

---

## 9. 参考链接（官方入口）

- **Meta / Facebook**
  - [Meta Conversions API](https://developers.facebook.com/docs/marketing-api/conversions-api/)
  - [Meta Marketing API](https://developers.facebook.com/docs/marketing-api/)
  - [Facebook Login（OAuth 手动流程）](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/)
- **Google**
  - [Google Ads API（Start）](https://developers.google.com/google-ads/api/docs/start)
  - [Google Ads API OAuth（Overview）](https://developers.google.com/google-ads/api/docs/oauth/overview)
- **TikTok**
  - [TikTok for Business / Marketing API Docs](https://ads.tiktok.com/marketing_api/docs)
  - [TikTok Events API（文档入口）](https://ads.tiktok.com/marketing_api/docs?id=1701890979375106)


