The Problem
Churn is the silent killer of subscription businesses. By the time you see it in analytics dashboards, the subscribers are already gone. You need early warning signals.
Churn Signals Yeethook Delivers
Yeethook routes four key churn signals to your Slack channel:
1. Auto-Renew Disabled (DID_CHANGE_RENEWAL_STATUS)
The earliest signal. The customer turned off auto-renew but their subscription is still active until expiration. This is your window for retention.
2. Billing Failure (DID_FAIL_TO_RENEW)
Involuntary churn — the customer wanted to stay but their payment failed. Apple retries automatically, but you should monitor the volume.
3. Grace Period Expired (GRACE_PERIOD_EXPIRED)
Apple exhausted all billing retries. The customer loses access. Consider sending a win-back offer.
4. Subscription Expired (EXPIRED)
The definitive churn event. The subtype tells you why:
- VOLUNTARY — Customer chose to leave.
- BILLING_RETRY_PERIOD — Payment never succeeded.
- PRICE_INCREASE — Customer rejected the new price.
How to Set It Up
- Sign up at yeethook.com.
- Configure App Store Server Notifications via Quick Start.
- Create a
#churnSlack channel for churn signals. - Route churn events to the channel.
Best Practices
- Separate churn from revenue: Use
#churnfor cancellation signals and#revenuefor positive events. This prevents alert fatigue. - Track subtypes: AUTO_RENEW_DISABLED is actionable. EXPIRED is informational.
- Measure churn composition: High BILLING_RETRY_PERIOD churn is a payment problem. High VOLUNTARY churn is a product problem.