Skip to main content
Independent community resource — not affiliated with the official OpenClaw project. Learn more
Part 2 of 5OpenClaw for SaaS

Churn & Cancellation Alerts with OpenClaw

Use cases at a glance

Churn doesn't arrive without warning signs. Most at-risk accounts show multiple signals weeks before cancellation: failed logins, support tickets, usage drops, or payment failures. The at-risk agents in this guide catch those signals, score them, and surface flagged accounts before your support team notices empty inboxes.

⚠️ At-Risk Account Scoring

Real-time scoring system that weights multiple signals (login, usage, support, payment) and flags accounts above the risk threshold daily.

⏰ Trial Expiry Alerts

Monitor trials expiring in 3, 7, and 14 days without converting. Send timely reminders before they auto-expire.

📉 Downgrade Velocity Tracking

Detect when customers downgrade plans, especially in the same month as a prior upgrade (likely dissatisfaction).

📊 Cancellation Spike Detection

Alert when cancellations in a single day exceed your 7-day average. High-velocity churn deserves immediate attention.

🔄 Reactivation Tracking

Monitor cancelled subscriptions reactivated within 30 days, and follow up with high-value reactivations.

How churn signal scoring works

The scoring system assigns a weight to each churn signal based on its predictive power. Each account's total score is the sum of its signals' weights. Accounts exceeding a threshold (typically 18-22, configurable) are flagged as at-risk.

SignalWeightDefinition
No login in 14+ days8Account not accessed (may indicate switching or low priority)
Support tickets this week6Spike in help requests often precedes churn
Usage dropped >50% vs last month9Significant drop signals disengagement
Failed payment in last 7 days7Payment issues are strong churn predictors
Downgraded plan in last 30 days5Plan reduction shows reduced commitment
Trial expiring in 3 days without upgrade10Highest weight; trial expiry is near-certain churn if not converted
⚠️ Customize weights for your product: A login-based signal is strong for tools with daily DAU targets, but weak for integrations used once per week. Lower the login weight from 8 to 3 if your product is async. Raise the usage drop weight from 9 to 10 if usage is the core health metric.

Setting up the at-risk agent

The churn-signal-scorer agent runs daily and computes each account's risk score. Configure it with your weighted signals and the threshold above which accounts are flagged.

agents: churn-signal-scorer: description: "Score all accounts for churn risk based on weighted signals" tools: - stripe-api - analytics-api # Mixpanel, PostHog, Amplitude, or custom config: stripe_key: "${STRIPE_RESTRICTED_KEY}" signal_weights: no_login_14d: 8 support_tickets_week: 6 usage_drop_50pct: 9 failed_payment_7d: 7 downgrade_30d: 5 trial_expiring_3d: 10 risk_threshold: 20 # flag accounts scoring >= 20 ignore_if: - trial_days_old < 7 # ignore very new trials - plan_name == "free" # ignore free tier (no risk) - arr < 100 # ignore sub-$100/yr (noise) output: format: markdown include_flagged_accounts: true include_signal_breakdown: true top_at_risk: 15 heartbeats: daily-churn-scoring: schedule: "0 8 * * *" # 8am daily agent: churn-signal-scorer

Trial expiry monitoring

Trials are your highest-risk segment. Send reminders at 14 days, 7 days, and 3 days before expiry. Most teams see 20-40% conversion from a 3-day reminder email.

agents: trial-expiry-monitor: description: "Alert on trials expiring soon" tools: - stripe-api config: stripe_key: "${STRIPE_RESTRICTED_KEY}" monitoring: - expiring_in_days: 14 alert_type: "soft_reminder" - expiring_in_days: 7 alert_type: "friendly_reminder" - expiring_in_days: 3 alert_type: "last_chance" exclude_already_upgraded: true # don't alert if they've already converted output: format: markdown send_list: true # generate email list for your CS tool heartbeats: trial-expiry-check: schedule: "0 9 * * *" # 9am daily (staggered after churn-scoring) agent: trial-expiry-monitor

Downgrade velocity tracking

A single downgrade is not alarming. But a downgrade within 30 days of an upgrade signals buyer's remorse — and probable churn within 60 days. Track and alert on these patterns.

agents: downgrade-velocity: description: "Flag accounts that downgraded soon after upgrading" tools: - stripe-api config: stripe_key: "${STRIPE_RESTRICTED_KEY}" patterns: - upgrade_then_downgrade_within_days: 30 alert_severity: "high" - consecutive_downgrades_2plus: alert_severity: "critical" include_email: true include_previous_plan: true output: format: markdown heartbeats: downgrade-watch: schedule: "0 9 * * *" # daily at 9am agent: downgrade-velocity

