Skip to main content
Use separate workflows to start calls and react to their results. Start with a tested outbound agent, permission to edit and activate workflows, and the Call Finished fields available in your workspace.

No answer, busy, or voicemail → WhatsApp

You need a connected WhatsApp number, an approved template, and an OpenCX contact with a phone number.
1

Filter the finished call

Create a workflow with Call Finished. Add conditions requiring Direction = Outbound and Disposition equal to no_answer, busy, or voicemail. Keep unknown, failed, declined, and canceled on separate branches so their handling is deliberate.
2

Send the template

Add Send WhatsApp Template. Set Contact ID from trigger.call.ticket.contact.id, choose your sending Phone Number and WhatsApp Template, and fill Template Variables in placeholder order: header, body, then buttons. Route a missing contact ID to review instead of sending.
3

Check the action result

Branch on the action’s Sent output. If false, record or surface Error for follow-up. Expected send failures can return sent: false without failing the whole workflow, so a completed run alone does not prove a message was sent. A successful send returns a WhatsApp Message ID; it does not prove delivery or that the recipient read it.
4

Test and activate

Test each branch with a contact you control. Confirm the recipient, template variables, message in the session, and action result. Check other active workflows and sequences so they do not also send the same follow-up for that attempt.

Schedule one callback at a chosen time

For an individually configured callback, combine Cron Trigger with Make phone call:
  1. Create a separate workflow for the callback and choose Cron Trigger.
  2. Set Cron Expression for the intended date and time. Set Run Limit to 1 so the workflow deactivates after its one scheduled fire.
  3. Add Make phone call. Set AI Agent, the customer’s Contact Number in international format, and Extra Instructions explaining the callback purpose.
  4. Confirm the next occurrence before activation, then activate the workflow. Configure result handling in a separate Call Finished workflow.
For example, 30 14 25 9 * means September 25 at 14:30 in the schedule’s timezone. Cron configuration without an explicit timezone uses UTC; do not assume the browser or customer’s local timezone. Convert the agreed customer time before entering the expression. This expression has no year: if the date has passed, its next occurrence is the following year. Always confirm the upcoming occurrence is the one intended. Run Limit counts scheduled fires, not successful answers. A failed or unanswered call does not automatically re-arm this one-time workflow. Choose an explicit retry policy based on the finished call. To cancel a callback before it fires, deactivate its workflow. To reschedule a pending callback, deactivate it, change the schedule, then reactivate it after checking the new time. Deactivation does not stop a call that has already started. For another callback after the one-shot workflow has fired, create a new workflow; editing the old schedule does not reset its fired count. For many customers with changing appointment times, keep the schedule and cancellation state in your CRM or scheduling system and invoke the Make Outbound Call API when each callback is due. Store the returned session reference with the appointment. This is a configured integration; OpenCX does not infer a callback appointment from call feedback alone.

Delays and session follow-ups

A Wait step pauses a workflow for an elapsed duration and supports up to 30 days per step. It is useful for a relative delay, but has no customer appointment date/time field. A session’s scheduled AI follow-up resumes session handling; scheduling one does not itself guarantee an outbound phone dial. Add an explicit Make phone call step in the flow that should dial. Avoid sending every failed callback straight back into the same call-starting flow. Store attempt limits and stop conditions in the system managing the journey so a no-answer result cannot create an endless retry loop.

Log the result in your CRM

Use Call Finished to send the call ID, session ID, contact reference, outcome, disposition, and end time to your CRM automation. Configure the task or note creation explicitly. Connecting a CRM alone does not create a callback task for every call. For Send Webhook, set the receiver URL, HTTP method, required authentication headers, and body fields. Check its Is Success and Status Code outputs. Your receiving integration must match the CRM contact and handle repeated delivery. See HubSpot phone tasks and notes for field mapping and verification.

Verify the journey