CRM 深度

Odoo CRM 为什么邮箱和电话会显示“质量正确/错误”:标准化、校验库与字段边界讲透

很多人把 Odoo CRM 的 Email Quality 和 Phone Quality 当成营销评分,其实源码只是在做格式与可解析性校验:邮箱走 normalize + mail_validate,电话走国家码上下文和 phone_parse。

CRM
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 6 阅读

先说结论

Odoo CRM 里的 email_statephone_state,本质上不是“客户质量评分”,而是联系方式可验证性提示

源码逻辑非常朴素:

  • 邮箱:先做 email_normalize_all(),再用 mail_validate() 看是否至少有一个候选邮箱合法;
  • 电话:结合国家码上下文,用 phone_parse() 看号码能否被解析。

所以这两个字段回答的是:

  • 这个联系方式看起来像不像一个有效格式;

而不是:

  • 这个客户值不值得跟;
  • 这个号码是否一定能打通;
  • 这个邮箱是否一定有人收。

一、为什么 Odoo 先做标准化再做判断

邮箱字段常见问题很多:

  • 大小写混杂;
  • 一栏里写多个邮箱;
  • 展示名带尖括号;
  • 人工粘贴时夹杂空格。

所以 _compute_email_state() 不是直接正则硬判,而是先 email_normalize_all(),把可识别的邮箱候选拆出来,再逐个 mail_validate()

这能显著减少“看起来脏、但其实能用”的误杀。


二、电话为什么离不开国家码

电话校验更麻烦。

同一串数字:

  • 在中国看可能是手机号;
  • 在别的国家可能长度就不对;
  • 加不加区号,含义也不同。

所以 _compute_phone_state() 会从 lead 的 country_id.code 取国家上下文,再交给 phone_parse()

这意味着:

Phone Quality 的结果,和国家字段并不是完全独立的。

国家填错,电话状态就可能跟着错。


三、为什么“incorrect”不等于这条线索没价值

最容易犯的业务错误,就是把格式提示当成商业判断。

例如:

  • 邮箱写成群组地址或特殊格式,验证可能不通过;
  • 电话缺国家码,解析失败;
  • 但联系人其实是真客户。

所以 incorrect 更像:

  • 需要清洗;
  • 需要补国家/区号;
  • 需要人工确认;

而不是“直接丢弃”。


四、为什么“correct”也不代表一定可联系

反过来也一样。

  • 邮箱格式合法,不代表邮箱存在;
  • 电话能解析,不代表电话有人接;
  • 号码格式正确,不代表它属于当前这家公司。

Odoo 在这里做的是输入卫生,不是主数据真伪审计。


五、实务里最该怎么用这两个字段

更合理的用法是:

  • 作为导入清洗提醒;
  • 作为销售补资料优先级;
  • 作为自动化分流前的基础校验;
  • 结合国家、来源、活动再判断跟进价值。

最不合理的用法是:

  • 直接拿 incorrect 做丢弃规则。

六、排错顺序

联系方式质量看起来不对时,按这个顺序查:

  1. 邮箱是否包含多个地址、展示名或异常空格;
  2. 电话是否缺国家码;
  3. country_id 是否填错;
  4. 是格式问题,还是你误把质量字段当商业评分。

一句话记忆

Odoo CRM 的邮箱/电话质量字段,只是在说“这串联系方式像不像合法输入”,不是在说“这条线索值不值得做”。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。