关于 churn-prevention
churn-prevention 是面向 SaaS 团队的客户流失预防技能,涵盖主动取消和支付失败导致的流失。它提供取消流程、挽留方案、催款和召回活动的设计框架。
主要功能
- 01设计取消流程与退出调查
- 02按退出原因匹配挽留方案
- 03规划失败付款重试与催款邮件
- 04设计取消后的召回活动
- 05建立流失健康评分与影响测算
适用场景
- 01改进 SaaS 取消流程并收集流失原因
- 02针对支付失败设计催款与恢复流程
- 03按客户取消原因提供挽留方案
- 04规划取消后的客户召回活动
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill churn-prevention安装后在 Claude Code 中输入/churn-prevention确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/churn_impact_calculator.pydunning_sequence_analyzer.pyexit_survey_analyzer.py详细介绍
防止客户流失
面向生产环境的 SaaS 客户流失减少框架,涵盖取消流程架构、动态挽留优惠映射、退出调查设计、催款序列工程、付款挽回优化、客户召回活动和流失影响建模。针对主动流失(客户决定离开)和被动流失(因付款失败而离开)。
目录
先确认
设计客户流失防范系统前,请确认以下信息。如果有任何信息未知或含糊不清,请提问,不要自行假设:
- 主动流失与被动流失的比例 — 哪种占主导(决定是构建取消流程和挽留优惠,还是催款和付款挽回)
- 现有取消流程,还是立即取消/通过支持取消 — 决定是从头构建还是进行优化
- 当前 MRR、ARPU 和计费周期 — 用于估算金额影响和挽留优惠预算
- 付款处理商 — Stripe/Braintree/Paddle/Recurly(决定卡片更新和催款重试的实现方式)
停止规则:只询问对输出影响最大的 2-3 项。如果用户说“直接起草”,就继续,并在交付内容开头列出假设。
初步评估
所需背景信息
| 问题 | 重要性 |
|---|---|
| 当前月流失率是多少?(主动流失与被动流失的比例) | 决定应采取哪种措施 |
| 是否有取消流程,还是取消会立即生效/需通过支持取消? | 决定是构建还是优化 |
| 使用哪种付款处理商?(Stripe、Braintree、Paddle) | 影响催款的实现方式 |
| 平均合同金额和计费周期是多少? | 用于估算挽留优惠预算 |
| 当前 MRR 是多少? | 用于计算降低客户流失带来的金额影响 |
| SaaS 模式是什么?(自助服务还是销售辅助) | 决定干预类型 |
| 目前是否收集退出原因? | 决定挽留优惠映射的数据是否可用 |
流失分类
主动流失(客户决定离开)
| 类型 | 信号 | 是否可挽回? |
|---|---|---|
| 价值差距 | 获得的价值不足以匹配价格 | 可以——挽留优惠、功能介绍 |
| 产品与市场不匹配 | ICP 不合适,产品不适用于其使用场景 | 部分可以——降级或调整方向 |
| 转向竞争对手 | 找到了更好的替代方案 | 可以——提供竞争性反报价 |
| 削减预算 | 无力继续承担费用 | 可以——折扣或暂停 |
| 项目完成 | 季节性需求或基于项目的需求 | 可以——提供暂停选项 |
| 体验不佳 | 支持服务差、存在漏洞、令人沮丧 | 可以——人工介入 |
| 从未激活 | 注册后从未使用 | 部分可以——取消前重新激活 |
被动流失(付款失败)
| 原因 | 失败付款占比 | 是否可挽回? |
|---|---|---|
| 卡片过期 | 40-50% | 可以——使用卡片更新服务 |
| 资金不足 | 20-30% | 可以——智能安排重试时间 |
| 银行拒绝(欺诈标记) | 10-15% | 有时可以——客户必须联系银行 |
| 账户已关闭 | 5-10% | 不可以——客户必须提供新卡 |
| 网络错误 | 5-10% | 可以——自动重试 |
取消流程架构
取消流程的 5 个阶段
[Cancel Button] → [Exit Survey] → [Dynamic Save Offer] → [Confirmation] → [Post-Cancel]
阶段 1:触发取消
- 取消选项应易于找到(设置 > 账户 > 取消)。不要隐藏它。
- 点击“取消”后启动流程——不会立即取消账户
- 同时适用于桌面端和移动端
第 2 阶段:退出调查(必填,共 1 个问题)
问题:“您取消的主要原因是什么?”
以单选按钮呈现(不要使用下拉菜单)。最多 8 个选项:
| 原因 | 内部代码 |
|---|---|
| 价格与我获得的价值不相称 | PRICE |
| 使用频率不够 | LOW_USAGE |
| 缺少我需要的功能 | MISSING_FEATURE |
| 改用其他产品 | COMPETITOR |
| 我的项目或需求已结束 | PROJECT_END |
| 使用起来太复杂 | COMPLEXITY |
| 只是试用,并未打算继续使用 | TESTING |
| 其他(可选填文字) | OTHER |
规则:
- 显示挽留优惠前必须完成调查(答案决定提供哪种优惠)
- 只能有一个问题。不要使用多页调查。
- “其他”选项可填写文字;也可在选择任何选项后补充填写
- 按月跟踪回复分布,以发现系统性问题
第 3 阶段:动态挽留优惠
为每个退出原因恰好匹配一项挽留优惠:
| 退出原因 | 挽留优惠 | 优惠文案 |
|---|---|---|
| PRICE | 优惠 30%–50%,持续 2–3 个月 | “我们希望为您提供 [X]% 的折扣,为期 [N] 个月” |
| LOW_USAGE | 暂停账户 1–3 个月 | “暂停您的账户,等您有需要时再回来” |
| MISSING_FEATURE | 产品路线图预览 + 替代方案 | “[Feature] 将于 [Q] 推出。以下是目前实现该功能的方法” |
| COMPETITOR | 竞品对比 + 折扣 | “以下是我们与 [competitor] 的对比。另外,还可享受 [X]% 折扣” |
| PROJECT_END | 暂停选项 | “暂停账户,而不是取消——您的数据会安全保留” |
| COMPLEXITY | 免费上手辅导 | “让我们为您完成设置——我们的团队提供免费的 30 分钟辅导” |
| TESTING | 不提供优惠——让他们离开 | “感谢您试用我们的产品。欢迎随时回来。” |
| OTHER | 通用挽留优惠 | “离开之前——我们很乐意解决您的问题。[Contact support]” |
优惠呈现规则:
- 每个屏幕只展示一项明确的优惠(不要提供多个选项)
- 明确量化优惠价值:“未来 3 个月为您节省 $120”,而不是“享受折扣”
- CTA:“接受优惠”与“继续取消”(两者都要清楚标明)
- 不使用倒计时器或虚假的紧迫感
- 不使用让用户内疚的文案
第 4 阶段:确认
如果他们拒绝挽留优惠,或没有可提供的优惠:
┌────────────────────────────────────────┐
│ We're sorry to see you go │
│ │
│ What happens when you cancel: │
│ - Your data is saved for 90 days │
│ - Access continues until [date] │
│ - You can reactivate anytime │
│ │
│ [Yes, Cancel My Account] │
│ [Wait, I Changed My Mind] │
│ │
│ No pre-checked boxes. │
│ No confusing language. │
└────────────────────────────────────────┘
第 5 阶段:取消后
| 时间 | 渠道 | 消息 |
|---|---|---|
| 立即 | 取消确认 + 数据保留政策 + 重新激活链接 | |
| 第 7 天 | “我们想念您” + 重新激活的单一 CTA + 您将错过的内容 | |
| 第 30 天 | 产品更新 + 相关改进 + 重新激活优惠 | |
| 第 60 天 | 最终挽回优惠,提供力度最大的优惠(如适用) |
退出调查设计
数据分析框架
按月跟踪退出调查回复并计算:
| 指标 | 公式 | 行动阈值 |
|---|---|---|
| 原因分布 | 每种原因对应的取消比例 | 任一原因 > 30% = 系统性问题 |
| 按原因划分的挽留率 | 成功挽留数量 / 每种原因对应的取消尝试数 | 任一原因的挽留率 < 5% = 优惠不匹配 |
| 原因趋势 | 环比变化 | 呈上升趋势 = 问题恶化 |
| 功能缺口频率 | 统计用户提及具体功能的“缺少功能”回复数量 | 缺少频率最高的 3 项功能 = 产品路线图输入 |
通过退出调查获取竞品情报
当用户选择“改用其他产品”时:
- 追问:“您要改用哪款产品?”(选填,可自由输入或从下拉菜单选择)
- 跟踪赢得您流失用户的排名前 3 位的竞品
- 将这些数据提供给 competitive-teardown skill,用于季度分析
动态挽留优惠系统
优惠方案经济性
| 优惠类型 | 企业成本 | 挽留率基准 | 何时盈利 |
|---|---|---|---|
| 30% 折扣(3 个月) | 3 个月收入的 30% | 15-25% | 挽留后的 LTV 高于折扣成本时 |
| 50% 折扣(2 个月) | 2 个月收入的 50% | 20-30% | 留存客户继续使用 6 个月以上时 |
| 暂停(1-3 个月) | $0(暂停期间无收入) | 25-40% | 暂停后重新激活的客户超过 50% 时 |
| 免费入门指导 | 客户成功团队时间(约 $50-100) | 10-20% | ARPU 高于 $100/月时 |
| 降级至较低套餐 | 收入减少 | 30-50% | 有部分收入胜过没有收入时 |
| 解锁功能 | $0(功能已开发) | 5-15% | 始终盈利 |
挽留优惠决策树
User selects exit reason →
├── PRICE →
│ ├── Customer ARPU > median? → Offer 30% discount
│ └── Customer ARPU < median? → Offer downgrade to cheaper plan
├── LOW_USAGE →
│ ├── Last login > 30 days? → Offer pause
│ └── Last login < 30 days? → Offer usage tips + discount
├── MISSING_FEATURE →
│ ├── Feature on roadmap? → Share roadmap + workaround
│ └── Feature not planned? → Offer discount or acknowledge gap
├── COMPETITOR →
│ ├── Known competitor? → Show comparison + retention offer
│ └── Unknown competitor? → General retention offer
├── PROJECT_END →
│ └── Always → Offer pause
├── COMPLEXITY →
│ ├── Enterprise/high-value? → Offer dedicated onboarding session
│ └── SMB/low-value? → Offer guided tutorial link
└── TESTING →
└── Always → No offer, let go gracefully
逾期付款处理序列设计
支付失败会造成总流失量的 20-40%。其中大部分可以通过妥善的逾期付款处理挽回。
智能重试计划
失败后不要立即重试。银行卡通常会在 3-7 天内恢复正常。
| 重试 | 时间 | 选择此时间的原因 |
|---|---|---|
| 初次扣款 | 第 0 天 | 正常计费周期 |
| 重试 1 | 第 3 天 | 大多数银行卡问题会在 72 小时内解决 |
| 重试 2 | 第 7 天 | 配合发薪周期 |
| 重试 3 | 第 12 天 | 配合第二次发薪周期 |
| 重试 4 | 第 18 天 | 采取服务措施前的最后一次尝试 |
| 服务措施 | 第 21 天 | 降级或取消 |
银行卡自动更新服务
启用银行卡自动更新,避免因银行卡过期导致客户流失:
| 支付处理商 | 服务 | 启用方式 |
|---|---|---|
| Stripe | 自动更新银行卡 | 大多数套餐默认启用 |
| Braintree | Account Updater | 必须在商户设置中启用 |
| Paddle | 内置 | 自动 |
| Recurly | Account Updater | 需要配置 |
逾期付款邮件序列
| 天数 | 邮件主题 | 正文重点 | CTA |
|---|---|---|---|
| 0 | “您的 [Product] 付款未能成功” | 陈述事实,不归咎于客户。银行卡可能已过期或余额不足。 | [更新付款方式] |
| 3 | “需要采取行动:更新您用于 [Product] 的付款方式” | 提醒客户将无法再使用哪些内容。 | [更新付款方式] |
| 7 | “您的 [Product] 账户面临风险” | 列出他们创建的功能和数据。适度提醒紧迫性。 | [更新付款方式] |
| 14 | “最后通知:您的 [Product] 使用权限将在 7 天后结束” | 明确截止日期。如果是银行问题,提供帮助。 | [更新付款方式] + [联系支持团队] |
| 21 | “您的 [Product] 账户已暂停” | 说明账户状态变更。数据安全无虞。可轻松重新激活。 | [重新激活账户] |
邮件规则:
- 每封邮件都直接链接到付款信息更新页面(而非控制面板)
- 不要让客户感到内疚或羞愧。银行卡支付失败时有发生。
- 主题行要明确(包含产品名称)
- 包含欠款金额和银行卡后 4 位数字
- 为需要帮助的客户提供支持渠道
客户挽回活动框架
客户挽回时间安排
| 时间窗口 | 成功率 | 方式 |
|---|---|---|
| 取消后第 7 天 | 5-10% | 温和提醒,不施加压力 |
| 取消后第 30 天 | 3-7% | 产品更新 + 优惠 |
| 取消后第 60 天 | 2-5% | 最优惠方案 + 重新开始 |
| 取消后第 90 天及以后 | 1-3% | 仅在产品有重大变化时联系 |
客户挽回邮件序列
第 7 天邮件:
- 主题:“您的 [Product] 账户正在等您回来”
- 正文:介绍他们离开后留下的内容(数据、项目、团队)。只设一个 CTA:重新激活。
- 不提供折扣,只提醒产品价值。
第 30 天邮件:
- 主题:“[Product] 的最新动态”
- 正文:列出离开后新增的 2-3 项具体改进。只设一个 CTA:重新激活。
- 小额优惠:“回来即可享受 1 个月免费”
第 60 天邮件:
- 主题:“我们期待您回来 -- [offer]”
- 正文:提供最优惠方案(3 个月 5 折或延长免费期)。明确截止日期。
- 最后一次重要的联系尝试。
流失健康度评分
流失的领先指标
| 信号 | 权重 | 检测方式 |
|---|---|---|
| 登录频率下降(周环比) | 高 | 使用分析 |
| 功能使用量下降 | 高 | 功能事件跟踪 |
| 支持工单升级 | 高 | 服务台数据 |
| NPS 回复 < 7 | 高 | 调查数据 |
| 对发票提出争议或付款问题 | 中 | 计费系统 |
| 关键联系人离职 | 高 | 联系人监控 |
| 距离合同续约不到 90 天 | 中 | CRM 数据 |
| 检测到正在评估竞品 | 高 | 销售情报 |
风险评分计算
Risk Score = Sum of (Signal Weight x Signal Present)
0-20: Low risk (monitor)
21-40: Moderate risk (proactive outreach)
41-60: High risk (intervention required)
61+: Critical risk (executive escalation)
指标与基准
关键指标
| 指标 | 公式 | 良好 | 优秀 |
|---|---|---|---|
| 挽留率 | 成功挽留的客户数 / 取消尝试次数 | 10-15% | 20%+ |
| 主动流失率 | 主动取消数 / 客户总数(月度) | < 3% | < 1.5% |
| 非主动流失率 | 因付款失败而取消的数量 / 客户总数(月度) | < 1.5% | < 0.5% |
| 付款追回率 | 追回的失败付款数 / 失败付款总数 | 25-35% | 40%+ |
| 挽回率 | 重新激活数 / 取消数(90 天窗口期) | 5-10% | 10%+ |
| 退出调查完成率 | 已完成的调查数 / 取消尝试次数 | > 70% | > 90% |
| 挽留优惠接受率 | 已接受的优惠数 / 已展示的优惠数 | 15-25% | 30%+ |
危险信号
| 信号 | 诊断 | 行动 |
|---|---|---|
| 挽留率 < 5% | 优惠与流失原因不匹配 | 重建优惠与原因的映射关系 |
| 退出调查完成率 < 60% | 调查过长或可选 | 设为必填,仅保留 1 个问题 |
| 追回率 < 20% | 重试逻辑或邮件出现故障 | 审查催款序列 |
| 单一原因 > 40% | 存在系统性产品/定价问题 | 上报产品团队/管理层 |
| 月流失率 > 5% | 业务可能正在萎缩 | 仅靠流失预防无法解决;重新审视 ICP 和产品 |
流失影响计算器
快速估算
Monthly MRR at risk = Total MRR x Monthly churn rate
Annual MRR saved by 1% churn reduction = Total MRR x 0.01 x 12
Annual MRR saved by 20% save rate = (Monthly MRR at risk x 0.20) x 12
Example:
MRR: $500,000
Monthly churn: 4% = $20,000/month lost
Reduce to 3% = $5,000/month saved = $60,000/year
Add 20% save rate on remaining = $3,000/month saved = $36,000/year
Total annual impact: $96,000
输出产物
| 产物 | 格式 | 描述 |
|---|---|---|
| 取消流程设计 | 包含文案的 5 阶段流程 | 从触发到取消后的完整流程 |
| 退出调查 | 单选按钮选项 + 映射关系 | 6-8 个原因及对应的挽留优惠 |
| 挽留优惠系统 | 决策树 | 原因与优惠的映射关系及经济效益 |
| 催款序列 | 5 封邮件的序列 | 主题行、正文文案、时间安排、重试计划 |
| 挽回活动 | 3 封邮件的序列 | 第 7、30、60 天发送的邮件,包含主题行和优惠 |
| 流失记分卡 | 指标表格 | 当前指标与基准对比,并分析差距 |
| 影响模型 | 收入计算 | 不同改善幅度下减少流失带来的金额影响 |
相关技能
- customer-success-manager -- 用于健康度评分、QBR 和扩张收入。不用于取消流程或催款设计。
- pricing-strategy -- 当流失根因是定价或套餐不匹配时使用。不用于挽留优惠设计。
- onboarding-cro -- 当流失可追溯到激活效果不佳时使用。如果用户从未体验到价值,应先改进引导流程。
- referral-program -- 用于获客。流失预防关注的是漏斗的另一端。
工具参考
1. churn_impact_calculator.py
用途: 计算不同改善幅度下减少流失带来的收入影响。
python scripts/churn_impact_calculator.py --mrr 500000 --churn-rate 4.0 --save-rate 20
python scripts/churn_impact_calculator.py --mrr 500000 --churn-rate 4.0 --save-rate 20 --json
| 标志 | 必需 | 描述 |
|---|---|---|
--mrr | 是 | 当前每月经常性收入,单位为美元 |
--churn-rate | 是 | 当前月流失率(百分比,例如 4.0 表示 4%) |
--save-rate | 否 | 取消流程挽留率(百分比,默认值:15) |
--target-churn | 否 | 目标流失率(百分比,默认值:当前值减 1) |
--json | 否 | 以 JSON 格式输出结果 |
2. dunning_sequence_analyzer.py
用途: 分析催缴邮件序列的效果,并建议优化重试时间。
python scripts/dunning_sequence_analyzer.py dunning_data.json
python scripts/dunning_sequence_analyzer.py dunning_data.json --json
| 标记 | 必填 | 描述 |
|---|---|---|
dunning_data.json | 是 | 包含付款失败和重试数据的 JSON 文件 |
--json | 否 | 以 JSON 格式输出结果 |
输入 JSON 格式:
{
"failed_payments": [
{
"payment_id": "PAY-001",
"amount": 99.00,
"failure_reason": "expired_card",
"retry_attempts": [
{"day": 0, "recovered": false},
{"day": 3, "recovered": false},
{"day": 7, "recovered": true}
]
}
]
}
3. exit_survey_analyzer.py
用途: 分析退出调查回复,以识别客户流失模式、挽留优惠效果和系统性问题。
python scripts/exit_survey_analyzer.py survey_data.json
python scripts/exit_survey_analyzer.py survey_data.json --json
| 标记 | 必填 | 描述 |
|---|---|---|
survey_data.json | 是 | 包含退出调查回复数据的 JSON 文件 |
--json | 否 | 以 JSON 格式输出结果 |
--period | 否 | 分析周期标签(默认值:"current") |
故障排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 所有原因的挽留率都低于 5% | 挽留优惠与退出原因不匹配 | 根据调查数据重新构建退出原因与优惠的映射;运行 exit_survey_analyzer.py,找出不匹配项 |
| 退出调查完成率低于 60% | 调查为可选项或内容过长 | 在显示挽留优惠前,将单题调查设为必填;移除多页流程 |
| 付款追回率低于 20% | 重试逻辑配置错误,或催缴邮件未发送 | 使用 dunning_sequence_analyzer.py 审查催缴序列;验证邮件送达情况和重试计划 |
| 单个退出原因占回复量的比例超过 40% | 产品或定价存在系统性问题 | 提交给产品团队或管理层处理;仅靠取消流程无法解决 |
| 月客户流失率高于 5% | 可能是 ICP、产品市场契合度或定价问题 | 仅靠客户流失预防无法解决;应结合定价策略和产品反馈闭环 |
| 挽回邮件没有带来任何重新激活 | 邮件未能进入收件箱,或优惠力度不足 | 检查送达情况(SPF、DKIM、DMARC);测试力度更大的优惠;验证重新激活链接是否有效 |
| 非自愿客户流失增加,而自愿客户流失保持稳定 | 未启用卡片自动更新,或重试时间安排不佳 | 在支付处理商处启用自动更新卡片;在 dunning_sequence_analyzer.py 中检查重试计划 |
成功标准
- 月自愿客户流失率低于 2.5%(低于 1.5% 为优秀)
- 月非自愿客户流失率低于 1.0%(低于 0.5% 为优秀)
- 取消流程挽留率为 15-25%(高于 20% 为优秀)
- 失败付款的追回率达到 30% 以上
- 退出调查完成率高于 80%
- 取消后 90 天内的挽回重新激活率为 5-10%
- 挽留优惠接受率高于 20%,且留存客户在接受挽留后继续留存 6 个月以上
范围与限制
- 范围内: 取消流程设计、退出调查架构、挽留优惠映射、催缴序列、付款追回、挽回活动、客户流失影响建模
- 范围外: 产品市场契合度分析、定价重构、ICP 重新定义、客户获取
- 数据依赖: 脚本分析来自 JSON 输入的时间点快照;不与 CRM 实时集成
- 非预测性机器学习: 所有评分均为确定性算法计算,不使用机器学习模型
- 法律说明: 取消流程必须遵守 FTC 指南(美国)和消费者保护法(欧盟);不得让取消变得不合理地困难
- 收入估算: 影响计算是基于输入假设的预测,并非保证
集成点
- customer-success-manager -- 将健康度评分纳入流失风险评估;使用流失数据校准健康度评分阈值
- pricing-strategy -- 当退出调查数据显示 PRICE 是主要原因(>30%)时,升级至 pricing-strategy 进行定价结构审查
- onboarding-cro -- 当退出调查数据显示 LOW_USAGE 或 COMPLEXITY 是首要原因时,根本原因通常是激活效果不佳;应先改进引导流程
- revenue-operations -- 管道和预测模型应将降低流失率对净收入留存率(NRR)的影响纳入考量
- referral-program -- 接受挽留优惠后留存的客户,在持续使用 90 天后可考虑加入推荐计划
评论
支持 Markdown