手上有一份客户手机号名单,想知道哪些号开通了 WhatsApp、哪些是商业账号,先别急着把整个文件丢进筛号软件。按下面这个顺序走,同一份名单返回结果的可用度差别很大:
- 去重与空值清洗
- 按国家代码分组,统一改写成 E.164 格式
- 基础号码校验,剔除空号、固话、异常号
- 提交 WhatsApp 平台检测(控制台上传或 API)
- 按字段多列落库,而不是只留一个「有效/无效」
- 回写 CRM,并记录检测时间
下面按这个顺序说每步实际要做什么,以及哪些字段拿到了也不能那样解读——第四步的判读规则是最容易出错、也最影响后续决策的一段。
先让名单变干净,再谈检测
重复项是第一个要处理的。同一个客户在官网表单、线下活动、客服工单里各留过一次号,合并名单后就是三条。筛号是按条计价的,重复项等于重复付费,去重要在提交前完成,不是拿到结果再去重。
去重的对象是归一化之后的号码。+86 138 0013 8000、008613800138000、13800138000 在字符串层面是三条不同记录,先归一化再去重才能真正合并——所以实践中这一步和下一步经常是一起做的。
同时清掉这几类脏数据:号码列里混进的中文备注(「13800138000(王总)」)、一个单元格塞了两个号、明显位数不足的残缺号、纯占位符(11 个 1、连续递增数字)。另外要特别注意 Excel:号码列如果按数值存储,前导零会被吃掉,长号码会变成科学计数法。导出 CSV 前把整列设成文本格式,这是上传后大面积报格式错误最常见的原因。文件准备的细节可以参考WhatsApp CSV筛号:上传前6处文件准备要点。
E.164 不是「前面加个加号」
WhatsApp 对国际号码格式的要求写得很直接:加号开头,紧跟国家代码、区域码、本地号码,总长不超过 15 位,去掉所有空格、破折号、括号,并去掉只有本地拨号才需要的前导零和拨出冠码。
几个高频翻车点:
- 前导零:英国的
07911 123456要写成+447911123456,那个 0 是本地拨号用的,不进国际格式。德国、意大利之外的多数欧洲国家同理。 - 国际冠码:
00或011开头的要整段去掉,不能和加号并存。 - 阿根廷:国家代码
+54之后需要补9,同时去掉本地移动号里的15。 - 墨西哥:国家代码
+52之后需要补1。 - 中国:
+86之后不要再留0。
格式不合规的后果不是「检测不准」,而是平台直接判定无效或任务失败。这条「无效」是你自己写错造成的,不是号码真的没开通——如果不回头核对,等于凭空报废一批真实客户。

