Catch churn signals before subscribers leave

Monitor subscription churn signals in real time — auto-renew toggles, billing failures, and expirations delivered to Slack or Discord with Yeethook.

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 or Discord 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


  1. Sign up at yeethook.com.
  2. Configure App Store Server Notifications via Quick Start.
  3. Create a #churn channel in Slack or Discord for churn signals.
  4. Route churn events to the channel.

Best Practices


  • Separate churn from revenue: Use #churn for cancellation signals and #revenue for 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.

Ready to get started?

Set up Yeethook in minutes and start receiving catch churn signals before subscribers leave notifications in Slack or Discord.

Get Started Free