Appearance
call.transferred
When: An agent or supervisor moved the call to another agent, or to a free agent of a queue (to_queue_id set), or assigned a waiting call to an agent (from_agent_id null). An IVR sending a call to a queue is not a transfer: that sends call.ivr.completed, then call.queued or call.assigned
Extra data: from_agent_id, to_agent_id, to_queue_id
Example
Headers: X-Calloop-Event: call.transferred, X-Calloop-Event-Id, X-Calloop-Signature (verifying).
json
{
"event_id": "7c0b1e0c-8a45-4c1b-9d4c-0f3a6a2f9b11",
"event_type": "call.transferred",
"api_version": "2026-09-25",
"occurred_at": "2026-09-25T10:05:12.000Z",
"tenant_ref": "biz-123",
"data": {
"call": {
"callId": 42,
"callUuid": "00000000-0000-0000-0000-000000000042",
"tenantId": 1,
"tenantRef": "biz-123",
"channel": "WHATSAPP",
"channelId": 1,
"channelAddress": "+442079460000",
"channelRef": "support-line",
"queueId": 1,
"direction": "INBOUND",
"status": "IN_PROGRESS",
"state": "ACTIVE",
"mediaTopology": "ROOM",
"customer": {
"address": "+447700900123",
"addressType": "E164",
"name": "Test Customer"
},
"agentId": 8,
"agentRef": "user-8",
"agentName": "Agent Two",
"externalRef": "crm-call-42",
"providerCallId": "wacid.HBgL...",
"ivrFlowId": null,
"ringingAt": "2026-09-25T10:00:00.000Z",
"answeredAt": "2026-09-25T10:00:06.000Z",
"endedAt": null,
"terminationReason": null,
"terminatedBy": null,
"durations": {
"ringing": 0,
"call": 0,
"queue": 0
},
"failureDetails": null,
"consumerMetadata": {
"crm_contact_id": 991
},
"createdAt": "2026-09-25T10:00:00.000Z"
},
"from_agent_id": 7,
"to_agent_id": 8,
"to_queue_id": null
}
}data.call is the full call at that moment — the same view GET /v1/calls/{callId} returns. Apply events by "latest occurred_at wins": they can arrive out of order.