Skip to main content
RevDesk POSTs an event to your URL whenever something happens in your workspace — a call ends, an SMS is delivered, a number is provisioned. Subscribe once per event type; we deliver as the events occur.

Subscribe

Unsubscribe

Event types

call_completed fires on every call end. The disposition events below fire in addition, only on the matching outcome — subscribe to them to branch (retry, SMS fallback) without parsing call records. Answered/successful calls emit no disposition event.

Delivery

Each event is a POST with a JSON body to your webhook_url. Delivery is fire-and-forget; return a 2xx quickly and do any heavy work asynchronously. Subscribe to the same event type multiple times to fan out to multiple URLs.
Two delivery shapes. Call-disposition and SMS events are delivered flat (the event object is the request body) and are not signed. Number-lifecycle events are delivered enveloped (triggerEvent / createdAt / payload) and HMAC-signed. Match the shape to the event family you subscribed to — see the examples below.

Signature verification (number-lifecycle only)

Number-lifecycle deliveries carry an X-revdesk-Signature-256 header. It is the lowercase hex HMAC-SHA256 of the raw request body, keyed with your subscription’s signing secret. Compute the same HMAC over the bytes you receive and compare with a constant-time equality check; reject on mismatch. If the subscription has no signing secret configured, the header carries the literal value no-secret-provided instead of a signature.
Call-disposition and SMS events are unsigned — they carry no signature header. Restrict those handlers to a secret path or IP allowlist if you need to authenticate the sender.

Payload examples

Call disposition (call_no_answer, call_voicemail, call_busy, call_failed) — flat, unsigned:
Outbound SMS (sms_sent, sms_delivered, sms_failed) — flat, unsigned:
Number lifecycle (number_purchased, number_released) — enveloped + HMAC-signed. The event data is nested under payload, and triggerEvent is the internal event name (number.purchased / number.released):
Delivered with header X-revdesk-Signature-256: <hex HMAC-SHA256 of the raw body>.