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>.