Post-Call Actions: extract data, fire workflows
Define structured fields to extract from every call, then trigger webhooks or auto-schedule follow-ups based on the extracted values.
Updated May 6, 2026
Every call ends with a transcript. Post-Call Actions turn that transcript into structured data and downstream workflows — without you writing parsing code.
The two halves
Post-Call Data Extraction defines what fields to extract from each transcript. Post-Call Actions define what to do when those fields land.
You configure both on the agent. They run automatically after every call.
Defining extraction fields
In Agents → Edit → Post-Call Data Extraction, list the fields you want:
[
{"name": "customer_name", "type": "string", "description": "Customer full name"},
{"name": "interest_level", "type": "enum", "description": "high, medium, low, none"},
{"name": "follow_up_required", "type": "boolean", "description": "Whether follow-up is needed"},
{"name": "follow_up_date", "type": "string", "description": "Follow-up date in ISO 8601 format"},
{"name": "callback_number", "type": "string", "description": "Phone number to call back, digits only"}
]
Supported types: string, number, boolean, enum. The description
guides the extraction model — write it like you'd describe the field to a
new analyst.
How extraction runs
After each call:
- The full transcript is sent to the extraction model
- The model fills in the JSON object you defined
- The result is stored on the call and surfaced in the dashboard's "AI Analysis" tab — and optionally sent via webhook
Defining actions
Actions live alongside extraction:
{
"type": "schedule_call",
"name": "Auto follow-up",
"condition": { "field": "follow_up_required", "operator": "==", "value": true },
"config": {
"use_field": "follow_up_date",
"fallback_delay_minutes": 1440,
"from_number": "+908501234567"
}
}
Action types
| Type | What it does |
|---|---|
schedule_call | Books a future call using extracted fields as parameters |
webhook | Posts the extraction result to your URL |
transfer_call | (During call) hands off to a human number |
Conditions
Each action has an optional condition:
field— the extracted field to checkoperator—==or!=value— string, number, boolean, ornull
If no condition is set, the action always runs.
Wiring it to a CRM
The fastest path to "extracted data appears in our CRM" is a webhook
action with interest_level == high (or whatever signal matches your
funnel). Your CRM endpoint receives the extraction JSON and creates a
lead.
For richer integration, use the same pattern with multiple actions — high-interest goes to sales, low-interest goes to nurture.
What's next
Frequently asked
Q.What can I extract from a call?
Any field you can describe in plain language — customer name, interest level, follow-up date, callback number, sentiment. The extraction model reads the transcript and returns structured JSON.
Q.How accurate is extraction?
For well-defined fields with clear values from the transcript, accuracy is high. For ambiguous fields (sentiment, intent), accuracy depends on the model you choose. Larger models cost more and do better on edge cases.
Q.Can I trigger different actions based on extracted values?
Yes. Each action has an optional condition — e.g. fire this webhook only when interest_level is high, schedule a follow-up only when follow_up_required is true.
Q.What's the difference between Post-Call Actions and webhooks?
Webhooks fire on every call event. Post-Call Actions fire after extraction completes, with the structured data already available. Use webhooks for live UI; use Post-Call Actions for downstream workflows.