Webhooks allow your application to receive real-time notifications when events occur, such as incoming messages, delivery status changes, or partner invitation updates. Zavu supports two types of webhooks:Documentation Index
Fetch the complete documentation index at: https://docs.zavu.dev/llms.txt
Use this file to discover all available pages before exploring further.
- Sender Webhooks: Receive events for a specific sender (messages, conversations)
- Project Webhooks: Receive project-level events (partner invitations)
Project Webhooks
Project webhooks are ideal for receiving notifications about project-level events, such as when a partner invitation is completed. This is particularly useful if you’re using the Partner Invitations API to onboard clients.Via Dashboard
- Go to Dashboard and select your project
- Navigate to Webhooks in the sidebar
- In the “Project Webhook” section, click Configure
- Enter your webhook URL and select the events you want to receive
- Save - you’ll receive a signing secret
Via API
Configure a project webhook using the invitations API:cURL
Managing Project Webhooks
Get current configuration:cURL
cURL
cURL
Project Webhook Events
| Event | Description |
|---|---|
invitation.status_changed | A partner invitation status changed (pending, in_progress, completed, cancelled) |
Project Webhook Payload
Project webhooks are independent of sender webhooks. You can have both configured simultaneously.
Sender Webhooks
Each sender can have one webhook configured. Webhooks are managed as part of the sender resource.Via Dashboard
- Go to Dashboard and select your project
- Navigate to your Sender’s settings
- Click Add Webhook
- Enter your webhook URL and select the events you want to receive
- Save - you’ll receive a signing secret
Via API
Configure a webhook when creating a new sender:cURL
Available Events
Inbound (Receiving Messages)
| Event | Description |
|---|---|
conversation.new | First message from a new contact (new conversation started) |
message.inbound | A customer sent you a message |
Outbound (Delivery Tracking)
| Event | Description |
|---|---|
message.queued | Your message was queued for delivery |
message.sent | Your message was sent to the carrier |
message.delivered | Your message was delivered to the recipient |
message.read | Your message was read by the recipient (WhatsApp only) |
message.failed | Message delivery failed |
Templates
| Event | Description |
|---|---|
template.status_changed | A WhatsApp template status changed (draft, pending, approved, rejected) |
Partner Invitations (Project Webhook)
| Event | Description |
|---|---|
invitation.status_changed | A partner invitation status changed (pending, in_progress, completed, cancelled) |
The
invitation.status_changed event is delivered via Project Webhooks, not Sender Webhooks. See the Project Webhooks section above for configuration.Webhook Payload
All webhook payloads follow the same structure:| Field | Description |
|---|---|
id | Unique event identifier |
type | Event type (e.g., message.inbound) |
timestamp | Unix timestamp in milliseconds |
senderId | The Sender that received this event |
projectId | Your project ID |
data | Event-specific payload |
Handling Webhooks
Your webhook endpoint must:- Respond with 2xx status within 30 seconds
- Verify the signature to ensure the request is from Zavu
- Process asynchronously for long-running tasks
Retry Policy
If your endpoint returns an error or doesn’t respond within 30 seconds, Zavu will retry the delivery:| Attempt | Delay |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 15 minutes |
| 4th retry | 1 hour |
| 5th retry | 4 hours |
Managing Webhooks
Update Webhook Configuration
Update your sender’s webhook settings:cURL
Disable Webhook
cURL
Remove Webhook
SetwebhookUrl to null to remove the webhook:
cURL
Regenerate Secret
If your webhook secret is compromised:cURL
Next Steps
- Event Types - Detailed payload for each event
- Security - Verify webhook signatures
