Ref: Zoom phone webhooks API (sorry cannot direct link): phone.recording_completed
Description
We process phone.recording_completed events using Zoom webhooks and have noticed that sometimes Zoom appends a _1 to the end of a call ID inside the recording payload. This doesn’t seem to be documented and causes some issues from our side. It seems to be related to a transfer, best I can piece together is something like this:
T=0: Caller calls and is picked up by Agent A
T=100: Agent A transfers caller to Agent B
T=200: Agent B hangs up
T=205: The following two recording completed events are sent (much of it is redacted, but this is the call ID).
{
"event": "phone.recording_completed",
"payload": {
"object": {
"recordings": [
{
"call_id": "74...40_1",
}
]
},
},
"event_ts": 1737137040878
}
{
"event": "phone.recording_completed",
"payload": {
"object": {
"recordings": [
{
"call_id": "74...40",
}
]
},
},
"event_ts": 1737137041008
}
We are also receiving phone start/stop events and all of them, including the ones for Agent B show the proper call_id (without the _1 appended). Only this phone.recording_completed seems to send the _1.
Also of note is that in this case, the start and end times for the two calls are both T=0 and T=200, but both Agent A and B’s audio recording duration is only 100. So Agent A is still “in the call” in a sense until T=200 and their recording_completed event does not come in until Agent B hangs up. However, Agent A is no longer recording after T=100.