A call disposition code is the label that records how a call ended: resolved, transferred, callback scheduled, voicemail, wrong number. Agents pick most codes during wrap-up, and the phone system sets the rest, such as no answer, busy or abandoned in queue. A list works when its codes don't overlap and each one feeds a report or a workflow.
Most messy disposition data comes from one dropdown doing three jobs. Split the wrap-up into three fields and each one stays short:
| Field | The question it answers | Who sets it | Example values |
|---|---|---|---|
| Outcome (the disposition) | How did the call end? | The agent, or the system when it already knows | Resolved, transferred, callback scheduled, no answer |
| Reason | Why did the customer call, or why did we call them? | The agent, or the menu option the caller chose | Billing, order status, appointment change |
| Next action | What happens now, and who owns it? | Created from the outcome code | A callback task, a ticket for another team, removal from a calling list |
Ten call reasons crossed with eight outcomes make 80 codes in a single dropdown. As two fields they are 18 choices, and a report can still cross them to show which reasons end in callbacks.
What is a call disposition?
A call disposition is the recorded result of a call, written when the call ends. Five9 describes dispositions as "labels or tags assigned by either agents or the system to their completed customer interactions," used to track outcomes and to "trigger other actions such as a callback, Do Not Call list, etc." (Five9). To disposition a call is to choose that label.
Platforms use different names for the same thing. Five9 and Talkdesk say dispositions, and Genesys Cloud says wrap-up codes (Genesys Cloud after call work settings). Some platforms collect the codes into disposition lists, which are assigned to whoever receives the interactions (CXEngage admin guide).
The agent usually picks the code during after call work, so a list that is slow to read is slow to use, and every second of it lands in handle time. The codes also feed most outcome numbers on the call center metrics dashboard, from resolution to callback volume, which is why a wrong code does more damage than a missing one: it looks like real data.
Which disposition codes should the system set?
Leave to the system every outcome it can detect on its own: calls abandoned in the queue or while ringing, very short calls, and on outbound, no answer, busy and numbers that don't connect. Asking an agent to pick those adds seconds to each wrap-up and mistakes to the report, and the agent's list gets shorter without them.
Cisco Unified Contact Center Enterprise shows how much a platform records by itself. Its Termination_Call_Detail table has a CallDisposition field that "gives the final disposition of call (or how the call terminated)," with values numbered from 1 to 66 in the 12.6(1) schema handbook. Value 2 is Abandoned in Local Queue, 3 is Abandoned Ring, 7 is Short, 13 is a call an agent handled without a transfer or conference, and 19 is Ring No Answer. A second field, CallDispositionFlag, sorts them into seven groups: handled, abandoned, short, error, redirected, requery and incomplete (Cisco database schema handbook, field values).
A system disposition describes what happened to the call on the network and says nothing about what the caller got. A call the system counts as handled was answered, by an agent or by a device such as a voice mail system, whether or not the caller's problem was solved. Keep both on the record: the system value for abandonment and service level reporting, and the agent's code for the outcome of the conversation.
| Outcome | Who should set it | Why |
|---|---|---|
| Abandoned in queue or while ringing | System | It happens before anyone speaks to the caller |
| Short call | System | It is set by a timer; Cisco, for one, leaves short calls out of its abandoned counts while still counting them as offered |
| No answer, busy, number not in service | System, where the dialer detects it | The dialer knows before an agent would |
| Voicemail | The system if it can detect voicemail, otherwise the agent | Detection methods differ, so check which one your counts come from |
| Resolved, transferred, callback scheduled, complaint, declined, asked not to be called | Agent | Only the conversation shows it |
Call disposition codes list: a starter set
Start with about a dozen codes in two levels: a category that every report groups by, and a specific code under it. Talkdesk calls the second level nested dispositions, "subcategories within Dispositions that empower agents to label interactions with more granularity" (Talkdesk dispositions). Give inbound and outbound separate sets, because an outbound list needs reach results an inbound line never sees.
For an inbound line:
| Category | Code | Use it when | What it should trigger |
|---|---|---|---|
| Resolved | Answered on the call | The question was answered and nothing is owed | Nothing |
| Resolved | Transaction completed | A booking, change, cancellation, payment or order was finished on the call | Nothing beyond the record the transaction already writes |
| Handed off | Transferred | Another team or number took the call | Nothing, if the receiving team codes its own part |
| Handed off | Escalated or complaint | The caller asked for a supervisor or raised a complaint | The complaint workflow |
| Follow-up owed | Callback scheduled | A time was agreed to call the customer back | The callback, created from the code |
| Follow-up owed | Task for another team | Something was promised that another team has to do | A ticket with an owner and a due date |
| Not completed | Caller disconnected | The call ended before the request was finished | A recording review when the count climbs |
| Not completed | Could not verify | The caller couldn't pass the identity check | No account change; a rising count is a reason to look at the check itself |
| Not for us | Wrong number or department | The call belonged somewhere else | A routing review when the count climbs |
For an outbound program:
| Category | Code | Set by | What it should trigger |
|---|---|---|---|
| Not reached | No answer | System, where the dialer detects it | Your rule for when to call again and how many attempts a record gets |
| Not reached | Busy | System | The same rule, usually with a shorter gap |
| Not reached | Number not in service | System | Remove the number from the list |
| Not reached | Voicemail | System or agent | Your voicemail rule: whether to leave a message and when to try again |
| Reached | Completed | Agent | Remove the record from this campaign |
| Reached | Callback requested | Agent | A callback at the time the person gave |
| Reached | Declined | Agent | Remove the record from this campaign |
| Reached | Asked not to be called | Agent | Add the number to your internal do-not-call list |
| Reached | Wrong person | Agent | Correct the contact record |
"Completed" means whatever the campaign exists to do: an appointment confirmed, a payment arranged, a survey finished. Write that definition down for each campaign. A confirmation call program, for example, might split it into confirmed, rescheduled and canceled, since each one changes the schedule differently.
Call reasons stay out of both lists. Put them in their own field, set from the menu choice where the caller made one, and the outcome list stays the same size however many reasons you add.
How many disposition codes should a call center have?
There is no published standard. Talkdesk starts every account with a set of four inbound and four outbound dispositions, and lets admins create "as many dispositions and nested dispositions as you wish," so the platform puts no ceiling on the list. A practical test: an agent can read the whole list without scrolling, no two codes describe the same outcome, and each code has a named report or workflow that reads it. A code that fails the third part comes off the list.
Expect the list to grow one request at a time. The audit below is how codes come off it again.
How should a BPO set up disposition codes across client programs?
Give each client program its own set of codes and keep the categories shared across all of them. Clients define success differently, so the specific codes differ, but when every program's codes roll up to the same categories, one report can compare programs and one forecast can staff them. Talkdesk supports this by assigning disposition sets to queues, so only agents on a client's queues see that client's codes.
Agree the definitions with the client in writing before launch, because the client's own report is built on them. Then keep one mapping table per program, with the client's code, your shared category and the workflow it triggers. A new code the client asks for goes into that table before it goes into the platform, which keeps the shared categories intact. The comparison of running client programs with a BPO or with AI agents covers the rest of the program setup.
How do you map IVR and AI agent outcomes to disposition codes?
Map them before the first live call, so one outcome report covers every call no matter who took it. A self-service menu or an AI agent reports its own outcome values, not your agents' codes, so each value needs a row in a mapping table, plus a rule for transferred calls, which would otherwise be counted twice.
| Automated outcome | Map it to | Check before go-live |
|---|---|---|
| Completed | Answered on the call, or Completed on outbound | Read a sample: "completed" can mean the conversation ended normally, not that the request was finished |
| Appointment booked | Transaction completed | The booking exists in the scheduling system |
| Callback scheduled | Callback scheduled | Someone owns the callback list |
| Transferred | Transferred | Count the call once: the person who picks up codes the outcome, and the automated record keeps the transfer |
| Voicemail | Voicemail | How voicemail is detected, since that decides how far to trust the count |
| Abandoned | Caller disconnected | Whether the caller left during the conversation or before it began |
| Failed or never connected | No answer, or Number not in service | Which of the two the system can tell apart |
Then audit the automated codes the way you audit people's: each week, compare a sample of codes with the transcripts. Speech analytics and call center quality assurance both start from the same check, because every report built on dispositions inherits their errors.
How do you audit and clean up a disposition code list?
Export 30 days of calls with the code, the agent, the queue or client program and the handle time, then run six checks. Each points to a specific fix, and together they usually shorten the list. The flags in the table are starting points for a first audit, not published benchmarks, so adjust them once you have your own history.
| Check | How to work it out | Flag | Usual cause | Fix |
|---|---|---|---|---|
| Catch-all share | Calls coded Other, left blank or closed with a timeout default, divided by all calls | Above about 5% | Agents can't find the right code, or wrap-up time runs out first | Read 20 of those calls, add or rename the code they needed, and check the wrap-up time limit |
| Dominant code | The busiest code's share of all calls | One code above about half | It hides several outcomes | Read 20 of its calls and split it by what you find |
| Unused codes | Codes with no calls in 30 days | Any | Outcomes that stopped happening, or duplicates | Deactivate them, keeping their history |
| Agent spread | Each agent's rate for a code against the team's rate | Three times the team rate or more | An unclear definition, or one agent's habit | Rewrite the definition, then coach |
| Accuracy | Share of a sample of calls whose code matches what the recording shows | Fewer than 9 in 10 | Definitions overlap, or codes are picked in a hurry | Rewrite the overlapping definitions and score the code in QA |
| Orphan codes | Codes that no report or workflow reads | Any | Codes added for a project that ended | Deactivate them, or name the report that needs them |
A worked example
Take an inbound program with 6,000 calls in 30 days and 22 codes on its list. These figures are made up to show the arithmetic:
- Catch-all share: 420 calls coded Other and 300 closed with the timeout default make 720, or 12% of calls.
- Dominant code: Resolved took 3,180 calls, or 53%.
- Accuracy: of 20 calls coded Resolved, the recordings show 13 resolved, 4 with a follow-up still owed and 3 transferred. That is 13 in 20, or 65%.
- Agent spread: Caller disconnected is 180 of 6,000 calls for the team, or 3.0%. One agent coded it on 41 of 420 calls, or 9.8%, about three times the team rate.
- Unused and orphan codes: 6 codes had no calls, and 3 more were in use but fed no report.
The fixes follow from the numbers. Resolved gets a one-line definition ("nothing is owed to the caller, and no one else took the call"), and the two follow-up codes move to the top of the dropdown, since 4 of the 20 sampled calls still owed the caller something. The 300 timeouts suggest the wrap-up time limit is shorter than the work, which the after call work guide shows how to measure. Retiring the 9 unused and orphan codes takes the list from 22 to 13. Rerun all six checks a month later.
Deactivate retired codes rather than deleting them, so old calls keep their labels. Talkdesk, for example, lets admins deactivate a disposition or change its name at any time.
How Telvana reports the outcome of each call
Calls a Telvana agent handles arrive already dispositioned. With the post-conversation webhook turned on, your server receives a record after every call the agent handles, inbound or outbound, including outbound calls that never connected. Its disposition is one of seven values: COMPLETED, VOICEMAIL, TRANSFERRED, APPOINTMENT_BOOKED, SCHEDULED_CALLBACK, ABANDONED or FAILED, sent with the transcript, summary, sentiment and tags (webhooks). A call that never connected arrives as FAILED with an empty transcript, and the seven values map onto your codes the way the table above shows.
Voicemail is identified from the transcript. A transfer is an ordinary call to the number you choose, so the person who answers codes their part as usual. BPOs get a workspace per client program, which keeps each program's outcomes separate. Our team builds each agent from your scripts, FAQs, policies and transfer rules and tests it on your call types before it takes a live call. Pricing starts at $399 a month based on call volume, plus a one-time setup fee (pricing).
Frequently asked questions
What does it mean to disposition a call?
To disposition a call is to record how it ended by choosing a code, usually during wrap-up after the caller hangs up. Some platforms let agents choose it while the call is still live. The system dispositions the calls that never reached an agent, such as calls abandoned in the queue.
What are Cisco call disposition codes?
They are the values of the CallDisposition field in the Termination_Call_Detail table of Cisco Unified Contact Center Enterprise. They record how a call terminated, such as abandoned in the queue, abandoned while ringing, handled, redirected or ring no answer, numbered 1 to 66 in the 12.6(1) schema handbook. They are system dispositions and don't say whether the caller's issue was resolved.
Is a wrap-up code the same as a disposition code?
Yes. Genesys Cloud calls them wrap-up codes, and Five9 and Talkdesk call them dispositions. In each case the code records how the call ended, and either the agent picks it during after call work or the system sets it.
What is the difference between a call disposition and a call reason?
A disposition records how the call ended, and the reason records why it happened. A billing question is a reason, and resolved or callback scheduled is its disposition. Two fields keep both lists short and let a report show which reasons end in callbacks most often.
Should disposition codes be mandatory?
Make them mandatory where a report or workflow reads them. Genesys Cloud, for example, lets a queue make after call work optional, so agents can skip the wrap-up code, or mandatory. A mandatory code with a short time limit tends to fill up the timeout default, so watch that share as closely as the Other code.
See your codes on a live call
Bring your current disposition list and your busiest call types to a demo. We'll map an agent's outcome values onto your codes, and you can listen to it take a call.