{
"id": "whd_6f7a8b9c0d1e42f3a4b5c6d7e8f9a0b1",
"type": "dialer.contact_updated",
"created_at": "2026-10-22T04:42:10.000Z",
"data": {
"contact": {
"id": "dlc_3f8a1c6b0d2e4f6a8b7c2e9a41b5d04f",
"list_id": "dl_7c2e9a41b5d04f3e8a1c6b0d2e4f6a8b",
"seq": 0,
"to": "+9198XXXXXX10",
"name": "Rahul Sharma",
"fields": {
"loan_id": "CF-LN-208841",
"amount_due": "4500"
},
"status": "done",
"attempts": 1,
"next_attempt_at": "2026-10-22T04:30:00.000Z",
"assigned_to": null,
"last_call_id": "call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f",
"call_ids": [
"call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f"
],
"last_result": "completed",
"disposition": null,
"done_at": "2026-10-22T04:42:10.000Z",
"updated_at": "2026-10-22T04:42:10.000Z"
},
"list_id": "dl_7c2e9a41b5d04f3e8a1c6b0d2e4f6a8b",
"reason": "call_ended",
"call_id": "call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f"
}
}Dialer contact updated
Sent when a power dialer customer moves on: after each call ends (reason: call_ended; contact.status is
done when reached, pending with the next try in next_attempt_at, or exhausted when the attempts ran
out), when the agent saves the disposition (dispositioned; a callback shows as pending with
assigned_to), and when the customer is removed (removed). call_id is the call behind the change (null
for a removal before any call).
{
"id": "whd_6f7a8b9c0d1e42f3a4b5c6d7e8f9a0b1",
"type": "dialer.contact_updated",
"created_at": "2026-10-22T04:42:10.000Z",
"data": {
"contact": {
"id": "dlc_3f8a1c6b0d2e4f6a8b7c2e9a41b5d04f",
"list_id": "dl_7c2e9a41b5d04f3e8a1c6b0d2e4f6a8b",
"seq": 0,
"to": "+9198XXXXXX10",
"name": "Rahul Sharma",
"fields": {
"loan_id": "CF-LN-208841",
"amount_due": "4500"
},
"status": "done",
"attempts": 1,
"next_attempt_at": "2026-10-22T04:30:00.000Z",
"assigned_to": null,
"last_call_id": "call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f",
"call_ids": [
"call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f"
],
"last_result": "completed",
"disposition": null,
"done_at": "2026-10-22T04:42:10.000Z",
"updated_at": "2026-10-22T04:42:10.000Z"
},
"list_id": "dl_7c2e9a41b5d04f3e8a1c6b0d2e4f6a8b",
"reason": "call_ended",
"call_id": "call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f"
}
}Headers
The event type, same as the body's type.
call.ended, call.analyzed, call.status_changed, reachability.result, reachability.completed, campaign.started, campaign.paused, campaign.resumed, campaign.completed, campaign.canceled, campaign.record.updated, call.dispositioned, dialer.contact_updated Delivery id (whd_...), same as the body's id. Stays the same across retries of one delivery: use it to
drop duplicates.
t=<unix seconds>,v1=<hex HMAC-SHA256(secret, t + "." + raw body)>. t is the time of this delivery try.
Verify it before trusting the body (see the Webhooks tag and the event descriptions).
^t=\d+,v1=[0-9a-f]{64}$Always voice-gateway-webhooks/1.
"voice-gateway-webhooks/1"Body
Response
Any 2xx status, within 10 seconds, acknowledges the delivery (the body is ignored). Anything else (other statuses, timeouts, connection errors) is retried: 8 tries in total, 30 seconds after the first failure, then doubling (30 s, 1 min, 2 min, 4 min, 8 min, 16 min, 32 min; about 63 minutes in all). Redirects are not a supported answer.