POST with a JSON body to the URL you
configure.
Configuration
Webhooks are managed from the admin application, not through the public API.1
Open the integrations settings
In the panel, go to Company → Integrations → Webhooks.
2
Create a webhook
Press New webhook and enter a name, the URL of your
endpoint, and the events you subscribe to. Optionally
you can add custom headers (for example, a token
of your own) and enable or disable the webhook at any time.
3
Save the secret
When you create the webhook, woku shows the secret just once. Copy it and
store it securely: you will need it to verify the signature of
each event.
Available events
woku emits these events:Common structure
All payloads share this envelope:Payload examples
Payloads do not include customer contact data.
Signature verification (HMAC)
Each delivery includes theX-Woku-Signature header with an
HMAC-SHA256 signature of the raw JSON body, using your secret as key:
Always compare with a constant-time function to avoid
timing attacks. If the signature does not match, discard the request.
Expected response from your endpoint
Your endpoint must respond with an HTTP 2xx code (ideally200)
as soon as possible. woku considers the delivery successful on any 2xx.
Retries and dead-letter
If your endpoint does not respond with 2xx (or does not respond within the timeout), woku retries with exponential backoff:
After exhausting the 3 attempts, the delivery moves to dead-letter state
and is not attempted again. In the webhook detail, under Company →
Integrations → Webhooks, you can review the delivery history
filtered by status (Successful, Failed, Pending, Dead-letter). From
there you can also edit the webhook, rotate its key, or delete it.
Since an event may be delivered more than once (from a retry on a
delivery that did arrive but responded late), design your endpoint to be
idempotent: use the
X-Woku-Delivery header or the resource
identifier in data to discard duplicates.