反向 ETL 激活(数仓到 GTM)
数仓是事实来源。该技能把计算好的受众从数仓中移出,送入 GTM 实际发生的工具里,同时避免污染这些工具。它要预防的失败模式是:一个简单的“同步整张表”任务写入了半匹配行、反复写入未变更记录、超出 API 速率限制,并把被抑制或未同意的联系人推入序列。每次都应按照以下顺序执行。
输入(缺失时暂停并询问)
来源:数仓,以及已打分/已分群受众的确切模型或表(例如 analytics.gtm.enterprise_high_intent)。确认粒度:账户、联系人,或两者兼有。
目标:CRM(Salesforce/HubSpot)、广告平台(Meta/Google/LinkedIn),和/或序列工具(Outreach/Salesloft/Swan)。每个目标都有自己的对象模型和限制。
同步键:用于将数仓行与目标记录匹配的稳定标识(域名、邮箱、CRM Id、广告平台匹配键)。
字段映射:哪些数仓列映射到哪些目标字段,以及哪些字段在目标中是只读的。
流程
写入前先做身份解析。用同步键将每个数仓账户/人员映射到目标记录。应用匹配置信度下限(默认 0.90)。低于下限的行进入隔离待审列表,绝不猜测创建。多对一歧义匹配(两行数仓数据对应一个 CRM 账户)按确定规则合并(最近、最高分),绝不重复。
计算变更数据捕获(CDC)差异。将解析后的受众与上次同步状态比较。只同步真实变更:新增、字段级变更(而非整行)、预期移除。未变更的行绝不同步(这是拖垮 API 预算和审计日志的根源)。
字段映射需带类型/格式保护。强制转换并校验每个映射字段:日期转为目标格式、枚举转为允许的选项值、货币/数字类型、字符串长度上限。模式校验失败的行应连同原因被拒绝到错误列表,而不是强制写入。
应用抑制和同意门槛。剔除拒联/退订列表中的对象、不符合区域/同意要求(GDPR/CCPA)的对象,以及频道特定规则排除的对象(例如不向已退订联系人推送广告平台)。抑制在匹配之后运行,以便准确记录谁被拦下及原因。
按目标限制分批和调度。按各 API 的批大小和速率限制分块(默认批 200),遇到 429 退避重试,并按目标安排节奏(默认:CRM 近实时、广告受众每小时、序列需显式报名步骤,绝不自动)。
先干跑。输出计划的新增/更新/抑制/错误,附计数和每类样本。执行最大删除保护:若预期移除超过受众的一定比例(默认 10%),中止并报告,不在上游异常运行时大量删除。除非运行低于自动批准阈值,否则需人工签核。
正式同步,然后对账。执行、捕获逐行成功/失败,并生成对账报告:各对象预期数量与实际写入数量、错误行及原因、被抑制行。持久化新的同步状态,使下次运行的 CDC 正确。
可调默认值
match_confidence_floor: 0.90 · batch_size: 200 · max_delete_guard: 受众的 0.10 · auto_approve_under: 500 行 · sequence_enrollment: 手动门槛 · cadence: {crm: 实时, ads: 每小时, sequencer: 报名时}
输出
同步计划:解析后的受众、字段映射、各目标调度。
干跑差异:新增/更新/抑制/错误,附计数与样本。
对账报告:各对象预期与实际写入、错误行及原因、被抑制行、新同步状态指针。
说明
绝不要让序列工具在数仓同步后自动报名;上游过滤条件出错会变成大规模误发。报名始终是独立、带门槛的步骤。
若身份解析对相当一部分受众无法达到下限,问题在上游(缺少键),不在此处。应修复模型,而非降低下限。
数仓对计算特征(评分、层级、分群)具有权威性;CRM 对销售代表拥有的字段具有权威性。绝不要让同步覆盖销售代表拥有的字段。