官网友情链接: wecomapi.com
企业微信二次开发进入客户管理场景以后,很多系统最开始都会做一张客户表,保存客户当前负责人、备注、标签、状态、最近跟进时间等信息。对于日常使用来说,这样完全够用,因为销售和客服最关心的是“客户现在是什么状态”。
但系统运行时间一长,就会遇到一个非常典型的问题:当前状态虽然正确,历史过程却消失了。
例如某个客户最开始由销售 A 添加,后来转给销售 B;备注从“张总”改成“杭州ABC张总”;标签从“普通客户”变成“重点客户”;又因为售后问题增加了“服务中”标签。半年以后,如果只看当前表,只能看到最后结果,却无法知道中间到底发生过什么。
这对企业微信自动化影响很大。
因为群发、客户分层、负责人交接、CRM 对账、权限审计都可能需要知道“当时的状态”,而不只是“现在的状态”。
所以企业微信二次开发API接入客户能力以后,客户管理不应该只有当前状态,还应该建立操作历史和变更日志。
WeComApi 可以作为企微API接入层,把客户、员工关系、标签、外部群和相关事件稳定接入业务系统。本地系统则围绕这些数据建立客户操作历史,让每一次重要变化都有来源、有时间、有操作者、有前后值。
一、为什么客户当前表还必须保留
历史不是为了取代当前表。
当前表仍然非常重要。
例如后台查询:
客户当前负责人是谁;
客户当前有哪些标签;
客户关系是否正常;
最近一次互动是什么时候。
这些都需要高效读取。
所以更合理的是两层结构。
一层是:
customer_current。
负责当前状态。
另一层是:
customer_change_log。
负责记录变化。
这样日常业务查当前表,复盘时查历史。
二、什么变化值得记录
不是所有字段变化都需要进入业务历史。
例如同步时间更新时间,不需要每次记录。
真正有价值的是:
负责人变化;
备注变化;
标签新增;
标签移除;
客户关系失效;
客户重新激活;
CRM阶段变化;
人工冻结;
解除冻结;
客户合并。
这些都会影响业务判断。
三、一个具体例子
客户 C1001 最开始:
负责人:销售A;
备注:张总;
标签:产品A兴趣。
三个月后销售A离职。
客户转给销售B。
系统记录:
action = owner_changed;
before = A;
after = B;
reason = employee_handover。
随后销售B修改备注:
“杭州ABC-张总”。
再次记录:
action = remark_changed。
后来客户进入售后流程,增加:
售后处理中。
系统记录:
action = tag_added;
tag_id = 售后处理中;
source = ticket。
这样半年后打开客户历史,可以完整看到变化过程。
四、标签历史尤其需要来源
客户标签很容易越用越乱。
一个标签可能来自:
企微标签同步;
员工手工;
CRM;
自动化规则;
外部群行为;
工单。
如果只保存“客户当前有哪些标签”,后续根本不知道为什么有这个标签。
所以标签历史最好保存:
tag_id;
source_type;
source_id;
operator;
created_at;
expired_at。
这样每个标签都有依据。
五、负责人变化不能只 UPDATE 一个字段
负责人变化通常还会影响:
客户权限;
销售任务;
CRM;
外部群;
待跟进事项。
所以 owner_changed 事件可以继续触发一个交接任务。
客户历史负责记录:
“负责人变了”。
交接任务负责保证:
“相关业务真的转过去了”。
这两个职责要分开。
六、WeComApi 在这里的位置
WeComApi 负责:
企业微信客户;
员工关系;
标签;
外部群;
相关事件。
业务系统负责:
客户当前模型;
历史记录;
交接;
权限;
CRM。
WeComApi 提供数据和能力入口。
本地系统保证这些变化可追溯。
七、操作历史要区分系统和人工
同一个字段变化可能来自不同来源。
例如客户标签新增。
source_type 可以是:
manual;
wecom_sync;
crm_sync;
rule_engine;
ticket;
reconciliation。
这样业务人员能知道:
是员工手工打的,还是系统自动打的。
八、为什么 before / after 很重要
只记录:
“客户备注被修改”。
不够。
更有价值的是:
before = 张总;
after = 杭州ABC张总。
以后出现数据争议时,能准确知道变化内容。
九、批量操作也要有 batch_id
例如一次批量给 5000 个客户打标签。
如果只有5000条独立日志,后续很难复盘。
可以增加:
batch_id = B1001。
打开批次就能看到:
发起人;
筛选条件;
目标数量;
成功数量;
失败数量。
单条客户历史再关联该批次。
十、对账修复也要进入历史
定期对账发现:
本地标签和企微远端不一致。
系统自动修复。
不要让它像普通后台同步一样无痕发生。
记录:
source = reconciliation。
以后可以统计:
有多少客户数据依赖对账修复。
如果某类字段频繁需要修复,说明实时同步链路可能有问题。
十一、客户合并更加需要历史
客户 C1001 和 C2001 后来确认是同一个人。
合并到 C1001。
不能直接把 C2001 删除得无影无踪。
应该保留:
merged_from;
merged_to;
operator;
reason;
affected_objects。
否则历史消息、工单、标签里出现旧ID时无法解释。
十二、权限变化也应该记录
客户负责人变更以后,原销售可能失去访问权限。
新销售获得权限。
权限系统也可以关联客户变更事件。
以后有人问:
“为什么销售A在6月份能看到这个客户?”
历史可以证明:
当时A就是负责人。
这对企业内部审计非常重要。
十三、操作日志不能允许普通修改
历史记录一旦生成,最好只能追加。
如果发现记录有错误,可以新增一条:
correction。
而不是直接修改旧日志。
这样历史才有可信度。
十四、客户历史可以用于 AI 摘要
AI销售助手需要理解客户变化时,可以读取:
最近关键事件。
而不是读取所有原始数据库字段。
例如摘要:
“客户于6月由A交接给B,7月进入售后流程,8月售后问题关闭。”
这种业务时间线比零散字段更适合 AI。
十五、数据生命周期
客户当前数据长期留在主库。
历史日志可以做冷热分层。
例如最近一年热查询。
更早数据归档。
但关键负责人、关系、合并历史不建议随意删除。
十六、数据看板
可以统计:
本月负责人变更数;
客户标签新增数;
自动规则标签占比;
人工修改备注次数;
对账修复次数;
客户合并次数。
这些数据可以帮助企业发现客户管理流程是否稳定。
十七、日志和 trace_id
一次员工离职可能同时触发:
客户负责人变化;
权限回收;
任务转移;
CRM同步。
如果这些动作都关联同一个 trace_id,就可以从客户历史一路追到整个交接流程。
这对排查问题非常有价值。
十八、总结
企业微信二次开发API接入客户数据以后,只保存“客户现在是什么状态”是不够的。
WeComApi 可以把客户、员工关系、标签和外部群能力稳定接入系统。
本地客户中心还需要把每一次关键变化记录下来:
谁改的;
什么时候改;
改之前是什么;
改之后是什么;
为什么改;
来自哪个系统。
只有当前状态和历史过程同时存在,客户管理、CRM、权限、群发、交接和审计才真正可靠。
成熟的企微客户系统,不只是能告诉你“这个客户现在归谁”,还应该能完整解释“他为什么会变成现在这样”。