Warm transfer with Zoom Phone
Zoom Phone supports warm transfers. During a warm transfer, the original agent stays on the line to introduce the caller and issue to the next agent. This guide explains how to retrieve warm transfer details using Zoom Phone APIs.
Changes
Consolidated report
Previously, warm transfers used a separate call_history_uuid. Now one call_history_uuid and one consolidated report cover the entire call, including the pre-transfer, warm transfer, and post-transfer segments.
Warm transfers no longer generate separate events or reports. The incoming and outgoing transfer event names are now:
warm_transfer_outgoingwarm_transfer_incoming
Additionally, we now list the following payload fields in the consolidated call record within the call_elements object:
operator_name- name of user who performed the transferoperator_ext_number- extension number of user who performed transfersegment- sequential integer to indicate the orders of events that starts from 0. Each phase has the same segment ID
How to access warm transfer records
If your integration retrieves warm transfer records from the Call History endpoint by matching the call_id to the transfer_call_id, update it as follows:
-
Call the List API (
/phone/call_history) and observe that it returns a single consolidated record instead of multiple records.{ "total_records": 1, "call_history": [ { "call_history_uuid": "20260519-abcd1234-5678-90ef-ghij-klmnopqrstuv", "direction": "inbound", "call_id": "1234567890123456789", "caller_did_number": "+15551234567", "callee_name": "Support Queue" } ] } -
Capture the call UUID and pass it as a query parameter in a subsequent request to the Details API endpoint (
/phone/call_history/{callHistoryUuid}).{ "call_history_uuid": "20240101-abcd1234-5678-90ef-ghij-klmnopqrstuv", "call_elements": [ { "segment": 1, "event": "incoming", "callee_name": "Support Queue", "result": "forwarded" }, { "segment": 1, "event": "warm_transfer_incoming", "callee_name": "John Smith" }, { "segment": 2, "event": "warm_transfer_incoming", "call_id": "1234567890abcdef123", "caller_name": "John Smith" } // ... ] }
Key Characteristics
- All phases are consolidated into one
call_history_uuid. - To retrieve call details, pass the UUID as a query parameter to the Call History endpoint.
- Post-transfer
call_idexists only withincall_elements.
Affected data access patterns
The following table outlines the updates required for common processes.
| Process description | Affected component | Available solution |
|---|---|---|
| Determine call count using Call History listings | Warm transfers are no longer counted as separate records | Use the Call History Details API and count each segment in the returned object as an individual call |
Identify warm transfers using the webhook_transfer_id returned by the phone.warm_transfer_initiated webhook | Warm transfers no longer have a separate call_id in the Call History List API response. While call_id remains searchable, it cannot be located using webhook_transfer_id. | Store the transfer ID from the webhook, then use the Call History Details API and parse the call_elements object to retrieve segment call_id values. Use call_elements instead of call_path, which is being deprecated. |