Stripe Integration
Connect your Stripe account to automatically detect cancellations, failed payments, and successful recoveries.Setup
Copy Your Webhook URL
Find your webhook URL in Settings > Integrations > Stripe. The format is:Your public key starts with
pub_ and is unique to your project.Add the Webhook in Stripe Dashboard
- Go to Stripe Dashboard > Developers > Webhooks
- Click Add endpoint
- Paste your Windback webhook URL
- Select the events listed below
- Click Add endpoint
Select Webhook Events
Enable the following events in Stripe:
| Stripe Event | Windback Churn Type | Description |
|---|---|---|
customer.subscription.deleted | Voluntary churn | Customer actively canceled their subscription |
invoice.payment_failed | Involuntary churn | Payment method declined or expired |
invoice.payment_succeeded | Recovery | Previously failed payment succeeded |
Voluntary vs Involuntary Churn
Windback distinguishes between two types of churn to tailor recovery strategies:Voluntary Churn
The customer intentionally cancels. Triggered by
customer.subscription.deleted. Recovery strategies focus on understanding the cancel reason and addressing objections — value recap, downgrade offers, pause options.Involuntary Churn
The payment fails without customer intent. Triggered by
invoice.payment_failed. Recovery strategies focus on updating payment methods — dunning emails, payment update reminders, grace period notifications.Webhook Resilience
Windback webhook endpoints always return HTTP 200 regardless of internal processing status. This prevents Stripe from disabling your webhook due to repeated failures.
Data Mapping
When Windback receives a Stripe webhook, the following fields are extracted:| Stripe Field | Windback Field | Notes |
|---|---|---|
customer.email | customer_email | Decrypted from Stripe customer object |
customer.name | customer_name | Falls back to email prefix if empty |
subscription.plan.amount | mrr | Converted to cents |
subscription.plan.currency | currency | ISO 4217 code (e.g., usd) |
subscription.plan.nickname | plan_name | Stripe plan display name |
subscription.created | tenure_days | Calculated from subscription start to cancel |
Testing with Stripe CLI
You can test the integration locally using the Stripe CLI:Verifying the Connection
After setup, you can verify the integration is working:- Trigger a test event using Stripe CLI or the Stripe Dashboard
- Check your Windback dashboard for the new churn event
- The event should appear within a few seconds with status
new
Windback does not currently verify Stripe webhook signatures. The public key in the URL acts as the authentication mechanism. Keep your webhook URL private.