Skip to main content
WEBHOOK

Call outcome

Three fields describe what happened, and they are the ones to build on:
  • state — where the call is in its lifecycle
  • status — how it ended, once it has ended
  • follow_up — the follow-up telli scheduled, if any
call_status is deprecated and will be removed. Use state, status, and follow_up instead.
The legacy field maps onto the new ones like this: call_status is lossy in both directions: IN_PROGRESS cannot tell in_progress from processing, and COMPLETED and ANSWERED differ only by whether a follow-up was scheduled.

Analysis fields

The payload carries two kinds of analysis, and their shapes differ. call_analysis holds telli’s built-in analysis. Every entry has a boolean value; entries that support supporting detail also carry details:
call_outcome holds the custom analysis fields you configure in telli. Entries are keyed by field name and carry the extracted value plus the schema it was validated against:
A call_outcome entry may also include reason, explaining why the agent chose that value, and error when extraction failed.

Collected data

When the agent has Collect Data tasks, collected_data reports what was gathered and confirmed during the call:
Only confirmed entries carry a value you should trust. When no Collect Data tasks are configured or none were triggered, collected_data is empty or null — handle both.

Retry attempts

Automatic retries within one scheduled sequence share a loop_id, and attempt counts up within it. Scheduling the same contact again starts a new loop, so use contact_id to track a contact across sequences.

Body

application/json
event
string
required

Always call_ended.

Allowed value: "call_ended"
call
object
required
contact
object
required

The contact as it stood after the call was processed.

Response

2XX

Acknowledged. Return any 2xx within 15 seconds or the message is retried.