Webhooks
Receive real-time event notifications
Webhooks
Webhooks allow your systems to receive real-time notifications when events happen in BindPilot.
Setting Up Webhooks
Create a Webhook Endpoint
- Go to Settings > Integrations > Webhooks
- Click Add Webhook
- Enter your webhook URL (HTTPS required)
- Choose events to subscribe to (see table below)
- Click Create
BindPilot sends a test event; confirm receipt.
Webhook URL Requirements
- HTTPS only (no HTTP)
- Accessible from the internet (not localhost)
- Responds with 2xx status within 30 seconds
- Valid SSL certificate
Available Events
| Event | Triggered When | Payload |
|-------|----------------|---------|
| quote.created | New quote generated | Quote ID, client, risk, carriers |
| quote.completed | All carriers have responded | Quotes received, best rate |
| quote.selected | Agent selected a quote | Quote ID, carrier, premium |
| policy.bound | Policy bound with carrier | Policy number, effective date, premium |
| renewal.due | Renewal date approaching | Client, expiration date, current carrier |
| renewal.shopped | Renewal agent shopped carriers | Results, recommended carrier |
| client.created | New client added | Client ID, name, contact info |
| team.member_added | Team member invited | Member name, role |
Webhook Payload Format
{
"id": "webhook_event_123",
"timestamp": "2026-04-13T21:45:00Z",
"event": "quote.completed",
"data": {
"quote_id": "q_abc123",
"client_id": "c_xyz789",
"quotes": [
{
"carrier": "State Farm",
"premium": 1200,
"coverage": { "limit_1m": true, "deductible_1000": true }
}
]
},
"signature": "sha256=abcdef123456..."
}
Verifying Webhooks
Each webhook includes an HMAC signature for security verification.
To verify:
import hmac
import hashlib
secret = "your_webhook_secret"
signature = request.headers.get('X-BindPilot-Signature')
body = request.body
expected_sig = 'sha256=' + hmac.new(
secret.encode(),
body.encode(),
hashlib.sha256
).hexdigest()
assert signature == expected_sig # Verified!
Retry Policy
If your endpoint returns a non-2xx status or times out:
| Attempt | Delay | |---------|-------| | 1st retry | 5 minutes | | 2nd retry | 30 minutes | | 3rd retry | 2 hours | | 4th retry | 1 day |
After 4 failed attempts, BindPilot marks the endpoint as "failing" and stops sending events. Manually re-enable from the webhook settings.
Testing Webhooks
- Go to Settings > Integrations > Webhooks > [Webhook] > Test
- Choose an event type
- BindPilot sends a test payload
- Confirm receipt on your end
Common Webhook Uses
Scenario 1: Sync to your CRM
- Subscribe to
quote.selectedandpolicy.bound - When these events fire, POST the data to your CRM (Salesforce, Pipedrive, etc.)
- Keeps your CRM automatically updated
Scenario 2: Trigger email campaigns
- Subscribe to
renewal.dueandrenewal.shopped - Trigger an email campaign when the event fires
Scenario 3: Custom reporting
- Subscribe to all events
- Log to your data warehouse
- Build custom dashboards and reports
Next: Learn about CSV import/export for bulk operations.