Every call handled by SigmaMind ends with a Termination Reason — a system-assigned value that tells you exactly how and why the call session closed. This value appears in the Call Logs table under the Terminated reason column and is also returned via the API as terminationReason on any call record.
Understanding termination reasons helps you:
- Monitor agent performance and call quality
- Identify calls that ended unexpectedly or due to failures
- Improve agent prompts based on how conversations are closing
- Filter and segment call data for reporting and analytics
Where to Find Termination Reasons
In the Dashboard
- Go to Home Dashboard
- From the left panel, click Conversations
- Open the Calls tab
- Look for the Terminated reason column in the calls table
Each row shows one of the reason values listed below.
Via the API
Termination reason is returned in the terminationReason field when you fetch a call record:
GET https://api.sigmamind.ai/v1/calls/{callId}
Example response:
{
"callId": "call_AuUKK371Spr5nHJS",
"status": "ended",
"terminationReason": "user_ended_call",
"duration": 120,
"startTime": "2024-04-20T10:00:00.000Z",
"endTime": "2024-04-20T10:02:00.000Z"
}
terminationReason is null if the call has not yet ended (status is in_progress or scheduled)
All Termination Reasons
silence_timed_out
The call was terminated due to prolonged silence or no interaction.
SigmaMind detected that neither the customer nor the agent was speaking for an extended period. The platform automatically closed the session to avoid an open, idle connection.
Common triggers:
- Customer put the phone down without hanging up
- Customer was placed on hold manually but the AI did not detect activity resuming
- Network or audio issues caused one side to stop transmitting
- The agent was waiting for a response that never came
What it means for you: Silence timeout terminations usually point to either a customer who disengaged quietly or a technical audio issue. Review the transcript to see where the silence began.
How to reduce it:
- Configure silence handling in Call Settings — set a maximum silence duration and a prompt the agent should play (e.g., “Are you still there?”) before terminating
- Ensure your agent prompts are open-ended enough to keep the customer engaged
agent_ended_call
The AI agent terminated the call programmatically.
This happens when the agent executes the voice_end_call tool based on its configured instruction. It is the expected, intentional ending for any call where the AI completes its task and closes the conversation cleanly.
Common triggers:
- Customer confirmed a booking, renewal, or action
- Customer said goodbye or “that’s all”
- Customer declined the offer or asked to be removed from the list
- Agent reached the end of its script after all steps completed
What it means for you: This is a healthy termination reason. A high proportion of agent_ended_call in your call logs means your agent is closing conversations correctly and consistently.
How to control it: Configure the voice_end_call tool in your agent with a precise instruction.
user_ended_call
The customer or user hung up first.
The call ended because the person on the other end disconnected — either by pressing the hang-up button on their phone, saying “goodbye” without triggering the agent’s end-call tool, or simply dropping the line.
Common triggers:
- Customer finished the conversation and hung up before the agent did
- Customer lost patience mid-conversation
- Customer accidentally disconnected
- Customer was not satisfied and dropped the call
What it means for you: Occasional user_ended_call is normal — many customers will hang up on their own. However, a high rate of this reason, especially early in calls, may indicate the agent is not engaging the customer effectively or is failing to trigger its own voice_end_call tool cleanly.
How to improve:
- Review transcripts of calls with this reason to identify drop-off points
- Ensure the agent has a warm, natural closing flow so it ends the call before the customer feels they need to hang up themselves
voicemail_detected
The call reached voicemail and was not answered live.
SigmaMind’s voicemail detection identified that the call connected to an automated voicemail system rather than a live person. The platform terminated the call rather than leaving a message (unless voicemail drop is configured).
Common triggers:
- Customer’s phone went to voicemail (did not answer)
- Business line is outside operating hours and routes to voicemail
- Customer’s phone is switched off
What it means for you: For outbound campaigns, a high voicemail_detected rate can indicate poor timing (calling outside peak hours), list quality issues (inactive numbers), or the need to adjust retry schedules.
How to handle it:
- Use Campaign Settings to set preferred calling hours that align with your audience’s availability
- Configure retry logic to attempt the number again at a different time
- Enable voicemail drop if you want the agent to leave a pre-recorded message
ivr_detected
The call connected to an automated IVR (Interactive Voice Response) system instead of a live person.
SigmaMind detected that the answered call was an automated phone menu rather than a human recipient. The platform terminated the call to avoid the agent interacting with a non-human system.
Common triggers:
- Calling a business number that routes through an IVR before reaching a person
- The destination number has an automated attendant or press-1 menu
- Corporate or multi-department lines with front-end automation
What it means for you: A high ivr_detected rate in your campaign may indicate that your contact list includes business switchboard numbers rather than direct lines, or that you are calling during hours when live agents are unavailable.
How to handle it:
- Review your contact list to ensure you are dialling direct lines where possible
- Consider adjusting call timing to hours when live staff are more likely to answer
agent_transferred_call
The AI agent transferred the call to another destination.
The call session on SigmaMind’s side was closed because the agent performed a call transfer — handing the conversation off to a human agent, a different number, or another system.
Common triggers:
- Customer requested to speak to a human
- Agent reached an escalation point in its script
- Transfer tool was triggered based on customer intent or outcome
What it means for you: agent_transferred_call is an expected and intentional outcome when your agent is configured with transfer logic. Monitor this rate to understand how often escalations occur and whether transfer destinations are handling calls effectively.
max_call_duration_exceeded
The call reached the maximum allowed duration and was automatically terminated.
SigmaMind enforces a configurable maximum call duration to prevent runaway sessions. When a call hits this limit, it is closed regardless of where the conversation is.
Common triggers:
- An unusually long conversation that exceeded the set limit
- A loop or repeated exchange in the agent’s script that kept the call running
- A customer who stayed on the line for an extended period without resolution
What it means for you: Calls hitting max_call_duration_exceeded may indicate the agent is not resolving the customer’s request efficiently, or that the max duration setting is too short for your use case.
How to adjust it: Go to Call Settings → Max Call Duration to increase or decrease the limit. Review transcripts of max_call_duration_exceeded calls to check whether the agent is looping or stalling.
dial_telephony_permission_denied
Outbound dialling was blocked by the telephony provider due to a permission or authorisation issue.
The call could not be placed because SigmaMind’s telephony provider rejected the dial request at the permission level — not because the destination number is invalid, but because the originating account or number is not authorised to place this type of call.
Common triggers:
- Outbound calling not enabled on the account or phone number
- Geographic or international dialling restrictions in place
- Caller ID or originating number not verified or approved
- Account compliance hold or restriction applied by the provider
What it means for you: This is a configuration or account-level issue, not a problem with the destination number. It requires action on your SigmaMind account or telephony settings.
How to investigate: Review your telephony provider permissions, confirm outbound calling is enabled for the originating number, and contact SigmaMind support if the issue persists.
dial_invalid_destination
The call could not be placed because the destination number was invalid.
SigmaMind or the carrier rejected the dial attempt because the destination phone number is not a valid, dialable number.
Common triggers:
- Phone number is not in valid E.164 format (
+[country code][number])
- Number contains invalid characters or incorrect digit count
- Number is not assigned or does not exist on the carrier network
What it means for you: Isolated dial_invalid_destination calls indicate bad numbers in your contact list. A high rate may point to a data quality issue with your list or an incorrect number format being passed to the API.
How to fix it: Validate all numbers are in E.164 format before importing or passing them to SigmaMind. Remove or correct invalid entries from your list.
dial_no_answer
The call rang but was not picked up within the timeout period.
SigmaMind dialled the number, the carrier confirmed ringing, but no one answered before the configured timeout expired.
Common triggers:
- Customer did not hear or see the incoming call
- Customer chose not to answer an unknown number
- The number is valid but the person is unavailable
What it means for you: dial_no_answer is the most common outbound non-connection reason. A high rate may suggest poor timing, unrecognised caller ID, or list quality issues.
How to handle it:
- Retry no-answer calls at different times of day to increase contact rate
- Use a local or recognisable phone number as the caller ID to improve answer rates
- Segment your campaign by timezone to call during reasonable hours
dial_user_declined
The recipient actively declined the incoming call.
The destination phone rang and the recipient explicitly rejected it — pressing the decline button or otherwise actively dismissing the call rather than simply not answering.
Common triggers:
- Customer saw the incoming number and chose not to answer
- Customer is on Do Not Call preference and recognised the number
- Repeated calls from the same number causing the recipient to decline
What it means for you: Unlike dial_no_answer, this is an active rejection. A high rate may indicate caller ID recognition issues, poor list targeting, or contact frequency that is too high for the audience.
How to handle it:
- Review call frequency and avoid contacting the same number too often
- Ensure your caller ID is recognisable and trustworthy to your target audience
- Audit your contact list for numbers that have repeatedly declined
dial_busy
The destination number was busy when the call was attempted.
The outbound call connected to the carrier, but the recipient’s line was engaged with another call at the time of dialling.
Common triggers:
- The customer was already on another call
- The destination number has a single line with no call waiting
- High-volume campaign dialling the same number simultaneously
What it means for you: dial_busy is a carrier-level outcome outside SigmaMind’s control. It is expected at a low rate in any outbound campaign.
How to handle it:
- Configure campaign retry settings to re-attempt busy numbers after a defined interval (e.g., 30–60 minutes)
- Avoid concentrating calls to the same number in a short time window
dial_failed
The outbound call failed due to a SIP or telephony error.
The call could not be connected because of a SIP-level or telephony provider error — distinct from permission denials or invalid numbers, this indicates a technical failure in the call routing or connection process.
Common triggers:
- SIP configuration error on a BYO or SIP trunk number
- Carrier routing failure or temporary outage
- SIP signalling error during call setup
- Incompatible codec or SIP parameters
What it means for you: Isolated dial_failed calls may be transient carrier issues. A sustained spike may indicate a SIP misconfiguration or a carrier-side problem.
How to investigate:
- Review SIP configuration if using BYO or SIP trunking
- Check carrier status for any reported outages
- Contact SigmaMind support if the issue persists across multiple calls
error_credit_limit_reached
The call was terminated because the account’s credit balance was insufficient.
SigmaMind could not continue or initiate the call because the account has reached its credit limit or has insufficient balance to cover the call cost.
What it means for you: Active campaigns may pause or calls may terminate mid-session if credit runs out. This requires immediate action to restore calling capacity.
How to fix it: Top up your account balance in Billing Settings. Consider setting up auto top-up to prevent interruptions during active campaigns.
error_llm
The call was terminated because the language model failed to generate a response.
The AI engine powering your agent encountered an error and could not produce a reply during the call, causing the session to close.
Common triggers:
- Transient LLM service outage or timeout
- Unusually complex input that caused a model processing failure
- Context window or token limit exceeded during a very long call
What it means for you: Occasional error_llm events may be transient. A pattern of this error across many calls may indicate a systemic issue or a prompt configuration that is causing consistent model failures.
How to investigate: Review the transcript up to the point of failure. If the issue recurs, contact SigmaMind support with the affected call IDs.
error_tts
The call was terminated due to a text-to-speech service error.
The TTS engine failed to convert the agent’s text response into audio, causing the session to close.
Common triggers:
- Transient TTS service outage
- Unsupported characters or formatting in the agent’s response text
- TTS provider rate limit or quota exceeded
What it means for you: Isolated error_tts events are usually transient. A recurring pattern may indicate a prompt or response format issue causing the TTS engine to fail consistently.
error_asr
The call was terminated due to a speech recognition service error.
The ASR (Automatic Speech Recognition) engine failed to process the customer’s audio input, causing the session to close.
Common triggers:
- Transient ASR service outage
- Severe audio quality issues preventing transcription
- ASR provider rate limit or quota exceeded
What it means for you: Occasional error_asr may reflect transient service issues or poor call audio quality. If this reason appears frequently for calls to a specific region or carrier, audio quality between SigmaMind and that carrier may need investigation.
error_sigmamind
The call was terminated due to an internal SigmaMind processing error.
An unexpected error occurred within SigmaMind’s core platform during the call session, causing it to close.
What it means for you: This is a platform-side error. Isolated occurrences may be transient edge cases. If you see a sustained rate of error_sigmamind, contact SigmaMind support with the affected call IDs and timeframe.
error_telephony
The call was terminated due to a telephony provider or connection error.
A failure occurred at the telephony infrastructure level — either with the provider SigmaMind uses or with the connection between SigmaMind and the carrier — that caused the session to close unexpectedly.
Common triggers:
- Telephony provider outage or degraded service
- Network connectivity issue between SigmaMind and the carrier
- Unexpected session drop from the provider side
What it means for you: A spike in error_telephony across multiple calls at the same time may indicate a provider-side incident. Check SigmaMind’s status page and your telephony provider’s status for any active incidents.
error_unknown
The call ended due to an unknown internal error.
SigmaMind encountered an unexpected condition that caused the session to close, but the specific error could not be classified.
Common triggers:
- Rare edge case during session teardown
- Internal error path not mapped to a known category
What it means for you: A small number of error_unknown terminations is normal. If you see a large proportion, contact SigmaMind support with affected call IDs for investigation.
Quick Reference Table
| Termination Reason | Who Ended It | Expected? | Action Needed |
|---|
silence_timed_out | System (silence timeout) | ⚠️ Sometimes | Check silence settings, review transcripts |
agent_ended_call | AI agent (programmatic) | ✅ Yes | None — healthy outcome |
user_ended_call | Customer hung up | ✅ Usually | Review if rate is high |
voicemail_detected | System (voicemail detected) | ⚠️ Expected in campaigns | Adjust call timing, enable voicemail drop |
ivr_detected | System (IVR detected) | ⚠️ Expected | Review contact list for direct lines |
agent_transferred_call | AI agent (transfer) | ✅ Yes | None — expected escalation outcome |
max_call_duration_exceeded | System (duration limit hit) | ⚠️ Occasional | Review agent script for loops, adjust limit |
dial_telephony_permission_denied | Carrier (permission denied) | ❌ Investigate | Check account permissions, contact support |
dial_invalid_destination | System / Carrier | ❌ Investigate | Validate E.164 number format, clean list |
dial_no_answer | Carrier (no pickup) | ⚠️ Expected | Retry at different times, check caller ID |
dial_user_declined | Recipient (active decline) | ⚠️ Monitor | Review call frequency, caller ID trust |
dial_busy | Carrier (line engaged) | ⚠️ Expected | Configure retry with delay |
dial_failed | Carrier / SIP error | ❌ Investigate | Check SIP config, contact support if widespread |
error_credit_limit_reached | System (no balance) | ❌ Act immediately | Top up account balance |
error_llm | System (LLM failure) | ❌ Investigate | Review transcript, contact support if recurring |
error_tts | System (TTS failure) | ❌ Investigate | Check prompt formatting, contact support |
error_asr | System (ASR failure) | ❌ Investigate | Check audio quality, contact support |
error_sigmamind | System (internal error) | ❌ Investigate | Contact support with call IDs |
error_telephony | Telephony provider | ❌ Investigate | Check provider status page |
error_unknown | Undetermined | ❌ Investigate | Contact support if widespread |
Termination Reason in Post-Call Analysis
Termination reasons are also available in Post-Conversation Analysis. You can configure your agent to extract and log the reason alongside custom variables like customer intent, resolution status, or sentiment — giving you a complete picture of each call’s outcome.
See Post-Conversation Analysis for setup instructions.
Filtering by Termination Reason
Currently, the Calls table does not support direct filtering by termination reason in the UI. To analyse reason distribution:
- Click Download in the top-right of the Calls table to export the current view as a CSV
- Open the CSV in Excel or Google Sheets
- Filter or pivot the
Terminated reason column to see counts and percentages by reason