Skip to content
TriedDocs
Post-call analysis and QA

Use analysis results

Where post-call analysis shows up: the call object, the call_analyzed webhook, list filters, analytics, QA cohorts, contacts and the dashboard.


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.