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:- Create a separate workflow for the callback and choose Cron Trigger.
- Set Cron Expression for the intended date and time. Set Run Limit to
1so the workflow deactivates after its one scheduled fire. - Add Make phone call. Set AI Agent, the customer’s Contact Number in international format, and Extra Instructions explaining the callback purpose.
- Confirm the next occurrence before activation, then activate the workflow. Configure result handling in a separate Call Finished workflow.
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.