Churn Risk Webhook Delivery
Instead of letting Windback send emails directly, you can receive churn risk alerts as webhook payloads and handle them yourself.Why Use Webhook Delivery
Custom Flows
Trigger internal workflows — assign a CSM, create a Jira ticket, or start a drip campaign in your own email platform.
Slack Alerts
Post high-risk customer alerts to a Slack channel so your team can respond in real time.
CRM Updates
Push risk scores and signals into Salesforce, HubSpot, or any CRM via your middleware.
Setup
Enable Webhook Mode
In your project dashboard, go to Settings > Churn Risk and set the delivery mode to Webhook.Or use the API:
Webhook Payload
When a customer crosses the risk threshold, Windback sends aPOST request with the following JSON body:
Field Reference
| Field | Type | Description |
|---|---|---|
event | string | Always churn_risk.alert |
project_id | string | Your project identifier |
customer_email | string | The at-risk customer’s email |
risk_score | integer | Score from 0 to 100 |
risk_level | string | One of critical, high, medium, low |
signals | array | Top contributing signals with their weights |
triggered_at | string | ISO 8601 timestamp of when the alert fired |
opaque_id | string | Unique identifier for this alert event |
Signature Verification
Every webhook request includes anX-Windback-Signature header containing an HMAC SHA-256 signature. Verify it using your project’s webhook secret to confirm the payload was sent by Windback and has not been tampered with.
The signature is computed over the raw request body using your webhook secret as the key.
Delivery Behavior
Windback follows a retry strategy to ensure reliable delivery:- Attempts: Up to 3 retries on failure (4 total attempts).
- Backoff: Exponential backoff — 10 seconds, 60 seconds, 5 minutes.
- Success: Any
2xxresponse is treated as successful delivery. - Failure: After all retries are exhausted, the alert is marked as
failedin the Alert Log. You can manually re-trigger it from the dashboard.
Webhook timeouts are set to 10 seconds. Make sure your endpoint responds quickly. If you need to do heavy processing, accept the webhook and process it asynchronously.
Tracking with Opaque IDs
Every webhook payload includes anopaque_id field. Use this to:
- Deduplicate alerts if the same payload is delivered more than once during retries.
- Correlate alerts with actions taken in your system.
- Reference specific alerts when contacting Windback support.
opaque_id is also visible in the Alert Log in the dashboard, making it easy to trace an alert from your system back to Windback.
Disabling Webhook Delivery
To stop receiving webhooks, switch back to Direct mode or disable churn risk alerts entirely:Disabling alerts does not delete historical data. Risk scores continue to be calculated in the background and are visible in the dashboard.