Webhooks.
Get told when something happens in your front office — a conversation closes, a lead is captured, an escalation opens. Whizz Desk follows the Standard Webhooks spec, so any compatible verifier works.
Setup#
Add an endpoint in the dashboard under Webhooks. Pick the events you want, and Whizz Desk POSTs a JSON payload to your URL for each one. Endpoints are managed and rotated from there.
Events#
| Field | Type | Description |
|---|---|---|
| conversation.started | conversation | A visitor opened a new conversation with a team. |
| conversation.closed | conversation | A conversation was closed from the inbox. Payload carries the contact, channel and message count. |
| lead.captured | lead | An agent captured a lead. Payload carries the contact and context. |
| escalation.created | escalation | A conversation was escalated to a human, with the transcript attached. |
| job.succeeded | job | A background job — a crawl or knowledge ingest — finished successfully. |
| job.failed | job | A background job failed. Payload carries the reason. |
Signature verification#
Every delivery is signed. The signing secret is prefixed whsec_ and shown when you create the endpoint. Whizz Desk sends a Standard Webhooks HMAC signature in the request headers; verify it before trusting a payload.
webhook-id: msg_2h4k...
webhook-timestamp: 1752345600
webhook-signature: v1,g0hM9k...Compute the HMAC over {id}.{timestamp}.{body} with your whsec_ secret and compare it to webhook-signature. Reject requests whose timestamp is outside a short window to prevent replay.
Payload shape#
{
"type": "lead.captured",
"timestamp": "2026-07-13T09:20:00Z",
"data": {
"team_id": "team_4a2b",
"conversation_id": "conv_7c41",
"lead": {
"name": "Dana R.",
"email": "dana@example.com",
"context": "Asked about enterprise onboarding."
}
}
}