Skip to main content
Offboard.tech sends webhook notifications when interviews are completed, saved, or abandoned. Configure your webhook URL in workspace settings to receive real-time updates.

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 a webhookSecret is stored on the workspace (see below). Requests carry the Stripe-style header:
Verify it before trusting the payload:
Store the secret (write-only, AES-256-GCM at rest — never returned by any endpoint). Easiest path: Dashboard → Settings → Webhook Configuration → “Generate signing secret” — shown once, rotate anytime. Or via API (openssl rand -hex 32 works too — any high-entropy string):
Webhooks sent before a 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:
  1. Return 2xx quickly and process asynchronously
  2. Log all webhook payloads for debugging
  3. Use idempotency keys (interview_id) to handle any duplicate deliveries
  4. Validate the event field 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

  1. Return 2xx quickly - Process asynchronously, don’t block webhook
  2. Verify signatures - Ensure request authenticity
  3. Idempotency - Handle duplicate webhooks gracefully
  4. Error logging - Log webhook failures for debugging
  5. Test in staging - Verify handler before production