Cancellation spike detection

Normally your churn is steady: maybe 1-3 accounts per day. If you see 5+ cancellations in a single day, something's wrong (product incident, competitor launch, billing issue). Alert immediately.

agents: cancellation-spike-detector: description: "Alert if daily cancellations exceed 7-day average" tools: - stripe-api config: stripe_key: "${STRIPE_RESTRICTED_KEY}" lookback_days: 7 spike_multiplier: 2.5 # alert if today > (7-day avg × 2.5) minimum_threshold: 3 # alert only if > 3 cancellations anyway output: format: markdown urgency: critical heartbeats: cancellation-spike-watch: schedule: "0 * * * *" # every hour agent: cancellation-spike-detector

HEARTBEAT templates

heartbeats: # Daily at-risk scoring — 8am daily-risk-score: schedule: "0 8 * * *" agent: churn-signal-scorer # Trial expiry reminders — 9am (after risk scoring) trial-watch: schedule: "0 9 * * *" agent: trial-expiry-monitor # Downgrade alerts — 9am downgrade-alerts: schedule: "0 9 * * *" agent: downgrade-velocity # Cancellation spike watch — every hour spike-watch: schedule: "0 * * * *" agent: cancellation-spike-detector

Sample at-risk report

## Churn Risk Report — Thursday, March 26, 2026 **🚨 At-risk accounts:** 7 flagged (risk score ≥ 20) ### ⚠️ Critical Risk (score ≥ 25) 1. **Acme Corp** - Score: 28 (No login 16d: +8 | Usage -62%: +9 | Failed payment 2d: +7 | Support tickets ×3: +6) - MRR: $2,400/mo - Action: URGENT — Acme sales rep contacted, payment issue confirmed, discussing workaround 2. **Brightfield Inc** - Score: 26 (Downgraded Enterprise→Growth: +5 | No login 14d: +8 | Support tickets ×2: +6 | Usage -55%: +9) - MRR: $1,200/mo - Action: CS outreach recommended, likely dissatisfied with Enterprise feature set ### ⚠️ High Risk (score 20-24) 3. **TechVenture Labs** - Score: 23 (Trial expiring 3d: +10 | No login 8d: +8 | No upgrade signals: +5) - MRR: $0 (Trial) - Action: Send last-chance upgrade email today (typical 30% conversion rate) 4. **Startup XYZ** — Score: 21 5. **Mid-Market Corp** — Score: 20 ### ✅ Downgrade Alerts - **Customer Alpha**: Upgraded to Growth ($300/mo) on March 19, downgraded to Starter ($100/mo) on March 25. High re-churn risk. ### ⏰ Trial Expirations - 6 trials expiring in 7 days - 3 trials expiring in 3 days (SEND REMINDERS)

FAQ

How does the churn signal scoring system work?

The system assigns a weight (0-10) to each churn signal based on its predictive power. Signals include no login in 14+ days (weight 8), support tickets opened this week (weight 6), usage dropped >50% vs last month (weight 9), failed payment in last 7 days (weight 7), downgraded plan in last 30 days (weight 5), and trial expiring in 3 days without upgrade (weight 10). Each account's total score is the sum of weighted signals. Accounts exceeding the threshold (typically 18-22) are flagged as at-risk and included in daily reports.

Will I get false positives from healthy accounts?

Yes, especially for the 'no login' signal which can indicate integration completion for low-touch products. Adjust weights based on your product: lower the login weight for embedded tools, raise it for usage-based products. Also use the 'ignore_if' exceptions in the agent config to exclude accounts by plan tier (e.g., ignore trials under 7 days old, ignore free plans with short tenure). Track outcomes over 4 weeks and refine weights based on which flagged accounts actually churned.

What should I do when an account is flagged as at-risk?

Recommended workflow: (1) Review the signal breakdown to understand which factors triggered the flag. (2) If it's a high-MRR account or strategic customer, send a proactive check-in via email or CS outreach that same day. (3) For trial expiry alerts, a simple reminder email with one-click upgrade has 20-40% conversion rates. (4) Track outcomes (customer replied, upgraded, churned) to refine your weights over time. In 4-6 weeks, you'll have enough data to optimize which signals predict real churn in your specific market.