Overview
Webhooks send HTTP POST requests to your endpoint whenever document events occur. This lets you build real-time integrations without polling the API.
Setting Up Webhooks
Via Dashboard
- Go to Dashboard → Developer APIs → Webhooks tab
- Click Create Webhook
- Enter your endpoint URL (must be HTTPS)
- Select the events you want to receive
- Copy the Webhook Secret for signature verification
Via API
Event Types
| Event | Triggered When |
|---|---|
document.created | A new document is created |
document.sent | A document is sent for signature |
document.viewed | A signer opens the document |
document.signed | A signer completes their signature fields |
document.completed | All signers have signed the document |
document.declined | A signer declines to sign |
document.voided | The sender voids (cancels) the document |
document.expired | The signing period expires |
Webhook Payload
All webhooks share a common payload structure:
Signature Verification
Every webhook request includes an X-Webhook-Signature header. Verify it to ensure the request is authentic:
Retry Policy
If your endpoint returns a non-2xx status code or times out (30 seconds), ZiaSign retries with exponential backoff:
| Attempt | Delay |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 30 minutes |
| 4th retry | 2 hours |
| 5th retry | 12 hours |
| 6th retry | 24 hours |
After 6 failed attempts, the delivery is marked as failed and you receive an email notification. You can view and manually retry failed deliveries in the dashboard.
Testing Webhooks
Use the Test button in the dashboard to send a sample event to your endpoint. You can also use the sandbox environment to trigger real events without affecting production data.
Frequently asked questions
How do I verify webhook signatures?
Each webhook includes an X-Webhook-Signature header containing an HMAC-SHA256 signature. Verify it using your webhook secret to confirm the request came from ZiaSign.
What happens if my endpoint is down?
ZiaSign retries webhook deliveries with exponential backoff: 1 min, 5 min, 30 min, 2 hours, 12 hours, 24 hours. After 6 failed attempts, the delivery is marked as failed.
Can I receive webhooks for specific events only?
Yes. When creating a webhook subscription, you select which events to subscribe to. You can update the event list at any time.
Related documentation
API Authentication
Authenticate your API requests using API keys with HMAC-SHA256 request signing for maximum security.
Documents API
Create, send, retrieve, download, and manage documents programmatically via the REST API.
Sandbox & Testing
Use the sandbox environment to test your integration with simulated documents, signers, and events.