Dispositions & outcomes
How every call gets a clean, labeled outcome - set by the agent or classified from the transcript - and how to use it to filter, report, and drive follow-ups.
A disposition is the one-word answer to “so, how did that call go?” It’s the labeled outcome the platform attaches to every finished call - interested, not interested, callback, and so on. One call, one disposition.
That single label is what turns a pile of recordings into something you can actually work with. Instead of listening to 500 calls to find the 40 warm leads, you filter for interested and hand your team a list. Instead of guessing whether a campaign worked, you look at the mix of outcomes. Dispositions are how a day of calling becomes a number you can act on.
The short version: every call ends up in exactly one outcome bucket. The agent picks the bucket during the call when it can, and if it doesn’t, the platform reads the transcript afterward and picks one for you. You rarely have to touch it.
The default outcome buckets
Out of the box, every agent classifies calls into six buckets. They’re deliberately broad, distinct, and cover the real ways a phone call ends:
- interested - the caller wants what you’re offering, or agreed to the next step. Your warm leads live here.
- not_interested - the caller heard you out and said no. A real, informed decline.
- callback - not now, but not a no. The caller asked to be reached later.
- no_response - nobody meaningfully engaged: voicemail, an immediate hang-up, dead air. No conversation actually happened.
- wrong_number - you reached a person, but not the person you were looking for.
- other - a genuine outcome that doesn’t fit the five above. A catch-all, not a dumping ground.
These are the fallback set the platform uses whenever an agent doesn’t have its own custom buckets defined (more on customizing below). They’re a sensible default for almost any outbound sales or follow-up campaign.
Why buckets and not free text? Because you can count buckets. “interested” said the same way on every call lets you filter, chart, and route it. A free-text summary can’t do any of that - which is exactly what the captured fields are for (see below).
How a call gets its disposition
Every call gets a disposition one of two ways. You don’t choose between them - the platform tries the first, and falls back to the second so no call is ever left blank.
1. The agent sets it during the call
Agents carry a built-in Set disposition tool. As the conversation reaches its natural end, the agent decides which bucket fits and records it - silently, as a background action, without saying anything to the caller about it.
This is the more accurate of the two, because the agent was in the conversation. It knows the caller warmed up after an objection, or that “maybe later” meant a real callback rather than a polite brush-off.
There’s a safeguard wired around this: if an agent is set up to record an outcome, it isn’t allowed to hang up until it has. If the model tries to end a call without recording the disposition first, the platform quietly forces it to record one before the goodbye. So the outcome is captured while the context is freshest.
- Where you control this: the Set disposition tool is one of the always-on tools every agent carries (alongside opt-out). You can edit its description in the agent builder to nudge how the agent decides - but you can’t remove it. See Tools & actions.
2. The platform classifies it from the transcript
Sometimes the agent ends a call without recording an outcome - for example, it asks the caller “so, not interested, or should I follow up?” instead of quietly calling the tool, and then the call ends. That would leave the bucket empty.
So after the call is over, the platform does a backfill: it reads the full transcript and classifies it into one of the allowed buckets. This runs after the call has ended, so it adds zero delay to the conversation and never affects the caller’s experience.
The backfill is deliberately honest. If the transcript is empty, or nothing in it clearly matches a bucket, it leaves the outcome unset rather than inventing one. An honest gap is always better than a fabricated “interested.”
How to tell which happened: open any call’s card on the board and it says so - “Set by the agent” when the agent recorded it live, or “Auto-classified” when the transcript backfill filled it in. Same label either way; you just get to see where it came from.
Dispositions vs. captured fields
This trips people up, so it’s worth being crisp. Your agent produces two different kinds of data from a call, and they do different jobs:
| Disposition | Captured fields | |
|---|---|---|
| What it is | One outcome label for the whole call | Specific pieces of information pulled from the call |
| Shape | Always exactly one, from a fixed list | Any number of free-form values you defined |
| Example | interested |
callback_at: "Friday 4pm", objection: "price", budget: "50k" |
| Good for | Filtering, counting, routing, pipeline stages | Enriching a record, briefing your team, syncing to CRM fields |
Think of the disposition as the verdict and the captured fields as the notes. A call can be dispositioned callback while also capturing when they want the callback and why they couldn’t talk now. You set up captured fields in the agent builder’s What to capture step - see Create an agent.
- Rule of thumb: if you’d want to filter or chart by it, it’s a disposition. If you’d want to read or copy it, it’s a captured field.
The outcome board
Dispositions aren’t just a column in a table - they roll up into an outcome board for each campaign: a pipeline view where every disposition is its own column, and each finished call is a card sitting in the column that matches its outcome.
It’s the fastest way to see the shape of a campaign at a glance. A healthy sales run has a fat interested column; a wall of no_response tells you your list or your calling window is off.
What you can do on the board:
- See the split instantly - column counts show you the outcome mix without running a single report.
- Move cards between columns - drag a card, or use “Move to,” when you disagree with where a call landed. Manual moves stick.
- Work the needs-review queue - calls the classifier wasn’t confident about surface in a separate Needs review queue, so an uncertain outcome gets a human glance instead of quietly landing in the wrong bucket.
- Open a card to see who it was, the outcome, and the trail of how it got there (agent-set, auto-classified, or moved by a person).
Campaign boards roll up further into a workspace-level pipeline, so you can see outcomes across every campaign in one place.
Make columns do the work: on-enter actions
Each column can fire actions automatically the moment a lead lands in it. This is where dispositions stop being a report and start driving your follow-up. Configure a column’s actions and, whenever a call gets that outcome, the platform can:
- Notify a teammate - ping the right person the instant a hot lead appears.
- Call a webhook - hit your own system with the outcome.
- Send a pre-approved WhatsApp template - e.g. drop a payment link to everyone marked interested.
- Schedule a callback or move the card onward.
- Push to your CRM - upsert the contact and log the outcome in HubSpot, Salesforce, Zendesk, and the like.
This is the payoff. Set the interested column to push to your CRM and ping sales, and your team wakes up to a worked queue of warm leads - no exports, no copy-paste, no “which calls should I follow up on?”
Customizing your outcome buckets
The six defaults fit most outbound campaigns, but they’re not a straitjacket. When you configure a campaign’s board columns, those column keys become that campaign’s disposition set - the agent is pinned to record into exactly those buckets, and the transcript backfill classifies into them too.
That means you can shape the outcomes to your actual process:
-
Sales: interested / not interested / callback / wrong number
-
Support or service: resolved / needs follow-up / escalated
-
Collections: promised to pay / dispute / callback / unreachable
-
Tip: keep buckets few, clear, and mutually exclusive. “interested” and “very interested” and “somewhat interested” will classify inconsistently because even a human couldn’t draw the line reliably. Three distinct buckets beat seven fuzzy ones every time.
-
Tip: name your columns the way you actually think about the pipeline, since the column name is the outcome label your whole team and your CRM will see.
If a campaign has no custom columns configured, it simply falls back to the six defaults above - so you’re never stuck with an unlabeled call.
Reading the numbers
Once outcomes are flowing, a few habits turn them into decisions:
- Watch the mix, per campaign. The ratio of interested to not_interested to no_response is the single best read on list quality and agent performance. A sudden shift is a signal.
- Chase the misfires. A run with a weird distribution - say, wrong_number spiking - is worth pulling up a few calls from. It usually means a data problem, not an agent problem.
- Mind the no_response wall. Lots of no_response rarely means people don’t want you; it usually means you’re calling at the wrong time or the numbers are stale.
- Let the outcome route the work. Feed dispositions to your CRM so your team works interested first and never wastes a minute re-dialing a confirmed not_interested.
Every call’s outcome also shows up on the campaign’s Calls tab and in each call’s detail drawer, colored by sentiment, so you can scan outcomes without opening the board at all.
Next: CRM & tools → - connect your CRM, calendar, and messaging so a disposition can trigger the follow-up automatically.