Skip to main content
Attach a notifyUrl to a queue to be notified when an inbound call arrives at the queue and when it ends. Trackly POSTs a small JSON payload to your URL; if you also set a notifySecret, each request is signed so you can verify it came from Trackly.

Configuring

Set notifyUrl (and optionally notifySecret) when you create a queue:
The notifyUrl must be a public HTTPS URL.

Events

Payload

The request body is a JSON object. Fields are serialized with sorted keys, so verify the signature against the exact raw bytes you receive.
string
call.received or call.ended.
string
The call’s id — look it up with Get a Call.
string
The queue that emitted the event.
string
The caller’s number (E.164).
string
The number that was dialed (E.164).
string
The call’s state at the time of the event.

Verifying the signature

When a notifySecret is configured, Trackly sends an X-Trackly-Signature header containing the hex-encoded HMAC-SHA256 of the raw request body, keyed by your secret. Recompute it and compare in constant time.
If no notifySecret is set, the X-Trackly-Signature header is omitted.

Delivery semantics

Queue notifications are best-effort: a single POST with a 5-second timeout, no retries and no delivery ledger. Respond quickly with a 2xx and do any slow work asynchronously. Treat the webhook as a low-latency hint and reconcile authoritative state with List Calls / Get a Call.The signature covers the request body only — it does not include a timestamp — so it does not by itself defend against a replayed capture. Treat events as idempotent (dedupe on callId + event) and use the API as the source of truth rather than acting solely on a received event.