Settings & Configuration
Configuring outbound webhooks
4 minutes read time Difficulty: intermediate
Configuring outbound webhooks
Webhooks push real-time event data to your server whenever something happens in AIsoule.
Creating a webhook
- Go to Settings → Webhooks
- Click "New Webhook"
- Configure:
- Name — Descriptive name (e.g., "CRM Sync", "Order Notifications")
- URL — Your server endpoint (must be HTTPS)
- Events — Which events to subscribe to
- Click Save
A secret key is auto-generated for signature verification.
Selecting events
Choose which events trigger the webhook:
| Event | When it fires |
|---|---|
message.incoming | Customer sends a message |
message.sent | Your message is sent |
message.delivered | Message delivered to phone |
message.read | Message read by customer |
message.failed | Message delivery failed |
contact.created | New contact added |
contact.updated | Contact info changed |
campaign.completed | Campaign finished |
transfer.created | Agent transfer initiated |
Select only the events you need — fewer events = less load on your server.
Testing your webhook
- After creating, click "Test"
- A sample payload is sent to your URL
- Verify your server responds with HTTP 200
- Check the response in the webhook logs
Webhook logs
View delivery history:
- Open the webhook
- Click "Logs" or "Recent Deliveries"
- See:
- Timestamp
- Event type
- Response status (200, 500, timeout)
- Response time
Signature verification
Every webhook includes an X-Webhook-Signature header containing an HMAC-SHA256 signature.
Verify in your code:
const crypto = require('crypto');
function verifyWebhook(body, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
return expected === signature;
}
Retry behavior
If your endpoint fails (non-200 response or timeout):
- Retry 1: After 10 seconds
- Retry 2: After 60 seconds
- Retry 3: After 5 minutes
- After 3 failures: webhook is marked as "failing"
Disabling a webhook
- Open the webhook
- Toggle "Active" to OFF
- Events will no longer be sent (but the configuration is preserved)
Tips
- Respond quickly — Return 200 immediately, process async
- Handle duplicates — Same event may arrive twice (use event ID)
- Monitor failures — Check webhook status weekly
- Use the secret — Always verify signatures in production
- Start with one event — Add more as needed
Related Articles
Was this guide helpful?
Your feedback helps us make these guides better for everyone.