What "outcome" means
A call has two separate things worth knowing: whether it connected at all, and whether it achieved anything. Keep them apart. Connection is a telephony fact. Achievement is a post-call analysis fact that you define yourself. Mixing them produces numbers that look bad for the wrong reason.
The per-call record in the Data Extractor Sidebar carries both. Under Telemetry you get the hangup cause and the voicemail detection result. Under the post-call fields you get whatever you configured in post-call-analysis.
Ways a call ends before a conversation happens
| Ending | What happened | What to do about it |
|---|---|---|
| No answer | Rang out. Nobody picked up. | Normal. Retry logic in the deployment handles it. |
| Busy | Line engaged. | Normal. Retry. |
| Voicemail | Answering machine detected. | Detection result is in Telemetry. Check it before assuming a human heard anything. |
| Carrier rejected | The carrier refused the call. Common on US outbound when caller ID is not registered, and on international routes from new numbers. | Settings → Phone numbers → [Number] → Registration Status. Unregistered US numbers fail here silently. |
| Suppressed | Number is on your Do Not Call list, so no call was placed. | Settings → Compliance → Do Not Call List. If a test number stops working, look here first. |
None of these are Finn problems. They are list, number, or carrier problems. If your completion rate is low but the calls that do connect perform fine, stop editing the prompt.
Ways a connected call ends
A connected call ends when one side hangs up or the platform terminates it. The hangup cause is recorded per call in Telemetry.
The case that trips people up: very short connected calls. Some metrics filter out calls under 5 seconds and treat them as no-answer. If Analytics shows fewer calls than you expected, open the full call log rather than the summary. Sub-5-second calls also produce nothing for post-call analysis to read, so their extracted fields come back empty. That is not an extraction bug.
An average duration under 20 seconds across a deployment means people are hanging up on the opening. Fix the welcome message, not the rest of the script. Over 5 minutes means the Finn is not closing the loop.
Transfers
A call that is handed to a human ends as far as the Finn is concerned, but it is still a connected call with a transcript up to the handoff point. If you need transfers counted, define a post-call field for it (transferred, yes/no) rather than looking for a built-in transfer status. See tools-transfer.
Outcome as you define it
The platform does not decide what a good call is. You do, by defining a primary success field in post-call analysis. Success rate is then calls where that field is true, divided by calls that connected and completed.
success rate = (calls with appointment_booked = true) / (calls that connected and completed)
Because the denominator is completed calls, a bad list drags completion rate down without touching success rate. That separation is deliberate. Read both.
For an enumerable outcome, use an enum field rather than free text. A free-text outcome field will give you "booked", "Book", "wants appointment" as three distinct values and you will not be able to chart it.
| Field | Type | Values |
|---|---|---|
outcome | Enum | paid / payment-plan / dispute / refusal / no-answer |
intent | Enum | book / reschedule / cancel / question / complaint / other |
When an outcome is missing
| What you see | Why |
|---|---|
| Post-call fields blank on older calls | The field was added after those calls completed. Analysis only runs forward. Contact support for a one-off backfill pass. |
| "Extraction failed" on a field | The transcript did not contain enough to answer. Usually the call ended before the topic came up. The platform marks it failed rather than guessing. |
| Low confidence flag | Every extracted value carries a confidence score. Low-confidence values are flagged in the sidebar. Filter exports on confidence for anything you act on. |
| A value that looks wrong | Click it in the sidebar to see the reasoning and the transcript snippet it used. You can override it manually. Overrides are flagged as human-corrected in exports. |
Getting outcomes out
The call.analyzed webhook event carries every post-call field. That is the path for pushing outcomes into a CRM or warehouse in real time. See webhook-events for the payload and webhook-retries for delivery behavior.
CSV export includes every field as a column. Both are per-deployment.
Deployment-level endings
A deployment stopping is not a call outcome, but it looks like one when calls suddenly stop. Live Deployments → click deployment → Pause Reason tells you which: spend cap reached, audience exhausted, buffer drained (usually self-recovers within a minute), manual pause, carrier outage, or plan limit hit. See outbound-campaigns and troubleshooting.