跨境团队常会先买一个“洗表工具”,再另搭一个通讯录或 CRM 存号。用几个月后会发现:洗过的名单和库对不上,英国号、泰国号各有各的写法,重复触达并没有下降。 全球号码数据库去重系统 要解决的,就是把“存”和“比”收成同一套键,而不是两个互不认识的文件柜。
操作层的国家码问题见 全球号码批量去重。下面写系统为什么必须一体,以及一体之后最小要具备什么。
拆开的后果:洗得越勤,库越脏
两套工具拆开,典型路径是:
- 运营用洗表软件出一份“已去重 csv”
- 有人再手工导入 CRM / 网盘里的总表
- 下次采购包又用洗表软件,但底库还是上次那份总表的原文
中间丢了三样东西:规范化规则版本、来源批次、以及“当时为什么判重复”。下一次文件里的 +66 8xxxxxxxx 和库里的 08xxxxxxxx 对不上,系统会当成新号放行。钱照花,投诉照来。
全球场景下这个问题更重:同一人在不同渠道包里的国家码写法本来就不统一。没有共享的键,数据库只是在堆字符串。
一体系统里,键只生成一次
全球号码数据库去重系统的主路径应当是:
新文件 → 按任务默认地区规范化 → 得到键 → 文件内去重 → 对库去重 → 通过号可选择写入底库
库里 unique 的是键,不是用户看见的那一格。每条记录仍保留 raw、region、source、rule_version,事后才能解释结果。表怎么拆,见 号码数据库系统怎么设计;格式规则怎么做,见 全球号码去重系统开发。
“数据库”两个字在这里不是营销词。没有可回滚的底库,去重系统每次都从零开始,做不到全球业务要的那件事:今天的英国包,不要打到上个月已经加过 WhatsApp 的同一批号。
全球,指的是规则和地区参数,不是把所有数字压成一串
一体系统里最容易写错的,是用一套长度假设伺候所有国家:
- 已带
+/00的号,以号码自带地区为准 - 没带的,才用任务级默认地区去补
- 前导 0、号长、国家码位数按地区元数据走,不要全球删 0
默认地区必须写在任务上,并出现在导出里。同一天跑英国包和东南亚包,是全球号码数据库去重系统的常态,不是例外。
结果必须能回答“撞了哪类历史”
跨境投放的人对账需求很具体:
- 这份名单文件内部重复多少(渠道质量)
- 撞了成交客户多少(保护)
- 撞了近 90 天已触达多少(省通道费)
- 格式异常多少(要不要退款或重采)
一个布尔值“重复”回答不了。系统要把文件内重复、历史重复、异常分开,历史重复最好能带到来源类型(客户 / 投诉 / 某批次采购),而不是把整库展示给销售。
规模上来之后,一体仍然比“先洗再导”便宜
名单到百万、千万,拆开的两套工具会在导入环节翻倍:洗一次写一份文件,再导入一次写一份库,规则还可能在两次之间被改掉。一体系统里解析、规范化、比对、写库是同一任务的不同阶段,失败可按批次撤。吞吐和存储布局见 亿级号码怎么做到秒级去重。
第一版不必上分布式。先保证全球规则、底库和任务结果共用键。分布式是量上来之后的事。
常见问题
已有 CRM,还要全球号码数据库去重系统吗?
CRM 管的是人和跟进状态,不是全球号码写法。可以对接:去重系统出通过号,再写入 CRM。不要让 CRM 的“手机号字段去重”承担国际号规范化。
多国家能不能各建一套库,最后再合并?
短期能跑。一旦出现同一号在两个国家包里、或号码没标地区,合并会变成二次清洗工程。更稳的是一套库、任务级地区、键全局唯一。
从哪看库和比对在同一个后台里长什么样?
在线 Demo 看导入、状态和导出。按自己的全球底库部署,联系 Telegram @imchat。架构分层见 底层架构。