去年下半年某个连锁零售客户的运营总监找过来,开口就是一句:"我们整体复购率从 38% 涨到 42% 了,但今年净利润反而掉了 15%,董事会问我怎么解释。"
把他们后台数据拉过来一看就明白了——整体复购率的上涨是因为这一年新开了 20 多家门店,新客户大量涌入,分母还没来得及"老化",看上去就像复购在升。但如果按门店开业月份拆成不同 Cohort 群组,会发现两年前开的老店留存曲线已经塌得很厉害:第 12 个月留存只剩 22%,而行业可比基准应该在 35% 上下。整体数字里藏着的真相是:老店在加速流失,新店在掩盖问题,再过半年钱就烧完了。
这不是个例。复购率/留存率是经营分析里被误用最严重的一组指标之一。聚合成一个数字看,几乎一定会骗你。真正能看清真相的是群组分析——把客户按"入群时间"切片,纵向看每一群人的后续行为。这篇把开沿在零售连锁、SaaS、教培、宠物服务这几个行业做留存项目踩过的坑梳理一遍,给到 4 个具体的落地姿势。
为什么单一「复购率」会误导你
先把一个常见错误拎出来:用"过去 12 个月复购客户数 ÷ 过去 12 个月活跃客户数"这种聚合口径汇报复购率,几乎一定会出问题。原因有三层。
第一层,新老客户混在一起算。新客户的首单时间点离今天近,他还没有"充分的复购机会",把他放进分母会拉低复购率;如果近期新客户增长很快,反而会让整体复购率被稀释。反过来,如果新客户增速放缓,老客户占比上升,整体复购率会"被动上涨",看上去业绩很好,其实是流量端在恶化。
第二层,渠道/产品线/客单价混在一起算。线上电商的复购周期可能是 30 天,线下连锁可能是 90 天,B 端 SaaS 可能是 12 个月。把它们拍在一张表里算一个平均数,得到的是没有业务含义的"假平均",没法指导任何动作。
第三层,时间窗口模糊。你说的是 30 天复购、90 天复购、还是终身复购?口径不同结果可以差 3-5 倍。汇报的时候不写清楚窗口,听的人脑补成另一个口径,沟通成本指数上升。
群组分析(Cohort Analysis)就是为了把这三层混淆同时解决。核心动作只有一个:按"入群时间"把客户分组,纵向看每一群客户在第 N 期的行为。把一群人锁死,看他们随时间的衰减,干扰因子立刻就被剥离了。
Cohort 分析的核心:按入群时间分组看后续行为
Cohort 这个词来自社会学,指"经历过同一事件的一群人"。在留存分析里,最常用的入群事件是"首次购买"或"首次注册/激活"。一旦定义了入群事件和入群时间窗口(通常按周或按月切),后续分析就有了稳定的"被观察对象"。
最经典的输出是一张三角矩阵热力图:
| 入群月份 | 第 0 月 | 第 1 月 | 第 2 月 | 第 3 月 | 第 6 月 | 第 12 月 |
|---|---|---|---|---|---|---|
| 2025-01 | 100% | 38% | 28% | 22% | 17% | 12% |
| 2025-04 | 100% | 41% | 30% | 24% | 18% | — |
| 2025-07 | 100% | 35% | 26% | 21% | — | — |
| 2025-10 | 100% | 33% | 25% | — | — | — |
| 2026-01 | 100% | 30% | — | — | — | — |
读图方式有两种:
- 横向读(同一行 → 单个群组的衰减曲线):1 月那批客户 12 个月跑下来还剩 12%,曲线形状是不是健康,跟行业基准比快还是慢。
- 纵向读(同一列 → 不同群组在相同生命周期阶段的对比):每个群组的第 1 月留存,从 38% → 41% → 35% → 33% → 30%,明显在退化。这就是单一数字看不出来的"老店在加速流失"。
把这张表打出来贴在运营周会的墙上,比看任何 KPI 仪表盘都管用。开沿做过的项目里,有一家连锁餐饮客户把这张表打成 A3 海报挂在运营部门口,每个月手动更新一次——后来他们老板说,这是过去三年最有用的一张表。
姿势 1:按入群月看 12 个月留存曲线
第一类落地姿势,也是最基础的:把客户按首单月份分群,跟踪 12 个月的留存曲线。这一步主要回答两个问题——整体在变好还是变坏?拐点出现在哪一群?
要做出来其实只需要两张表:客户主数据(含首单月份)+ 订单流水(含订单时间)。Excel 的数据透视表就能出。但有几个细节容易踩坑。
口径细节一:留存怎么算。常见有三种口径:
- "第 N 月有任何下单" → 宽口径,适合高频品类
- "第 N 月下单金额 ≥ X" → 严口径,过滤掉薅羊毛
- "第 N 月 + 后续 3 个月内有下单" → 滚动口径,适合低频品类
选哪个看品类。SaaS 看续费动作(明确的二元事件),零售看消费动作(连续的金额),教培看课消动作(连续的服务交付)。同一份报告里口径不能切换。
口径细节二:N 是自然月还是 30 天滚动。自然月简单但有边界效应(月底入群的客户"第 1 月"只有几天)。30 天滚动更准但 Excel 不好做。前期建议自然月,后期换 SQL 之后再切滚动窗。
口径细节三:流失客户怎么处理。客户主动注销/退款的,要不要踢出分母?做项目时统一建议踢出去,否则会污染分子。但要单独建一张"流失原因表"追踪退出去的人。
跑完之后把 12 个月曲线画出来,跟同行业基准(如果买得到)或者自己历史最好那一群做对比。如果整体曲线在持续下移,立刻去查渠道结构有没有变化、产品有没有大改动、客服 NPS 有没有掉。这一步走通了,再上更复杂的姿势。
姿势 2:按渠道看 LTV 差异
第二类姿势,在分群维度上多加一层"获客渠道",回答的是钱花在哪个渠道最划算?
很多公司算 ROAS(广告花费回报率)只看首单 GMV,结果广告投放团队拿到的指引是"投信息流——首单转化最高"。但信息流来的客户复购率可能只有自然搜索来的一半,12 个月 LTV 一对比,自然搜索客户的价值可能是信息流的 2-3 倍。这种结构性的差异,单一复购率根本看不出来。
操作姿势:在客户主数据里加一列 first_channel(首次获客渠道),然后做"渠道 × 入群月份"的交叉 Cohort。
| 渠道 | 首单 ARPU | 第 3 月留存 | 第 12 月留存 | 12 月 LTV | CAC | LTV/CAC |
|---|---|---|---|---|---|---|
| 自然搜索 | 中 | 高 | 高 | 高 | 低 | 优秀 |
| 内容种草 | 中高 | 中高 | 中 | 中高 | 中 | 良好 |
| 信息流投放 | 中 | 中 | 低 | 中 | 中高 | 一般 |
| 异业合作 | 高 | 低 | 低 | 中 | 中 | 一般 |
| 老客推荐 | 中 | 高 | 高 | 高 | 极低 | 优秀 |
(数字脱敏成定性档位,避免误导)
跑出这张表之后,营销预算分配的逻辑就变了——不再是看哪个渠道 CAC 最低,而是看哪个渠道 LTV/CAC 比例最健康。开沿在做一家美妆品牌的留存项目时,跑完这张表客户直接把信息流预算砍了 40%,把钱挪到老客推荐返利和内容种草,半年后整体毛利率涨了 8 个百分点。
这一步要做好,前提是埋点和 UTM 参数管理要干净。如果"首单渠道"这一列填的都是"未知",分析就废了。这一块的方法论可以参考 企业数据治理第一步该做什么,先把主数据和埋点规范立起来。
姿势 3:按客户分级看复购周期
第三类姿势,按客户价值分层后再看 Cohort,回答的是哪一层客户值得花成本召回?什么时间窗口召回有效?
常见的分层逻辑是 RFM(最近一次消费 R、消费频次 F、消费金额 M),把客户切成 5-8 个层。然后对每一层分别画 Cohort 矩阵。
会发现一个有意思的现象:高价值层(VIP)和低价值层(新客/低频)的复购周期形状完全不一样。VIP 客户通常是稳定的等间隔复购(比如每 25-35 天一次),一旦超过 60 天没动作就是危险信号。低频客户则是脉冲式的,可能 90 天来一次、180 天再来一次,常规节奏看不出来。
| 客户分层 | 典型复购周期 | 流失定义 | 召回成本敏感度 | 召回手段 |
|---|---|---|---|---|
| S 级 VIP | 25-35 天 | 60 天无动作 | 不敏感 | 人工 1v1 |
| A 级活跃 | 45-60 天 | 90 天无动作 | 中等 | 销售跟进 |
| B 级常规 | 60-90 天 | 120 天无动作 | 较敏感 | 短信/优惠券 |
| C 级低频 | 90-180 天 | 270 天无动作 | 高敏感 | 群发触达 |
| D 级沉睡 | 不规律 | 365 天无动作 | 极高 | 不再投入 |
这张表的价值在于给每一层一个"流失阈值"和"召回预算上限"。运营团队不再是无差别群发,而是按价值分层做精准动作。开沿在做一家宠物服务连锁的项目时,把这套分层规则跑进了客户管理系统,店长每天早上能拿到一张"今天需要打电话的 S/A 级客户"清单,三个月之后 VIP 流失率从 18% 降到 11%。
这一姿势可以和 SCRM 私域怎么真正跑起来 结合,把分层规则、触达脚本、跟进动作都沉淀到工具里。
姿势 4:按产品线看交叉复购
第四类姿势,跨产品线看复购,回答的是什么样的「第二单」最能锁住客户?
操作上加一个维度:客户在第 0 期买的是哪一类产品(首购品类),跟踪他在后续 N 期买了哪一类产品(复购品类)。形成一张"品类迁移矩阵"。
| 首购品类 \ 复购品类 | A 类 | B 类 | C 类 | D 类 | 未复购 |
|---|---|---|---|---|---|
| A 类 | 高 | 中 | 低 | 低 | 中 |
| B 类 | 中高 | 中 | 中 | 低 | 中 |
| C 类 | 低 | 中 | 高 | 中 | 高 |
| D 类 | 中 | 低 | 中 | 中 | 中高 |
读法:行 = 首购买了什么,列 = 接着买了什么。对角线是"同类复购",非对角线是"跨类复购"。
跨类复购通常意味着客户从单一需求变成了多需求,留存大幅提高、LTV 大幅提高。如果发现某个跨类路径的转化率特别高(比如首购 A 类的客户里有相当比例会买 B 类),就能反向指导首购品类的选品、套餐组合和加购推荐。
开沿做过一家烘焙连锁的留存项目,跑出来发现"首购买蛋糕的客户买面包"的转化非常高,反过来"首购买面包的客户买蛋糕"的转化很低。基于这个发现,他们重新设计了引流款——把生日蛋糕作为获客主推,配套面包早餐券,6 个月后单客 LTV 涨了一倍多。这种洞察单纯看复购率根本拿不到。
数据准备:客户 ID 主数据 + 订单时间戳
聊完姿势聊基础设施。Cohort 分析跑不动的项目,99% 死在两个地方。
第一个坑:客户 ID 不统一。线上有微信 OpenID,线下有手机号,私域有员工备注名,B 端还有公司全称。同一个人在不同系统里是不同的 ID,跨渠道根本拉不到一起。这就是"主数据治理"要解决的核心问题。开沿做留存项目,第一步永远是先建一张统一客户主表,定义 master_customer_id,把各个来源的 ID 都映射到它。这个动作不做,后面分析全是错的。
第二个坑:时间戳粒度不够。订单表只记录"日期"不记录"时间",会丢掉小时级行为模式;订单状态变更没有时间戳,会丢掉退款/改单的影响;客户首次到店/首次注册/首次激活不分开记录,会让"入群事件"定义模糊。这些细节不在前期就拍板,后期重做工作量是 10 倍起。
要准备的最小数据集:
| 表名 | 关键字段 | 备注 |
|---|---|---|
| customer_master | master_customer_id, first_purchase_at, first_channel, rfm_tier | 一行一个客户 |
| order_flow | order_id, master_customer_id, order_at, gmv, sku_category | 一行一个订单 |
| channel_attribution | master_customer_id, channel, touch_at, utm_* | 一行一次触点 |
| churn_event | master_customer_id, churn_at, reason | 主动注销 |
字段不多,但每一个都要有严格口径。建议在动手分析之前先开一次跨部门口径会,把这几张表的每一列怎么定义白纸黑字写下来,业务、运营、IT、财务四方签字。不签字以后吵架的时候没人能裁判。
工具:从 Excel 透视到 SQL/BI/AI 问数的演进
落地工具有个演进路径,别一上来就追求"高级方案"。
阶段一:Excel 数据透视表。订单数据 1 万行以内、客户数据 5000 个以内、维度不超过 3 个,Excel 完全够用。优势是分析师自己可控、出图快、不用排期。劣势是数据量上去之后崩、维度多了维护不了、没办法做实时监控。开沿做的小客户项目,80% 跑在这一阶段就已经够用了。
阶段二:SQL + 基础 BI。订单数据百万级、要按多维度交叉、要做月度/季度报告自动化,上 SQL + 一个轻量 BI。这一阶段的关键是把 Cohort 表的 SQL 写法封装成视图或物化表,业务团队拖一下就能看,不用每次找 IT。
阶段三:AI 问数/对话式分析。数据量更大、维度更多、临时分析需求高频,上对话式问数。"上个月新开门店第 30 天留存率,按渠道拆"——这种自然语言查询不用再写 SQL,运营自己就能问。但前提是数据语义层要先建好,主数据、指标定义、字段口径要在元数据层标准化,否则 AI 问出来的答案是错的。这一块的实施路径可以参考 AI 经营分析的真相,把期望值和实施门槛都讲清楚。
要强调的是:工具不是阶段的标志,分析逻辑跑通才是。开沿见过太多客户花了几十万买 BI/数据平台,最后发现没人会用、口径没对齐,吃灰。正确的姿势是先用 Excel 把姿势 1-4 都跑一遍,分析逻辑、口径定义、汇报方式全部固化下来,再换工具——这时候工具是"加速器",不是"救命药"。
AI 接进来:流失预警 + 召回建议
最后一段聊聊 AI Agent/AI Coding 怎么自然嵌进这套留存分析体系。不是为了硬塞 AI 叙事,是因为留存分析的"最后一公里"——从洞察到行动——AI 确实能补上人力的盲区。
流失预警。传统做法是规则引擎:"S 级客户 60 天没下单就预警"。问题是规则覆盖不全:有些客户复购周期天然就是 90 天,60 天预警是噪音;有些客户即将流失但还没到 60 天,预警来不及。AI 模型可以把多个特征(最近一次下单、复购周期方差、客单价变化趋势、客服互动频次、退款记录、季节性因子等)综合起来,输出"30 天内流失概率"。开沿做的项目里,命中率比规则引擎高 15-25 个百分点。
召回建议。光预警没用,关键是告诉销售/客服"打电话说什么"。这一步把 LLM 接进来:基于客户历史购买记录、上次互动内容、当前优惠政策,自动生成一段 2-3 句话的召回话术草稿,销售只需要看一眼、改一改就能用。这把"群发模板话术"升级成了"千人千面话术"。这块的搭建思路可以参考 AI 数字员工能干什么 和 企业知识库 RAG 怎么搭,核心是把客户数据、历史互动、产品话术几张表喂给模型作为上下文。
反馈闭环。AI 预警和召回建议跑了之后,要把"实际是否流失/实际是否召回成功"回流到模型。三个月跑一轮再训练,准确率才会持续提高。这一闭环没建好的项目,半年后效果衰减得厉害——AI 不是装上去就完事,是要持续投喂数据的。
要提醒一点:AI 不是用来取代分析师的,是用来释放分析师精力的。分析师把"姿势 1-4 的口径、规则、阈值"定义好,AI 接管"全量监控、个性化建议、批量执行"这一层。两者之间的分工对清楚,AI 投入产出比就会高。
决策树:你的留存分析现在在哪一步?
最后给一个自检清单,对着勾一下你们现在到哪一步:
- 知道当前用的复购率口径是什么(窗口/分母/分子)
- 客户主数据有统一 ID(不再是手机号/微信号/会员卡号分散)
- 订单流水有完整时间戳(到小时级,含订单状态变更)
- 能跑出"按入群月分组的 12 个月留存曲线"
- 能跑出"按渠道分组的 LTV/CAC 对比"
- 有 RFM 分层规则并按层定义了流失阈值
- 有跨产品线的交叉复购矩阵
- Cohort 数据每月自动更新(不是每次手工跑 Excel)
- 有流失预警机制(规则版或模型版)
- 流失预警出来之后有人去跟、有反馈回流
- 分析师和业务方对 Cohort 表读图方式达成共识
| 勾选数 | 阶段判断 | 下一步建议 |
|---|---|---|
| 0-3 | 还在聚合数字阶段 | 先从姿势 1 开始,把入群月 Cohort 跑出来 |
| 4-6 | 在分群分析阶段 | 把渠道/分层维度加进来,跑姿势 2-3 |
| 7-9 | 在闭环监控阶段 | 把自动化和工具升级提上日程 |
| 10+ | 在 AI 增强阶段 | 流失预警接进业务动作,建反馈闭环 |
绝大多数项目卡在 3-6 这个区间,工具买了一堆,但口径没对齐、主数据没治理、Cohort 表跑不顺。攻坚的顺序应该是先口径、再数据、再分析、再工具、最后 AI,反过来基本失败。
写在最后
复购率/留存率单一数字会骗你,群组分析是看清真相的工具。但群组分析本身不创造价值——它只是把"哪里出了问题"看得更清楚。真正的价值在于看清问题之后愿不愿意调整业务动作:调整选品、调整渠道预算、调整客户分层服务、调整召回投入。
开沿做留存分析项目这几年,最大的体会是:愿意盯着 Cohort 表看三个月不下结论的客户,最后都跑出来了;想要一个"立竿见影的复购率提升方案"的客户,往往是数据治理这一关都还没过。慢就是快,把基础做扎实,姿势 1-4 跑明白,AI 接进来才有意义。
如果你正好在做电商、连锁、SaaS、教培、宠物、医美这一类需要长期客户关系的业务,下周开始就从姿势 1 做起——把客户按首单月份拆开,画一张 12 个月留存曲线。这一张图画出来,下一步该做什么自然就清楚了。




