- Disconnect reason (
disconnected_by) — the technical cause the call ended. Who or what hung up: the bot, the customer, a voicemail machine, a timeout, and so on. The platform sets this; you cannot edit it. - Disposition — the business outcome you act on. This is the category your CRM and your reports care about (for example Connected, RNR, Not Connected, Failed). It is either produced by post-call analysis or assigned automatically by rule.
You configure the disposition side of this on the bot — see Auto dispositions. The disconnect reason and the final disposition both appear on the Call detail page and in the post-call push to your CRM.
Disconnect reasons (disconnected_by)
This is the raw reason the call ended, shown as Disconnected By on the call detail page. These are the values you will see.
| Value | What it means |
|---|---|
bot | The bot ended the call — it reached a natural close, spoke its closing line, or detected dead air and hung up. |
customer | The customer hung up. |
voicemail | The call reached a voicemail or answering machine instead of a live person. |
RNR | Ring No Response. The line connected and the customer picked up, but they stayed silent for the whole call. |
no_answer | The number rang out and was never answered (the line never connected). |
rejected | The other end actively rejected the call. |
timeout | The conversation ran past the bot’s maximum allowed call duration and was auto-ended. |
outside_hours | The call was refused because it arrived outside the bot’s configured active-hours window. |
error | The call failed to start or hit an unexpected problem in the pipeline. |
On the Call list and call detail, some of these are shown with a friendlier label that includes the underlying telephony status — for example No answer (rang out) for a number that rang and was never picked up. The stored value is still one of the values above.
When the platform skips analysis
For connected calls, a language model reads the transcript after the call and produces the disposition (see Post-call analysis). But some calls have nothing worth analysing — there was no real conversation, or the customer never spoke. Running an expensive analysis on those would add cost and produce a meaningless result. So the platform skips analysis and assigns an automatic disposition when any of these is true:The disconnect reason was error, timeout, voicemail, or RNR
The disconnect reason was error, timeout, voicemail, or RNR
These outcomes have no useful conversation to analyse. A pipeline error never got going, a timeout was cut off, a voicemail machine isn’t a customer, and an RNR call was silent throughout.
The call lasted less than 5 seconds
The call lasted less than 5 seconds
Too short to contain a real exchange — usually a quick mis-dial or an instant hang-up.
The customer never spoke a single message
The customer never spoke a single message
If the customer said nothing the whole call, there is no customer side to analyse — regardless of who hung up (the customer, the bot, or a short call).
Default disposition mapping
When a call hits one of the skip conditions, the platform assigns a disposition from this built-in table. These are the defaults every bot starts with.| Condition | DISPOSITION | SUB_DISPOSITION |
|---|---|---|
RNR | RNR | RNR |
voicemail | IVR | MAIN_MESSAGE |
timeout | Not Connected | DSCN_PARTIAL |
error | Failed | fallback |
| No customer message | RNR | RNR |
- The no customer message condition applies whenever the customer never spoke — even if the bot or a short call ended things, not just an explicit RNR. By default it produces the same
RNR / RNRresult. no_answer,rejected, andoutside_hourscalls never reach analysis either (there was no conversation), and the platform records them with their disconnect reason. They are not part of the editable auto-disposition table — they show as the call status rather than a business disposition.
Overriding the defaults per bot
The default mapping above suits most CRMs, but you can change it per bot so the values match exactly what your CRM expects. On the bot’s Auto Dispositions section you can set a DISPOSITION, a SUB_DISPOSITION, and a free-text remark for each condition. The conditions you can map are:| Condition | When it fires |
|---|---|
| RNR | The customer picked up but stayed silent the whole call. |
| Voicemail / IVR | The bot detected an answering machine or IVR. |
| No Customer Message | The customer never spoke a single message, regardless of who hung up. |
| Timeout | The call hit its maximum duration and was auto-ended. |
| System Error | The pipeline failed to start or hit an unhandled error. |
Leaving a condition’s fields blank sends no disposition for that case. Filling them in overrides the built-in default for that bot only. Full instructions are on the Prompts and auto dispositions page.
How this reaches your CRM
After the call, the disposition — whether from analysis or auto-assigned — is sent to your CRM in the post-call push, typically mapped as:Post-call push mapping
{{analysis.DISPOSITION}} and {{analysis.SUB_DISPOSITION}} tokens carry the auto-assigned values, so your CRM mapping does not need to change. See Post-call webhook for the full payload and Post-call variables for every field you can map.
Related pages
Auto dispositions
Set the DISPOSITION / SUB_DISPOSITION / remark for each skip condition per bot.
Call detail
See the disconnect reason and the final disposition for a single call.
Post-call variables
The full catalog of analysis and disposition fields you can map to your CRM.
Post-call webhook
How the disposition is pushed to your CRM after each call.