Skip to main content
Webhooks let you receive HTTP notifications on your own server every time a relevant event happens in woku: a new woku review, an NPS response, or a form submission. woku sends a 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.
The secret is shown only once when you create or rotate the webhook. woku stores it encrypted and cannot show it to you again. If you lose it, rotate it from the panel to generate a new one.

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 the X-Woku-Signature header with an HMAC-SHA256 signature of the raw JSON body, using your secret as key:
Besides the signature, each delivery carries two informational headers:
Compute the signature over the raw body of the request (the exact bytes received), before parsing it as JSON. Re-serializing the object may change the order of the keys or the spacing and produce a different signature.
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 (ideally 200) as soon as possible. woku considers the delivery successful on any 2xx.
Process the event asynchronously: respond 200 immediately and queue the heavy work. woku uses a timeout of 15 seconds per attempt; if your endpoint takes longer, the delivery is counted as failed.

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.

Customer support tickets

Support tickets generated by woku’s AI are not delivered by webhook: they are sent to your support platform through direct destinations configured in the Support module. See the guide on customer support tickets.