☰
微信好友变动自动统计:从手动对账到企业微信API全方案
2026/10/13 8:27:40 网站建设 项目流程

先说一个背景:我做过一段时间销售管理,每天最烦的不是客户怎么谈,而是下班前翻微信通讯录,搞清楚今天到底新增了几个好友、谁又把我删了。检查的方式无非是点开列表一个个看,或者用各种“清粉”工具,既浪费时间又容易被封号。后来我开始琢磨一件事:能不能把微信新增/删除好友的统计自动化,让系统帮我记,我只需要在后台看结果。

这篇文章就是把这套思路完整拆开。它不是什么黑科技,也不是教你去解密本地数据库,而是从实际业务出发,把个人微信和企业微信两套方案都讲清楚。适合谁看?销售、运营、客服主管,以及自己管理客户资料、不想每天被“谁删了我”这种情绪绑架的人。核心就一句话:从“手动记账”变成“自动对账”。

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加填表

操作流程不复杂,难的是坚持。我把它设计成了每天固定时间的一次固定动作:

  1. 设置每天晚上9点的闹钟,作为当日数据快照时间。
  2. 打开微信通讯录,滑动到底部,截一张能看到“N位朋友”的图。
  3. 用手机自带的OCR文字识别,把“N位朋友”这个数字提取出来。
  4. 把日期、好友总数这两项填到表格里。

如果你愿意折腾一点,还可以在iOS快捷指令里把这个流程做成半自动:截图后自动调起OCR,OCR结果自动填进备忘录,你再统一同步到Excel。整套下来每天花不了一分钟。

3.3 表格公式自动算新增和删除

光记录总数还不够,新增、删除、净增这三项最好用公式自动算。假设Excel里B列存好友总数,第二行是第一天,第三行是第二天,那就可以这样写:

  • 新增:=IF(B3>B2,B3-B2,0)
  • 删除:=IF(B2>B3,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, params=params).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, params=params).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参数,可以在生成渠道二维码时带入。

比如你在朋友圈投放的二维码链接是...?state=friend_circle_ad,在抖音私信里加的是state=douyin。客户添加后,回调事件里会把这个state原样带回。统计时直接按state分组,渠道效果一目了然。这一步做完,你就不需要再问销售“这个客户是哪来的”,系统自己知道。

5. 有了数据之后,怎么把报表变成动作

5.1 每天早上自动推一条日报到企业微信群

数据统计出来只是第一步,真正让团队发生改变的是把数据推送到该看的人面前。我最常用的做法是,定时任务每天早上9点执行统计,然后把结果通过企业微信群机器人发到管理群。

群机器人的Webhook推送代码非常简单:

webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx" 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%的“心里没底”。数据准比数据快重要,别为了实时性把系统做复杂了。

第二,个人微信能不用就不用于客户管理。我理解很多人早期都是个人微信攒起来的客户,但只要你开始谈渠道、谈流失、谈归属,就一定要转向企业微信。这不仅是为了接口方便,更是为了让客户资产留在公司,而不是锁在某个人的手机里。

第三,统计指标要跟动作绑定。每增加一个报表字段,就问问自己:这个字段的变化能促使谁做什么事?如果回答不了,这个字段大概率会被忽略。新增好友数能促使销售去跟进,渠道来源能促使运营去调整投放,沉默客户数能促使管理层去安排激活动作。只有跟动作绑定的统计,才不会变成一张又一张没人看的表。

这套流程跑起来之后,我最大的感受是:人不需要用自己的大脑去记客户变化,只需要在数据有信号的时候做出决策。剩下的时间,留给谈客户、做内容、优化产品,都比盯着“谁删了我”有价值得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询