Skip to main content

Churn Events

Churn events represent customer cancellations and failed payments. Each event triggers AI-powered recovery workflows.

Event Status Lifecycle

Every churn event moves through a defined lifecycle:

Create a Churn Event

Create a new churn event manually (alternative to webhooks).

Request Body

customer_email
string
required
Customer’s email address.
customer_name
string
Customer’s display name.
event_type
string
required
Type of churn: cancellation or payment_failed.
cancel_reason
string
Free-text reason for cancellation. Drives AI strategy selection.
mrr
integer
Monthly recurring revenue in cents.
currency
string
ISO 4217 currency code. Defaults to usd.
plan_name
string
Subscription plan name.
tenure_days
integer
Days the customer has been subscribed.

Example Request

Example Response


List Churn Events

Retrieve a paginated list of churn events for a project.

Query Parameters

page
integer
default:"1"
Page number.
per_page
integer
default:"20"
Items per page (max 100).
status
string
Filter by status: new, processing, variants_generated, email_sent, recovered, lost.
event_type
string
Filter by type: cancellation or payment_failed.

Example Request

Example Response


Get a Churn Event

Retrieve a single churn event by ID.

Example Request

Example Response


Mark as Recovered

Mark a churn event as recovered when the customer reactivates.

Example Request

Example Response

Stripe and Razorpay integrations automatically mark events as recovered when a payment_succeeded or payment.captured event is received.

Update Cancel Reason

Update the cancel reason on an existing churn event. Useful when the reason is collected after the event is created.

Request Body

cancel_reason
string
required
The updated cancel reason.

Example Request

Example Response