Call Actions
What happens after a call — tasks, appointments, emails, payment links, with approvals.
Call Analysis decides what is extracted from a call. Call Actions decides what happens next because of it.
A caller agrees to a follow-up and a task appears on the right person's board. They book a slot and it lands in the calendar. They ask for a quote and a payment link is drafted — and held for your approval before it reaches them. That is the post-call action engine.
In this guide
- How the engine works
- Getting to the page
- The action types
- Internal vs outward actions, and why the default modes differ
- Execution modes: automatic and approval
- Confidence thresholds
- Guards — firing only when a condition is met
- Parameters — what each action needs to work
- The approvals queue
- Who can set what
- Troubleshooting
1. How the engine works
- A call completes and is analysed.
- The analysis produces signals — the outcome, the sentiment, action items, and every custom field you defined.
- For each action type you have enabled, the engine checks the confidence of the signal and evaluates any guards you set.
- If the action passes, it is either run immediately or queued for approval, depending on its mode.
- Every run is logged with its result: done, skipped, or failed.
2. Getting to the page
- Open the Voice AI hub.
- Click Call Actions in the left navigation (the lightning icon).
- The page opens at
…/voice/call-actions.
The header carries three live figures — Awaiting approval, Completed and Failed — and two tabs:
| Tab | What it does |
|---|---|
| Configure | Turn action types on, set their mode, confidence and guards. |
| Approvals | Review and release the actions waiting on a human. A badge shows how many. |
Call Actions is available from Launch upward. It is driven entirely by analysis signals, so it shares the Call Analysis gate — without analysis there is nothing for the engine to act on.
3. The action types
| Action | What it does | Reaches the caller? | Default mode |
|---|---|---|---|
| Create task | Adds a follow-up task from what was discussed. | No | Automatic |
| Set appointment | Books the slot agreed on the call. | No | Automatic |
| Update contact | Writes the caller's details into the CRM. | No | Always on |
| Send email | Emails the caller a follow-up. | Yes | Approval |
| Payment link | Issues a payment link to the caller. | Yes | Approval |
| Send form | Sends the caller a form to complete. | Yes | Approval |
| Share document | Shares a Vault document with the caller. | Yes | Approval |
| Ask for a review | Asks the caller for a review a couple of hours later. | Yes | Approval |
Update contact has no switch. Caller details are already written to your CRM as each call is analysed, by the CRM projection. Routing it through the action engine as well would double-write the same caller, so it shows as handled automatically rather than as a toggle that does nothing.
4. Internal vs outward
The single most important distinction on this page is whether an action reaches the caller.
Internal actions — create task, set appointment, update contact — change your own records. If one fires wrongly, someone deletes a task. They default to running automatically.
Outward actions — send email, payment link, send form, share document, ask for a review — put something in front of your customer. If one fires wrongly, your customer receives it. They default to approval.
"Ask for a review" counts as outward even though it is delayed: it queues a message that reaches the caller's inbox or phone a couple of hours later.
5. Execution modes
| Mode | Behaviour |
|---|---|
| Automatic | The action runs as soon as the call is analysed and the guards pass. |
| Approval | The action is queued and does nothing until a person releases it from the Approvals tab. |
Switching an outward action to Automatic shows a warning: nothing will be reviewed before it reaches a caller.
Client accounts cannot set an outward action to run unattended. The choice is not offered in the UI, and the mode is pinned server-side regardless of what is submitted — a rule enforced only in a form is decoration, not a control. Internal actions can be automatic on any account.
6. Confidence thresholds
Every enabled action carries a minimum confidence, defaulting to 0.7.
Analysis attaches a confidence to the signal behind each action — how strongly the call supports doing this. Below your threshold, the action is skipped and logged as skipped rather than run.
Raise it when an action is firing on weak evidence. Lower it when clear cases are being missed. Changing the threshold does not affect actions already queued.
7. Guards
A guard is a condition that must hold before the action runs. Guards are evaluated against the analysis result, including your custom fields.
Each guard has three parts: a field (a dotted path into the analysis), an operator, and a value.
| Operator | Meaning |
|---|---|
eq | equals |
neq | does not equal |
exists | the field has a value |
gt | greater than |
lt | less than |
contains | the value contains this |
Guards are written as JSON in the action's disclosure panel, together with its parameters:
{
"guards": [
{ "field": "sentiment", "op": "eq", "value": "positive" },
{ "field": "custom_analysis.lead_quality", "op": "gt", "value": 7 }
],
"params": {}
}
A guard pointing at a custom analysis field resolves through its stored shape automatically, so custom_analysis.lead_quality reads the value rather than the wrapper around it.
The JSON is checked as you type for immediate feedback, and validated again server-side — the server's check is the authoritative one.
Guards are how you stop an action being a blunt instrument. "Ask for a review" with no guard asks everybody, including the caller who complained.
sentiment eq positivefixes that in one line.
8. Parameters
Three actions need to be told what to send before they can do anything useful. The page warns you when a required parameter is missing rather than letting you wait for a run that quietly does nothing.
| Action | What it needs |
|---|---|
| Payment link | Either link_id or slug of an existing payment link, or an amount — e.g. {"amount": 4500, "title": "Deposit"} |
| Send form | form_id or form_slug of a published form — e.g. {"form_slug": "intake"} |
| Share document | file_id of a document in your Vault — e.g. {"file_id": "…", "expires_days": 7} |
| Ask for a review | No parameters. Uses your review page. Add a guard on sentiment if you only want to ask after good calls. |
9. The approvals queue
The Approvals tab lists every action waiting on a person, newest first. Each row shows the action type, the caller, the call it came from, and what would be sent.
From a row you can:
- Open the call — read the transcript before deciding.
- Approve — the action runs now.
- Reject — the action is dismissed and logged.
The three counters at the top of the page — awaiting approval, completed, failed — are loaded when the page opens, not when you first click the tab, so a queue that is quietly accumulating work is visible immediately.
A queue nobody looks at is worse than no automation. If you enable outward actions in approval mode, put a daily check on someone's list.
10. Who can set what
| Client users | Sysevo staff | |
|---|---|---|
| Enable / disable actions | ✓ | ✓ (any account) |
| Set internal actions to automatic | ✓ | ✓ |
| Set outward actions to automatic | — (pinned to approval) | ✓ |
| See the approvals queue | Own account only | All accounts |
| Approve / reject | ✓ | ✓ |
Both read and write go through the same API, which re-derives the caller's role server-side rather than trusting the page.
11. Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| An action is greyed out with no switch | That action type has no handler wired up yet | The page names the reason in place of the controls |
| An action never fires | A guard is failing, or the confidence threshold is too high | Check the run log for skipped, then relax the guard or the threshold |
| Payment link / Send form / Share document does nothing | No parameters set | Supply the required parameter — the page warns before the first run |
| An outward action shows approval even though I chose automatic | Client accounts cannot run outward actions unattended | The server pins the mode; ask Sysevo if you need this changed |
| Actions run but the JSON I typed did nothing | The JSON was invalid | The panel shows a parse error under the box; the server rejects invalid guards too |
| Reviews are being requested after bad calls | No guard on sentiment | Add { "field": "sentiment", "op": "eq", "value": "positive" } |
| The failed counter is climbing | Handlers are erroring — often a deleted form, file or payment link | Open the queue and read the failure reason |
Related guides
- Call Analysis — the signals actions fire on
- Callbacks — the callback path, which is separate from this engine
- Conversations & Recordings — the calls behind each action
- Payments · Forms · Vault — what the outward actions send