Docs

Webhooks

Forward retention events to your own application, CRM, or any third-party service.

Setup

Go to Settings → Notifications in your dashboard. Enable webhooks and enter your endpoint URL. Choose which events to forward.

Events

EventFires When
opportunityA customer accepts a retention offer
cancellationA customer declines all offers and cancels
ai_alertAI detects unusual churn patterns

Payload Format

Webhooks are sent as HTTP POST requests with a JSON body:

{
  "event": "opportunity",
  "workspace_id": "uuid",
  "title": "Customer alice@example.com accepted an offer",
  "body": "discount_percentage: 20% for 3 months",
  "customer_email": "alice@example.com",
  "metadata": {
    "offer": {
      "offer_type": "discount_percentage",
      "offer_value": "20%",
      "offer_duration": "3 months"
    },
    "flow_name": "Pro Plan Cancellation"
  },
  "timestamp": "2026-08-20T10:30:00.000Z"
}

Headers

HeaderValue
Content-Typeapplication/json
X-RetainQ-EventThe event type (e.g. opportunity)
User-AgentRetainQ-Webhook/1.0

Retry Policy

Webhooks have a 10-second timeout. If your endpoint returns a non-2xx status code or times out, the delivery is considered failed. There are currently no automatic retries — failed deliveries are logged but not re-attempted.

Use Cases

  • Auto-apply discounts in Stripe when offers are accepted
  • Log cancellation reasons to your CRM (HubSpot, Salesforce)
  • Trigger Slack notifications for your CS team
  • Feed data to your own analytics pipeline
  • Auto-pause subscriptions in your billing system