Configuration
Set your webhook URL in workspace settings:Events
interview.completed
Customer completed the interview without accepting a save offer:
interview.saved
Customer accepted a save offer:
interview.abandoned
Customer left mid-interview (sent via weekly reports, not real-time):
Payload Schema
Sentiment Values
Handling Webhooks
Basic Handler
Verifying Signatures
Every outbound webhook is signed when awebhookSecret is stored on the
workspace (see below). Requests carry the Stripe-style header:
openssl rand -hex 32 works too — any high-entropy string):
webhookSecret is stored are unsigned.
SSRF protection: Offboard only sends webhooks to https:// URLs and blocks private IP ranges (localhost, 10.x, 192.168.x, 127.x, 169.254.x). Webhook URLs pointing to internal infrastructure will be silently rejected.
Recommended practices for your webhook handler:
- Return 2xx quickly and process asynchronously
- Log all webhook payloads for debugging
- Use idempotency keys (
interview_id) to handle any duplicate deliveries - Validate the
eventfield before processing
Delivery & Retries
Webhooks are delivered through a durable outbox. When an interview is finalized, the status change and the webhook event are committed in the same database transaction — a crash between the two cannot lose the event.
Handle duplicates: retries and the scheduled sweep can produce a second delivery after a crash. Key your handler on
metadata.event_id (or interview_id + event) and return 2xx for repeats.
Testing
Test Webhook Endpoint
Use the test endpoint to verify your webhook handler:Local Testing
Use ngrok or similar to test webhooks locally:Sample Payloads
Rate Limiting
Webhooks are sent per interview completion. Bulk events (weekly reports) are sent as single webhook with batched data.Best Practices
- Return 2xx quickly - Process asynchronously, don’t block webhook
- Verify signatures - Ensure request authenticity
- Idempotency - Handle duplicate webhooks gracefully
- Error logging - Log webhook failures for debugging
- Test in staging - Verify handler before production