Every call the platform runs ends up with two outcome labels, and it helps to keep them separate in your head:
  • 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.
One disposition can come from several disconnect reasons, and the same disconnect reason can map to different dispositions depending on the bot. This page explains every disconnect reason, when the platform skips analysis and falls back to an automatic disposition, and the default disposition mapping you get out of the box.
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.
ValueWhat it means
botThe bot ended the call — it reached a natural close, spoke its closing line, or detected dead air and hung up.
customerThe customer hung up.
voicemailThe call reached a voicemail or answering machine instead of a live person.
RNRRing No Response. The line connected and the customer picked up, but they stayed silent for the whole call.
no_answerThe number rang out and was never answered (the line never connected).
rejectedThe other end actively rejected the call.
timeoutThe conversation ran past the bot’s maximum allowed call duration and was auto-ended.
outside_hoursThe call was refused because it arrived outside the bot’s configured active-hours window.
errorThe call failed to start or hit an unexpected problem in the pipeline.
no_answer and rejected mean the call never connected — there was no conversation. RNR is different: the customer did pick up, they just never said anything. Treat RNR as a contacted-but-silent lead, not an unreachable number.
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:
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.
Too short to contain a real exchange — usually a quick mis-dial or an instant hang-up.
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).
When none of these is true, the call goes through normal post-call analysis and the disposition comes from the bot’s analysis prompt.
The no customer message rule fires only when the customer never spoke at all. A short call where the customer did say something (under five seconds but with speech) is still treated as a real call for this rule — though the under-5-seconds rule above may still skip it.

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.
ConditionDISPOSITIONSUB_DISPOSITION
RNRRNRRNR
voicemailIVRMAIN_MESSAGE
timeoutNot ConnectedDSCN_PARTIAL
errorFailedfallback
No customer messageRNRRNR
A few things to note about how the conditions map:
  • 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 / RNR result.
  • no_answer, rejected, and outside_hours calls 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:
ConditionWhen it fires
RNRThe customer picked up but stayed silent the whole call.
Voicemail / IVRThe bot detected an answering machine or IVR.
No Customer MessageThe customer never spoke a single message, regardless of who hung up.
TimeoutThe call hit its maximum duration and was auto-ended.
System ErrorThe 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
disposition      → {{analysis.DISPOSITION}}
sub_disposition  → {{analysis.SUB_DISPOSITION}}
When a call took the auto-disposition path, those same {{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.
Disconnect reasons also drive retries. On a campaign you can choose which automatic outcomes — no_answer, rejected, RNR, error, timeout — should trigger a redial. See Pacing and retries.

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.