Skip to main content
Post-call analysis turns raw conversations into structured, machine-readable data. You define the fields you want — customer email, issue resolved, sentiment, appointment date — and after every call, Verbeo’s AI reads the transcript and extracts the values. The results are delivered to your webhook URL in the call_analyzed event, ready to push into your CRM, trigger workflows, or feed a dashboard.

How it works

Every call goes through three lifecycle stages, each of which fires a webhook event:
call_analyzed is the event that carries your extracted data. Verbeo sends it once the summary and analysis are ready — usually within seconds of the call ending. If generating them fails, Verbeo keeps retrying and the event can take up to 3 hours; it is still sent only once (see Timing). call_analyzed is sent for every completed call: if post-call analysis is turned off, or the AI cannot fill any field, the event still arrives with analysis_data set to null.

Configure extraction fields

Open your agent in the dashboard, scroll to Post-Call Analysis, and toggle it on. Then click Add Field for each piece of data you want extracted. Each field has five settings:

Example field configuration

Here is a configuration for a customer support agent that tracks issue resolution and caller sentiment:
Write descriptions the same way you would write instructions for a human analyst reading the transcript. Tell the AI exactly what counts as a value, what to do when the data is ambiguous, and when to return null.

The call_analyzed webhook event

When analysis completes, Verbeo sends a POST to your webhookUrl with the following shape. The analysis_data object contains exactly the fields you configured, keyed by the names you chose.

Key fields in payload.data

The payload also carries identifiers (id, workspace_id, agent_id, call_sid, recording_sid) and timestamps (started_at, ended_at, created_at, updated_at). Parse permissively and ignore any keys you don’t use — Verbeo may add fields over time.

The three webhook events

You receive three events per call, all delivered to the same webhookUrl:

call_started

Fires within seconds of the call being answered. Use it to initialize a live dashboard entry or pre-warm a CRM record.

call_ended

Fires within seconds of disconnect. Contains duration and disconnection reason but not yet the transcript or extracted data.

call_analyzed

Fires once the summary and analysis are ready — usually within seconds of the call ending, or up to 3 hours if generating them fails. This is the primary event for downstream automation — it contains everything. Set your webhookUrl in the agent’s settings. All three events are delivered to the same URL; dispatch in your handler on the event field. You can inspect, debug, and replay every delivery from the dashboard — see Monitor and retry deliveries.

Set the webhook URL via API

Settings you leave out are kept, but fields is a list and is replaced whole: send every field you want extracted, not only a new one.

Handling missing values

If the AI cannot find a confident value for a field, it returns null — never an empty string, never a fabricated value. A required field returning null means the data genuinely was not in the transcript. If you see null frequently on a field you expect to be populated, tighten the description. Specify what counts as a value, what format it should be in, and what to return when the caller is vague.

What to build with analysis_data

  • CRM sync — push extracted fields directly into a contact record after every call.
  • Follow-up triggers — if callback_requested === true, create a task for a human agent.
  • Lead scoring — combine sentiment, issue_resolved, and custom fields to rank leads automatically.
  • Compliance archiving — store the transcript, summary, and recording URL for every call.
  • Real-time dashboards — listen to all three events to show live call status and fill in outcomes when analysis arrives.