POST the moment something changes.
Webhooks can be created and managed in two ways:
- By the Vendaze customer directly in the platform dashboard
- Via the public API using the
webhooks:managescope
How it works
- A webhook is created with a destination URL and the list of events to subscribe to
- When a subscribed event fires, Vendaze enqueues the delivery and sends a
POSTto that URL - Your server processes the payload and returns
2xxwithin 10 seconds
Managing webhooks via API
Webhooks created via the API are only visible to the OAuth app that created them. They do not appear in the Vendaze dashboard and cannot be managed by other apps, even if they access the same workspace.Authenticated deliveries
Whenauth_enable: true is sent on webhook creation, Vendaze generates a webhook_secret (format: whsec_...) and includes it in the POST /v1/webhooks response. Store it: it will be used to verify incoming deliveries.
Each delivery to your endpoint will include the Webhook-Signature header. See Signature verification for implementation details.
Changing auth_enable on an existing webhook affects the secret:
falsetotrue: a newwebhook_secretis generated and returnedtruetofalse: the existingwebhook_secretis permanently deleted
Payload
Every delivery is aPOST with Content-Type: application/json. The envelope structure is:
Signature verification
Whenauth_enable is true, every delivery includes:
Available events
People
People
Companies
Companies
Deals
Deals
Tasks
Tasks
Activities
Activities
Products
Products
Pipelines
Pipelines
Members
Members
Usage
Usage
Retries and delivery guarantees
If your server does not return2xx within 10 seconds, Vendaze retries the delivery up to 3 times, each attempt delayed by 15 minutes. After all retries are exhausted, the event is permanently dropped. There is no suspension mechanism: missed deliveries are lost.
Vendaze delivers with at-least-once semantics. The same event may be delivered more than once due to network issues or retry overlap. Deduplicate using the
id field in the envelope.
Best practices
- Return
200immediately and process asynchronously. Any handler that takes more than 10 seconds will trigger a retry. - Reject missing or invalid signatures with
401. Never process a delivery from an authenticated endpoint without verifying the signature first. - Retain received payloads for at least 30 days to aid debugging and auditing.
- Return
200for unrecognized event types. New events will be added over time and silently ignoring them keeps your handler stable across API updates.