Node: Schedule Message
How to use the Schedule Message node to send a message to the contact at a future date or time from a workflow.
The Schedule Message node queues an outbound message to the contact to be sent at a future point in time, instead of sending it immediately. It's how you build reminders, follow-ups, or deferred messages inside a workflow.
When to use it
- For reminders ("I'll write again tomorrow if you haven't replied"), post-sale follow-ups, or reactivation messages scheduled ahead of time.
- When the send shouldn't go out at the moment of the trigger, but later.
Requirements
- The message (
content) can't be empty. - A destination conversation must be resolvable based on the chosen channel mode (see below).
- Message variables (
{{contact.first_name}}, etc.) are resolved at scheduling time, not when the message actually sends — they reflect the contact's state at that moment, not whatever it becomes hours or days later.
Configuration
- Send timing:
- Relative mode (
mode = relative): sends N minutes after being scheduled (delay_minutes). - Absolute mode (
mode = absolute): sends at an exact date/time (at). If that time has already passed by the moment the node runs, the message is sent immediately instead of being dropped.
- Relative mode (
- Channel mode (
channel_mode):last(default): sends on the trigger's own conversation.specific: sends on an existing (or new) conversation on the chosen channel.start_new: always creates a fresh conversation on the chosen channel — designed exactly for scheduled sends where there may not be an open conversation at that time.
- Channel (
channel_id): required when the mode isspecificorstart_new. - Message (
content, required): the text to send; supports variables.
Example
A workflow fires when an agent closes a sales conversation without the contact confirming payment. The Schedule Message node is set to relative mode with delay_minutes = 1440 (24 hours) and channel_mode = start_new on the contact's WhatsApp channel, with the text "Hi {{contact.first_name}}, were you able to complete the payment? Let me know if you have any questions."
Tips
- Use
start_newwhen you can't guarantee an open conversation will exist at the actual send time (e.g. multi-day schedules). - If you schedule in absolute mode with a date that's already past, the system doesn't discard the message — it sends it right away instead of silently dropping it.
Troubleshooting
- "Empty message content": the Message field was left blank.
- "Invalid schedule time":
delay_minutes(relative mode) orat(absolute mode) is missing, or the value isn't valid. - "channel_mode=last but the trigger did not provide an open conversation": switch to
specificorstart_newand set a channel —lastmode needs an active conversation on the trigger.
Related articles
-
Build your first workflow
Omnifox workflows automate your operation: a trigger starts the automation and action nodes do the work. Build a welcome message in minutes.
-
Workflow triggers catalog
Learn which events can start a workflow automatically in Omnifox.
-
Action nodes available in workflows
Discover the actions a workflow can run automatically.
-
Conditions and branching (if/then) in a workflow
Make your flows take decisions and follow different paths based on each contact data.
-
Ready-to-use workflow templates
Start your automations in minutes from prebuilt flows you can customize.