English
English
Appearance
English
English
Appearance
The hangup_cause value appears in CDR responses and webhook payloads (pbx.call.hangup, pbx.cdr.created). Codes follow ITU-T Q.850, mapped from SIP responses by Zorio PBX.
hangup_cause | Meaning | Real-world scenario |
|---|---|---|
NORMAL_CLEARING | Call ended normally | One of the two parties hung up after talking |
NO_ANSWER | Ring timeout, nobody picked up | The customer didn't pick up or was away from the phone |
USER_BUSY | Destination busy | The customer was on another call |
CALL_REJECTED | Destination rejected the call | The customer pressed "decline" on their phone |
ORIGINATOR_CANCEL | Agent / system cancelled before answer | The agent changed their mind and hung up while it was still ringing |
RECOVERY_ON_TIMER_EXPIRE | Call hung due to SIP timeout | Network or PBX technical issue |
hangup_cause | Meaning |
|---|---|
UNALLOCATED_NUMBER | The number doesn't exist in the network (e.g. 1XX, fake prefixes) |
NO_ROUTE_DESTINATION | No route to destination (e.g. trunk not configured) |
NO_ROUTE_TRANSIT_NET | The trunk refused the call |
DESTINATION_OUT_OF_ORDER | The destination is offline |
INVALID_NUMBER_FORMAT | Bad number format (e.g. extra chars, wrong prefix) |
FACILITY_REJECTED | The carrier refused the route |
hangup_cause | Meaning |
|---|---|
MEDIA_TIMEOUT | RTP packets stopped arriving for N seconds (network dropped) |
BEARERCAPABILITY_NOTAVAIL | Codec mismatch between the two parties |
INCOMPATIBLE_DESTINATION | Different standards (e.g. analog ↔ SIP can't bridge) |
EXCHANGE_ROUTING_ERROR | Carrier routing error |
hangup_cause | Meaning |
|---|---|
CALL_REJECTED | Hard reject (e.g. DNC list, blacklist) |
INTERWORKING | Protocol incompatibility (e.g. ISDN ↔ SIP) |
BEARERCAPABILITY_NOTAUTH | Not authorized to use this service |
CHANNEL_UNACCEPTABLE | Channel not ready |
hangup_cause | Meaning |
|---|---|
NORMAL_TEMPORARY_FAILURE | Temporary failure, retry later |
SWITCH_CONGESTION | Platform overloaded, can't accept more |
REQUESTED_CHAN_UNAVAIL | No free channels on the trunk |
RESOURCE_UNAVAILABLE | Out of resources (e.g. SBC) |
hangup_cause | Meaning |
|---|---|
LOSE_RACE | Lost the race when two calls hit the same number (only one wins) |
MANAGER_REQUEST | Admin / supervisor hung up the call manually via API |
SYSTEM_SHUTDOWN | System is shutting down |
BLIND_TRANSFER | Call was blind-transferred to another number |
ATTENDED_TRANSFER | Call was attended-transferred to another number |
PICKED_OFF | Call was picked off the queue by another extension |
result field The result field in the CDR is a simpler classification so CRMs can aggregate easily. Mapping rules:
| Condition | result |
|---|---|
hangup_cause = NORMAL_CLEARING + billsec > 0 | answered |
hangup_cause = NORMAL_CLEARING + billsec = 0 | no_answer (special case: agent hung up immediately after answering) |
hangup_cause = NO_ANSWER | no_answer |
hangup_cause = USER_BUSY | busy |
hangup_cause = CALL_REJECTED | rejected |
hangup_cause = ORIGINATOR_CANCEL | cancelled |
| Call went to voicemail | voicemail |
| Anything else (network, routing, system errors) | failed |
hangup_cause If you see a code that isn't listed above (e.g. BIB_NA, XXX_ZZZ), it could be:
call_uuid for tracing.Full Q.850 reference: ITU-T Q.850.