title: Use analysis results description: Where post-call analysis shows up: the call object, the call_analyzed webhook, list filters, analytics, QA cohorts, contacts and the dashboard. order: 3#
Once analysis finishes, call_analysis is part of the call object everywhere Tried returns a call. This page lists each place you can read or act on it.
In the call object#
GET /v2/get-call/:call_id and POST /v2/list-calls return call_analysis:
{
"call_id": "call_7e2f4c1a9b8d0e3f5a6b7c8d",
"call_status": "ended",
"disconnection_reason": "agent_hangup",
"call_analysis": {
"call_summary": "The caller moved their appointment to Thursday at 10am.",
"in_voicemail": false,
"user_sentiment": "Neutral",
"call_successful": true,
"custom_analysis_data": { "appointment_booked": true, "call_reason": "Reschedule" }
}
}call_analysis is null until analysis completes, which is a few seconds after the call ends. If you poll, wait for it to be non-null rather than for call_status: ended.
In webhooks#
Post-call analysis triggers the call_analyzed event. It is sent to the agent's webhook_url, or the workspace webhook when the agent has none, if call_analyzed is in the agent's webhook_events (it is by default, together with call_started and call_ended).
{
"event": "call_analyzed",
"call": {
"call_id": "call_7e2f4c1a9b8d0e3f5a6b7c8d",
"agent_id": "agent_3f9c0a1b2c3d4e5f6a7b8c9d",
"call_analysis": {
"call_summary": "The caller moved their appointment to Thursday at 10am.",
"in_voicemail": false,
"user_sentiment": "Neutral",
"call_successful": true,
"custom_analysis_data": { "appointment_booked": true, "call_reason": "Reschedule" }
}
}
}The call object is the full call, trimmed here. Order is guaranteed: call_analyzed is delivered after call_ended for the same call, even when the call_ended delivery is being retried. Deliveries are signed (x-tried-signature, also sent as x-retell-signature).
| Action | Sends call_analyzed again? |
|---|---|
Rerun on one call (drawer Rerun, POST /rerun-call-analysis/:call_id) |
Yes |
Backfill (POST /backfill-call-analysis, Backfill, Backfill analysis) |
No |
Use call_ended for anything that must happen as soon as the caller hangs up, and call_analyzed for anything that needs the summary or your fields. See Webhooks.
In list filters#
list-calls filters on the presets and on your fields:
| Filter | Matches |
|---|---|
user_sentiment |
Array of Positive, Negative, Neutral, Unknown |
call_successful |
Array of booleans |
fields[] with source: "custom_analysis_data" |
A custom field by key, with op and value |
{
"filter_criteria": {
"call_successful": [false],
"fields": [
{ "source": "custom_analysis_data", "key": "call_reason", "op": "eq", "value": "Cancel" }
]
}
}Field filter operators are eq, neq, contains, gt, gte, lt, lte, in, exists and not_exists. Up to 20 field filters, all must match. neq also matches calls where the field is missing. In the dashboard the same filters are under Filter > Analysis, metadata and variables in Call history.
In the dashboard#
- Call history columns User Sentiment and Call Successful, and the drawer's Conversation Analysis, Summary and Data > Custom analysis.
- Analytics overview tiles and charts for success rate and sentiment, and custom charts that break down or filter by
analysis.<field>. See Analytics. - Contacts: each conversation in a contact shows its summary and sentiment.
- Batch Call: a batch's successful count follows
call_successful.
In AI QA#
- Cohort Extraction filters pick calls by a custom field or a preset (source Analysis). See QA cohorts.
- The Sentiment metric scores
user_sentiment. See QA metrics. - In mock mode, a QA result counts as resolved when analysis marked the call successful. Calls without a success value fall back to the criteria score (resolved at 50 or more).
In contacts#
Field mappings copy analysis values into contact fields after each call: analysis.<field>, analysis.call_summary or analysis.user_sentiment, with mode overwrite, fill_if_empty or accumulate. Contact memory uses the call summary when it rewrites the brief. See Contacts.
In alerts#
Call success rate and Negative sentiment rate alerts are computed from analysed calls. See Alerting.
Data storage settings#
The agent's data_storage_setting is applied after call_analyzed has been delivered, so your webhook always receives the full analysis. What is kept afterwards depends on the setting.