Request format
Zivio delivers each event as an HTTPPOST request to your configured URL with a JSON body and a Content-Type of application/json. Requests are sent with the user agent Zivio-Webhooks/1.0.
Headers
Every request includes the following headers, which you use to verify the signature:A unique identifier for this event. Use it to de-duplicate events if your endpoint might receive the same delivery more than once.
The time the event was sent, as a Unix timestamp (seconds).
The signature(s) for this request, used to confirm it came from Zivio. See Verifying Signatures.
Payload structure
The JSON body follows a consistent envelope:The unique identifier for the event. This matches the
webhook-id header.The event type, such as
invoice.paid. See Event Types.An ISO 8601 timestamp for when the event occurred.
The API version that shapes the
data object — currently v4.The resource the event relates to, serialized exactly as it would be returned by the equivalent v4 API endpoint. The fields included reflect the permissions of the webhook’s owner.
Example payload
Test event payload
A manually triggered test event uses the typewebhook.test and a placeholder body, so you can validate your endpoint without referencing real data:
Responding to a request
Your endpoint should:- Return a
2xxstatus code to acknowledge successful receipt. - Respond quickly — requests time out after 30 seconds. If your processing is slow, acknowledge the request first and do the work asynchronously.
- Treat delivery as at-least-once: the same event may occasionally arrive more than once. De-duplicate using the
webhook-id/idvalue.
2xx response (or a timeout) is treated as a failed delivery and may be retried.
