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

  1. A call completes and is analysed.
  2. The analysis produces signals — the outcome, the sentiment, action items, and every custom field you defined.
  3. For each action type you have enabled, the engine checks the confidence of the signal and evaluates any guards you set.
  4. If the action passes, it is either run immediately or queued for approval, depending on its mode.
  5. Every run is logged with its result: done, skipped, or failed.

2. Getting to the page

  1. Open the Voice AI hub.
  2. Click Call Actions in the left navigation (the lightning icon).
  3. The page opens at …/voice/call-actions.

The header carries three live figures — Awaiting approval, Completed and Failed — and two tabs:

TabWhat it does
ConfigureTurn action types on, set their mode, confidence and guards.
ApprovalsReview 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

ActionWhat it doesReaches the caller?Default mode
Create taskAdds a follow-up task from what was discussed.NoAutomatic
Set appointmentBooks the slot agreed on the call.NoAutomatic
Update contactWrites the caller's details into the CRM.NoAlways on
Send emailEmails the caller a follow-up.YesApproval
Payment linkIssues a payment link to the caller.YesApproval
Send formSends the caller a form to complete.YesApproval
Share documentShares a Vault document with the caller.YesApproval
Ask for a reviewAsks the caller for a review a couple of hours later.YesApproval

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

ModeBehaviour
AutomaticThe action runs as soon as the call is analysed and the guards pass.
ApprovalThe 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.

OperatorMeaning
eqequals
neqdoes not equal
existsthe field has a value
gtgreater than
ltless than
containsthe 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 positive fixes 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.

ActionWhat it needs
Payment linkEither link_id or slug of an existing payment link, or an amount — e.g. {"amount": 4500, "title": "Deposit"}
Send formform_id or form_slug of a published form — e.g. {"form_slug": "intake"}
Share documentfile_id of a document in your Vault — e.g. {"file_id": "…", "expires_days": 7}
Ask for a reviewNo 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 usersSysevo staff
Enable / disable actions✓ (any account)
Set internal actions to automatic
Set outward actions to automatic— (pinned to approval)
See the approvals queueOwn account onlyAll 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

SymptomCauseFix
An action is greyed out with no switchThat action type has no handler wired up yetThe page names the reason in place of the controls
An action never firesA guard is failing, or the confidence threshold is too highCheck the run log for skipped, then relax the guard or the threshold
Payment link / Send form / Share document does nothingNo parameters setSupply the required parameter — the page warns before the first run
An outward action shows approval even though I chose automaticClient accounts cannot run outward actions unattendedThe server pins the mode; ask Sysevo if you need this changed
Actions run but the JSON I typed did nothingThe JSON was invalidThe panel shows a parse error under the box; the server rejects invalid guards too
Reviews are being requested after bad callsNo guard on sentimentAdd { "field": "sentiment", "op": "eq", "value": "positive" }
The failed counter is climbingHandlers are erroring — often a deleted form, file or payment linkOpen the queue and read the failure reason

Was this page helpful?
Open Dashboard →