先说一个背景我做过一段时间销售管理每天最烦的不是客户怎么谈而是下班前翻微信通讯录搞清楚今天到底新增了几个好友、谁又把我删了。检查的方式无非是点开列表一个个看或者用各种“清粉”工具既浪费时间又容易被封号。后来我开始琢磨一件事能不能把微信新增/删除好友的统计自动化让系统帮我记我只需要在后台看结果。这篇文章就是把这套思路完整拆开。它不是什么黑科技也不是教你去解密本地数据库而是从实际业务出发把个人微信和企业微信两套方案都讲清楚。适合谁看销售、运营、客服主管以及自己管理客户资料、不想每天被“谁删了我”这种情绪绑架的人。核心就一句话从“手动记账”变成“自动对账”。1. 为什么好友变动统计总是一笔糊涂账1.1 微信不会主动告诉你谁删了你很多人以为微信会像社交软件一样在对方删除你之后弹个提醒。实际上微信没有任何官方通知机制。你能看到的“通讯录N位朋友”只是当前时间点的一个快照。也就是说判断“谁删了你”这件事本质上是拿两个时间点的数据做对比。今天通讯录里有100个好友明天变成98个那大概率是有两个人删除或者被你删除了。如果你不保存今天的数据明天就无从对比。这也是“手动记账”最难受的地方你以为自己在记“新增/删除”其实只是在每天重复一个毫无积累的动作。今天记了“新增3个”明天再记“新增1个”这些数字之间没有任何关联等于白记。1.2 手动记账为什么坚持不下去我最早用过备忘录也用过Excel表格。第一天兴致勃勃把好友总数填上再把当天加的几个人名字写下来。到第三天就发现问题了客户是通过什么渠道加的昨天新增的那个人后来回消息了吗这个月到底流失了多少老客户这些问题单靠每天记一个总数根本回答不了。更可怕的是每次记完还要跟自己的记忆核对一遍“昨天是不是还有个人加我但我忘了记”这种不确定感才是内耗的最大来源。其实我们需要的不是“今天新增几个”这个数字而是一套能持续产生结论的数据流水线。新增、删除、净增、沉默客户、来源渠道这些指标应该像财务报表一样每天自动跑出来。1.3 先把核心指标定下来再谈自动化在动手设计统计方案之前最好先明确自己想要哪些指标。我根据管客的实际需要把常用指标整理成了这样一张表指标含义使用场景更新频率好友总数当前通讯录联系人数量看整体规模变化每日新增好友数周期内新添加的联系人判断获客渠道效果每日/每周删除好友数周期内删除你的联系人判断流失情况每日净增新增数减删除数衡量客户池变化每日来源渠道客户通过哪个渠道添加你优化投放和转介绍每周沉默客户最近N天没有互动的客户安排跟进动作每日指标定下之后你会发现一个很关键的事实大多数指标并不需要实时监控。微信好友变动本来就不需要秒级感知一天一次甚至一周一次的快照已经足够。这就给自动化留出了很大的空间。2. 自动统计的核心思路快照加对账不是实时监控2.1 先理清逻辑今天的好友列表是昨天的列表加变更自动化统计听起来很玄底层其实就是集合运算。假设昨天存了一份联系人集合A今天又存了一份联系人集合B那么新增好友 B里有但A里没有删除好友 A里有但B里没有净增 新增好友数量 - 删除好友数量这个逻辑放到代码里就是两个集合做差集。放到Excel里也一样只要把两天的联系人唯一标识各放一列用VLOOKUP或者COUNTIF就能算出来。我自己管这叫作“对账式统计”。企业财务每个月对账咱们把联系人列表也对一下就能知道这期间谁进来了、谁离开了。这种方式不依赖微信主动推送任何消息只要快照数据是准的结果就是准的。2.2 别用昵称当唯一标识备注才是自己的数据这里有个特别容易踩的坑用微信昵称做集合的成员。微信昵称是可以随手改的你今天把他备注成“张老板”明天他改成“张总来了”你的“删除”就差出来了。正确的做法是给每个联系人一个稳定的唯一标识。个人微信环境下最实用的做法是把微信号、手机号或者你自定义的“客户编号”写在微信备注里。比如备注格式统一成“客户编号姓名”哪怕对方改昵称你的统计对账也不会乱。在企业微信环境下官方接口会返回每个外部联系人固定的external_userid这个就是天然的唯一键。设置备注时尽量只改“备注名”不要把客户编号也塞进聊天备注里不然后面查询分析会很痛苦。2.3 快照数据到底怎么存不管是用Excel还是数据库快照表的结构建议至少包含这几个字段日期 | 联系人唯一标识 | 备注名 | 添加时间 | 来源 | 状态每天定时保存全量联系人列表不更新旧记录只追加新记录。这样设计的好处是可以随时回看任意两天之间的变化而不是只能看“今天和昨天”的差值。比如你想知道本周和上周的客户流失直接拿今日快照和上周五的快照做差集就行。3. 方案一个人微信的轻量半自动台账3.1 先划清楚边界不做外挂不碰数据库我接触过不少想搞个人微信好友统计的同行他们的第一反应都是去翻PC端本地数据库。坦白说个人微信的数据库里确实存着联系人、聊天记录、群关系等信息也有人做出过解密分析的工具但这条路我不推荐你走。一方面个人微信没有任何官方接口允许外部程序读取联系人列表自己硬解本地数据库不仅违反使用协议还有误操作把聊天记录弄坏的风险。另一方面现在是远程办公和客户隐私敏感的时代你手上所有客户资料的安全比那几十个好友数字值钱得多。为了统计一个总数把整台电脑的信任链条搭在一个不可控工具上不值得。所以我个人微信场景的底线是不读取聊天消息不模拟登录不扫码过协议。靠手机截图、OCR识别和Excel公式就能完成80%的自动化。3.2 每日快照怎么做截图OCR加填表操作流程不复杂难的是坚持。我把它设计成了每天固定时间的一次固定动作设置每天晚上9点的闹钟作为当日数据快照时间。打开微信通讯录滑动到底部截一张能看到“N位朋友”的图。用手机自带的OCR文字识别把“N位朋友”这个数字提取出来。把日期、好友总数这两项填到表格里。如果你愿意折腾一点还可以在iOS快捷指令里把这个流程做成半自动截图后自动调起OCROCR结果自动填进备忘录你再统一同步到Excel。整套下来每天花不了一分钟。3.3 表格公式自动算新增和删除光记录总数还不够新增、删除、净增这三项最好用公式自动算。假设Excel里B列存好友总数第二行是第一天第三行是第二天那就可以这样写新增IF(B3B2,B3-B2,0)删除IF(B2B3,B2-B3,0)净增B3-B2这种公式只依赖总数不需要手动填“今天删了几个”。更精细的做法是把联系人列表放进另一张Sheet每天导入一次然后用条件格式标出“昨天有/今天没有”的差异。不过对普通人来说先跑通总数对账就已经能解决“我是靠感觉管客户”这个核心问题了。3.4 用标签给统计结果加上业务含义统计数字本身不会帮你管客户真正有用的是数字背后的动作。我早期只记总数后来发现没多大用真正改变管理效率的是用标签给客户分类。个人微信的标签功能虽然简单但可以用一套命名规则来当字段用。比如来源渠道A、渠道B、抖音、转介绍阶段新客户、意向客户、成交客户、流失风险优先级高价值、普通、待清理每次新加好友第一时间打上“来源”标签。每周打开标签页面看一遍“渠道A”标签下的人数变化就是最直接的获客效果报表。这种统计不需要额外工具但比单纯记数字强太多。4. 方案二企业微信客户联系API真正实时自动4.1 个人微信搞不定的事企业微信可以如果你做的是销售管理或者手下的销售同事都在用企业微信加客户那一定要用企业微信的“客户联系”功能。它是官方开放的接口不像个人微信那样遮遮掩掩。企业微信的客户联系API能做三件非常关键的事情拉取外部联系人列表、接收客户新增/删除的回调事件、给每个客户打上state来源标记。有了这三样“好友增减统计”就能变成后台每天自动跑的任务。4.2 开通和配置三步走第一步在企业微信管理后台开通“客户联系”和“客户群”获得一个自建应用的AgentId和Secret。第二步配置回调URL。这一步需要你有一个公网可达的HTTP服务用来接收微信服务器推送的事件。事件类型是change_external_contact里面会有ChangeType包括add_external_contact、del_external_contact等。第三步写代码获取access_token。企业微信的access_token有效期是2小时建议在服务端缓存不要每次请求都重新获取。示例代码很简单import requests def get_access_token(corpid: str, secret: str) - str: url https://qyapi.weixin.qq.com/cgi-bin/gettoken params {corpid: corpid, corpsecret: secret} resp requests.get(url, paramsparams).json() return resp[access_token]4.3 每天定时对账不依赖回调回调事件虽然很实时但网络环境中偶尔会有消息丢失、重复推送的情况。我建议把回调当成“补充”把定时全量对账当成“主数据源”。每天凌晨2点用企业微信API拉取所有员工的客户列表和昨天凌晨2点的保存结果做差集。这样就算某条回调丢了第二天对账也能自己补回来。核心逻辑可以封装成这样def get_external_user_ids(access_token: str, userid: str) - set: url https://qyapi.weixin.qq.com/cgi-bin/externalcontact/list params {access_token: access_token, userid: userid} data requests.get(url, paramsparams).json() return {item[external_userid] for item in data.get(external_userid, [])}拿到今天的集合和昨天的集合两个集合做差集就是新增和删除。这个逻辑和我前面讲的集合对账思路完全一致只是从手动变成了自动。4.4 用回调记录精确的变动时间定时对账能告诉你“昨天和前天之间”的变化但不能精确到几点几分。如果业务上需要精确时间比如“客户加进来5分钟后销售就要去打招呼”那就必须靠回调事件。在回调里add_external_contact表示新添加客户del_external_contact表示被删除或删除对方。收到事件后把external_userid、userid所属员工、state渠道来源、时间戳存进数据库。这样你就有了一张完整的客户变动流水表id | userid | external_userid | change_type | state | create_time这张流水表就是自动统计的地基。日报、周报、月报甚至后面要做的客户生命周期分析全部从这张表里查。4.5 来源渠道归因用state字段很多团队在算“哪个渠道加的人多”时都是靠销售自己填备注既不准确又费劲。企业微信API里有个特别实用的state参数可以在生成渠道二维码时带入。比如你在朋友圈投放的二维码链接是...?statefriend_circle_ad在抖音私信里加的是statedouyin。客户添加后回调事件里会把这个state原样带回。统计时直接按state分组渠道效果一目了然。这一步做完你就不需要再问销售“这个客户是哪来的”系统自己知道。5. 有了数据之后怎么把报表变成动作5.1 每天早上自动推一条日报到企业微信群数据统计出来只是第一步真正让团队发生改变的是把数据推送到该看的人面前。我最常用的做法是定时任务每天早上9点执行统计然后把结果通过企业微信群机器人发到管理群。群机器人的Webhook推送代码非常简单webhook_url https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyxxxxx requests.post(webhook_url, json{ msgtype: text, text: { content: 昨日新增{}人删除{}人净增{}人待跟进客户{}人.format( added, deleted, net, need_follow ) } })这个推送清单不需要包含客户隐私只需要给管理者一个提醒数据有变化该看的人去看该跟进的去跟进。没有异常的时候这条消息就是“一切正常”的信号管理者不用再一个个问销售“今天加了多少人”。5.2 按周和月拆出渠道转化曲线真实业务中单日数据波动非常大今天朋友圈效果好可能新增20个明天就变成0。所以我建议统计维度以周和月为主。在数据库或者Excel里把create_time格式化成周再对state分组就能看到每个渠道的周趋势。比如“抖音渠道连续两周下降”那就该去检查内容投放“转介绍渠道虽然数量少但成交率高”那就要思考怎么放大。很多时候管理者不是不知道渠道好坏而是没有一个持续自动更新的数据来源。用这套流程渠道判断不再依赖个人感觉。5.3 把沉默客户的提醒做进系统里客户加进来不代表就有价值真正产生价值的是后续跟进。统计客户“最近一次互动时间”比较麻烦但如果你的企业微信有客户联系API可以通过externalcontact/get拿到客户详情里面会有加客户的时间、最近互动时间等字段。我的做法是每天晚上跑一个任务把“近7天没有互动”的客户筛选出来分配给对应的销售。这样销售第二天一上班就知道今天哪些老客户需要激活。这个清单自动生成比销售自己翻聊天记录靠谱得多。6. 常见问题与排查技巧实录6.1 好友总数突然对不上可能不是统计错了遇到过几次“昨天还是300人今天突然变280人”的情况第一反应是统计代码出问题了。后来排查发现要么是某个员工被移出了企业他名下的外部联系人全部被转移或解绑要么是企业在后台触发了一次“客户继承”客户从A销售名下转到了B销售名下但外部客户ID没变。所以在设计统计口径时一定要先想清楚“同一个客户在多员工名下算不算重复”。企业微信里同一个外部客户可以被多个员工添加统计“客户总数”时得做去重统计“员工新增”时可以按员工维度分别算。6.2 回调消息偶尔漏了怎么办回调是HTTP通知偶尔网络超时或者响应时间过长就会漏消息。微信服务器对回调响应有超时要求如果你的服务处理太慢微信会重试但重试也可能在你服务恢复前就放弃了。因此不要把回调当成唯一数据源。我始终保留每天的定时全量对账回调只用来补精确时间戳。定时对账能保证数据最终正确回调能保证时间点精确两者缺一不可。6.3 个人微信加好友频繁会被限制统计工具也一样很多“微信机器人”宣传自己能做到自动统计、自动检测僵尸粉但它们的实现方式几乎都是非官方协议。只要触发风控轻则限制加好友功能重则封号。我对所有非官方工具的判定标准很简单它有没有可能触碰到验证码、临时限制、封号这些事只要有可能就不推荐在正经业务里用。与其用高风险方式做个人微信统计不如把客户统一引导到企业微信大家都是合法用官方接口数据安全也能兜底。6.4 报表数字很好看但销售不认账这是最常见的落地问题。统计系统上线后销售觉得自己被“监控”了故意在日报里不填渠道信息或者用私人微信加客户绕过企业微信。解决这个问题不是靠强制而是靠“让报表给销售带来好处”。比如把“客户来源”和业绩绑定谁带来的客户成交了归谁提成。当销售发现系统能帮他记客户来源、自动提醒老客户回访他才会把这套系统当成帮手。7. 真正常用的几个执行心法最后分享几点我在实操中的体会。第一自动统计这件事不要一上来就追求完美。先跑通每天一次的快照对账哪怕只是Excel加截图就已经能解决80%的“心里没底”。数据准比数据快重要别为了实时性把系统做复杂了。第二个人微信能不用就不用于客户管理。我理解很多人早期都是个人微信攒起来的客户但只要你开始谈渠道、谈流失、谈归属就一定要转向企业微信。这不仅是为了接口方便更是为了让客户资产留在公司而不是锁在某个人的手机里。第三统计指标要跟动作绑定。每增加一个报表字段就问问自己这个字段的变化能促使谁做什么事如果回答不了这个字段大概率会被忽略。新增好友数能促使销售去跟进渠道来源能促使运营去调整投放沉默客户数能促使管理层去安排激活动作。只有跟动作绑定的统计才不会变成一张又一张没人看的表。这套流程跑起来之后我最大的感受是人不需要用自己的大脑去记客户变化只需要在数据有信号的时候做出决策。剩下的时间留给谈客户、做内容、优化产品都比盯着“谁删了我”有价值得多。