Creating a Webhook
Create a webhook for your application to start receiving event notifications. Via Dashboard- Navigate to your application’s Webhooks page
- Click “Create Webhook”
- Enter your webhook URL
- Select the events you want to receive
- (Optional) Add custom headers for authentication
- Save the webhook
POST /v1/webhooks endpoint:
Configuration Options
URL The HTTPS endpoint where Chirp will send webhook events. Must be publicly accessible. Events Array of event types to subscribe to:MESSAGE_CREATED- New message created (incoming messages)MESSAGE_SENT- Message sent to carrierMESSAGE_DELIVERED- Message delivered to recipient
- Authentication tokens
- API keys
- Routing identifiers
Webhook Delivery
When an event occurs, Chirp sends a POST request to your webhook URL:Response Requirements
Your webhook endpoint should:- Respond quickly - Return a
200 OKstatus within 5 seconds - Process asynchronously - Don’t block the response on long-running tasks
- Handle duplicates - Same event may be delivered multiple times
Retry Behavior
If your webhook fails (non-200 status or timeout):- Chirp retries delivery automatically
- Uses exponential backoff between retries
- Maximum retry attempts: 5
- Failed webhooks are logged in your dashboard
Security Best Practices
1. Use HTTPS Always use HTTPS URLs for webhook endpoints. HTTP is not supported. 2. Validate Requests Use custom headers to verify requests are from Chirp:Testing Webhooks
Use the Playground The easiest way to test webhooks is through the Playground:- Configure a webhook on your test application
- Use the Playground to send test messages
- Your webhook receives events in real-time
- View webhook delivery logs in the dashboard
- ngrok - Create public URLs for local servers
- webhook.site - Inspect webhook payloads
- RequestBin - Debug webhook requests
Managing Webhooks
List Webhooks View all webhooks for your application via the dashboard or API:Troubleshooting
Webhook not receiving events- Verify the webhook URL is publicly accessible
- Check that events are configured correctly
- Review webhook logs in the dashboard
- Respond with 200 OK immediately
- Move processing to background jobs
- Increase server timeout limits
- Implement idempotency using the event ID
- Track processed event IDs to prevent duplicates