所以多国家混在一起的名单,不要一条规则套到底。先按国家代码拆成若干组,各组套各自的改写规则,改完再合并提交。名单里如果有一批号码根本没带国家代码,就得先用客户所在地字段补上,补不出来的单独放一组,别猜。各类脏号码的具体改写规则可以看海外号码筛选前怎么做E.164归一化?4类脏号码改写规则;不确定某个国家的号码长度和本地前缀规则时,各国号码格式与主流平台对照那一页更省事。
先过基础检测,再打平台检测
如果名单来自线下扫码、纸质表单、几年前的旧库,建议中间加一道基础号码检测:空号、停机号、固定电话、设备类型、高风险号。这一步的价值是省钱——把注定没有结果的号码提前剔掉,再去跑单价更高的平台状态检测。
什么情况下可以跳过:名单本身就是近三个月内在你这里下过单、或者做过短信验证的号码,电信层面的有效性已经被验证过一次,直接进平台检测就行。
WhatsApp 检测能拿到什么,不能拿到什么
这一段决定了你怎么用结果。字段要分成两类看。
确定性字段:
- 是否开通 WhatsApp。这是整轮检测的主判据,也是唯一适合用来做硬性过滤的字段。
- 账号类型:个人账号(WhatsApp Messenger)还是商业账号(WhatsApp Business)。这两者的注册条件不同——商业账号可以用座机、固定电话注册,个人账号只支持能接收短信或语音的移动号码。所以如果你名单里某个固话被判为「已开通」,这不矛盾,它大概率是一家商户,可以直接打上 B 端标签分流。
- 注册时间等平台侧可得属性。具体能返回哪些,各平台不一样。
受隐私设置制约的字段: 最后上线时间、在线状态、头像、关于(个性签名)。这四项由用户自己控制可见范围,可选「所有人」「我的联系人」「没有人」。任何筛号软件都无法越权读取用户设为不公开的内容。
由此得出一条必须记住的判读规则:取不到头像、没有最后上线记录,不等于号码没注册、也不等于用户不活跃,它同样可能只是对方开了隐私保护。把这类空值当成「僵尸号」整批清掉,会误伤一批真实客户,而且被误伤的往往是隐私意识更强、通常也更值钱的那一类用户。
正确的用法是:用「是否开通」做过滤,用账号类型做分流,用能取到的活跃字段做排序权重。有最近上线记录的排前面是合理的;没有记录的降权排后面也可以;但不要把它当作删除的理由。
还有一点:性别、年龄这类属性并不是每个平台都能返回,各平台的检测项清单不同,单价也会随检测项调整。真正下单前先去对应平台页确认当前能查哪些字段——NexCheck 的 WhatsApp 检测项与说明那一页列的就是这个,名单上传后按有效与无效分组导出,具体字段以页面上的当前清单为准。
网页端还是 API
按名单的出现频率选,不用纠结:
- 一次性或季度性清洗:控制台上传 txt / csv,跑完直接按有效、无效分组导出。单批没有数量限制,不用自己切片,几万条和几百条是同一个操作。
- 需要常态化接进 CRM:走 REST API 提交,配 Webhook 回推结果。新线索进库时自动触发一次检测并打标,比人工定期导出导入稳定得多。
开发侧还要决定拿结果的方式是轮询还是回调。任务量小、能接受延迟的场景轮询够用;批量任务或要求近实时写库的用 Webhook 更合适,取舍依据见号码检测用轮询还是webhook回调好。
结果按多列落库,别压成一个布尔值
很多团队把检测结果压成 is_valid = true/false 写回 CRM,三个月后想复盘就什么都查不出来了。建议至少保留这几列:
原始号码、E.164 号码、国家代码、是否开通、账号类型、可得的属性字段、检测时间戳、任务批次号。
原始号码要留着,方便出问题时倒查是哪一步改写错了。检测时间戳尤其重要——号码状态会变:用户停用账号、换号、号码被运营商回收后再放号,都会让旧结果失效。有了时间戳才能定重跑节奏,具体的失效信号可以参考批量筛号结果多久要重跑,多列落库的字段设计见批量号码验证别只看有效无效。
回写 CRM 时用 E.164 号码作为匹配主键,不要用原始号码去 merge,否则同一个客户会因为格式差异被重复创建。
几条别忽略的边界
名单必须是你自有的客户数据,来源和用途的合法性由你保证。不同司法辖区对「批量检测并存储未授权联系人的平台属性」的合规解释存在差异,GDPR 适用范围内的名单尤其要先过法务,不要默认一套流程能跑全球。
「未开通」不等于客户流失。官方没有公开账号注销、长期休眠的判定阈值,号码被运营商回收再放号之后,原客户和现机主已经是两个人。老名单里的「未开通」更适合当作重新触达前的核验信号,而不是结论性的客户状态。
检测项和单价都会调整,以平台当前的价目表为准,不要沿用半年前的记录做预算。
按上面六步走完,你手里会是一份格式统一、分组明确、带时间戳的名单,而不是一堆真假混杂的「有效号」。第一次做的话,先拿两三千条有代表性的号码跑一遍,确认字段含义和你的理解一致,再把全量名单提交上去——各平台能查什么这一页可以帮你先确认目标市场该筛哪个平台。
NexCheck-筛号平台
评论(0)