Overview
Scheduled messages let you prepare now an outbound message that will be sent later in the same conversation. The module supports one message, sequences and recurrences in the selected timezone. It uses the same content contract and channel checks as immediate sending.
This feature is different from:
- Campaigns, which distribute content to an audience or multiple contacts.
- Follow-up, which automates a follow-up cadence and its conditions.
- Calendar, which manages appointments. A scheduled message does not create or change one.
Prerequisites
- The Scheduled messages feature enabled for the account.
- An existing conversation and a channel capable of carrying the content.
- Agents create and manage their own schedules. Managing someone else's schedules or changing account/inbox policy requires an administrator or the Manage scheduled messages permission.
- An administrator must complete the account policy before the first publication.
Step by step
- Open a conversation and compose the message as usual.
- Beside Send, in the conversation header, or in the right-side panel, open the calendar icon and choose Schedule once, Schedule a sequence, or Schedule recurring messages. The primary Send click still sends immediately.
- Enter a name and date. The timezone is prefilled from Message scheduling settings (the inbox's own timezone when it has one, otherwise Account defaults) and can be changed by searching for a city; the time shortcuts use that timezone. For each message, write text, drag in media/files, or open the interactive and template composer available for the channel. For a sequence, order the items and set each interval.
- For recurrence, choose the frequency and an ending: never, until a date or after a count. For a special pattern, open Advanced settings and start from one of the explained examples before editing the rule.
- Review the preview. It shows blockers, effective policies, channel capability and the next five occurrences.
- Confirm. The conversation draft is cleared only after creation succeeds.
- Open Scheduled messages in the main navigation to manage everything. For the current conversation, use the Scheduled messages tray in the side panel.
Suggested screenshot: split send button, preview dialog and global module with the detail open.
Settings & options
In Scheduled messages β Settings, select Account defaults or A specific inbox. On a new account, choose Apply recommended setup to fill a safe baseline, then review only the exceptions. Policies are grouped by goal and searchable by name. For each Inbox policy, choose Use account default or Customize for this inbox. Counters show customized, inherited, and pending policies before you save. An inbox can also inherit its timezone: below the field you see whether it comes from the account defaults or belongs to the inbox, and Inherit from the account again removes the inbox's own timezone.
Policies cover inbound replies, resolved conversations, misfires, failure retries, resume behavior, quiet hours, overlap, Inbox changes, sender, variables, daylight-saving time and materialization/recovery limits. The source of every value remains visible. If another operator saves first, reload the current version before applying your change again.
From schedule detail you can pause, resume, cancel, archive, retry or reconcile an uncertain result. For an occurrence, you can reschedule, skip, send now or retry. Always confirm the scope: this occurrence, this and future ones, or all future ones.
In Edit schedule you change the name, the time and the text of each plain-text message. That message keeps its attachments. Saving publishes a new version that applies to upcoming sends; messages already sent do not change and the published timezone is preserved. A paused schedule stays paused after the edit. Canceled, completed or archived schedules cannot be edited. The text is edited as plain text, exactly as it will be sent. A message with interactive content, a template or several blocks is shown read-only: to replace it, cancel the schedule and create a new one.
Bulk actions
Select individual schedules or Select this page, on desktop or mobile. Use Select matching schedules (up to 100) to include records from other pages with the current filters. Selection stays when you change pages or open a schedule; changing a filter or tab clears it. Only schedules you can manage are selectable, excluding drafts and archived schedules. The limit is 100 per action, and a notice appears when matching results exceed that limit.
The action menu only offers actions compatible with every selected schedule: pause active schedules, resume paused ones, cancel active/paused/needs-attention schedules, or archive those states plus completed/canceled schedules. Resume, cancel and archive require confirmation. Resume uses each schedule's own published policy, which can send overdue messages, skip them or move their dates; review the individual policies before confirming. Archive cancels pending deliveries, removes the schedules from active views and preserves their history.
Wait for the operation to finish before changing the selection. If a schedule changed or a message is already being sent, the entire bulk operation is rejected. Use Reload, select the schedules again and review the action; reload never repeats the operation automatically. Clear an unfinished matching selection to discard its pending result. If the connection fails before confirmation, the result is uncertain: reload and check the schedules before submitting another action.
Media and interactive content
Inside the scheduling dialog, choose Choose from library to reuse account media, Upload from device for a new file, or drag images, video, audio, and documents onto the message. Options follow the conversation: WhatsApp Cloud shows Cloud templates and interactives; WhatsApp Web shows WhatsApp Web interactive; a Coexistence conversation shows both composers, clearly separated. Other channels do not receive incompatible actions. Content templates also open their native composer when the channel supports them. After you apply content, preview keeps its type and body visible and offers Edit or Replace in the native composer without losing the name, date, timezone, recurrence, or policies. In a sequence, Duplicate message copies the complete content; technical details stay collapsed by default.
When you use Schedule again on a message that was already sent, the schedule sends each copied field exactly as it was sent: a fragment such as {{ contact.name }} in that message stays as text and is not resolved as a variable. This holds field by field (the text, the HTML body of an email, each template parameter): if you edit one of them in the schedule, only the edited field has its variables resolved, and the ones you did not change still go out as they were copied.
The field you edit is treated as your own text as a whole. If it still contains a {{ ... }} that came from the original message, that fragment is resolved as a variable too when the message is sent. Before saving, delete or rewrite anything that must not be interpreted.
In the detail view, expand Policies for message to inspect published values and the source of each setting. When resuming, the confirmation shows the first messageβs published behavior, which controls how the schedule resumes; this action does not change the published policy. To use another behavior, change Resume overdue deliveries in Message scheduling settings (account or inbox); a published schedule adopts the new value after it is edited and saved, unless the schedule or the message sets its own value. If the published policy is unavailable, the Resume button is disabled and explains why right below it.
In Scheduled messages, search checks the schedule name only; it does not search a contact or message content. Use the compact status filter for a quick view, then open More filters to combine the source inbox, channel, creator, current assignee, public conversation number, and next-send period. Each selector keeps its field name visible, so creator and current assignee remain distinguishable even when they show the same person. Inbox and people selectors use the options available to your account. If loading those options fails, choose Retry options; a valid ID from a saved link stays selected as unavailable instead of being removed.
The conversation field is the public conversation number shown in the inbox, not a contact ID. Its value and the inbox, creator, and assignee IDs must be whole numbers greater than zero. Invalid IDs, invalid dates, or a period ending before it starts are highlighted and do not reload the list until corrected or cleared. Saved next-send bounds are checked at their exact instant, including microseconds.
Changes in the filter form are drafts until you choose Apply filters. The result count and removable chips describe the filters already applied in the URL. If a saved link has an invalid filter and you correct it, results remain hidden until you apply that correction; finish any highlighted fixes first. A draft stays available when you change schedule tabs or pages; closing the mobile filter panel without applying restores the values from the URL. Removing a chip removes only that applied filter; Clear filters keeps the current tab and unrelated link settings. The next-send period filters the schedule's next occurrence, not its creation date. Its inclusive day boundaries use the account time zone, including daylight-saving transitions. If a saved link preserves a narrower time than the displayed day, choose Use selected day for that limit to intentionally replace only that limit with the full selected day.
Use cases
- Confirm a follow-up promised to the customer for tomorrow.
- Send a short instruction sequence in the same support conversation.
- Repeat a weekly reminder without creating a campaign.
- Schedule an approved template for a WhatsApp message outside the session window.
Tips, limits & best practices
- The target is always one existing conversation; audience, segment and multi-contact targets are rejected.
- Up to 500 occurrences per schedule are materialized within a 30-day horizon. Later occurrences are created progressively.
- Attachments remain linked to the schedule. Do not delete the source file while future sends exist.
- The channel is checked during preview and again when due. Disconnects, opt-outs, closed windows, unapproved templates or removed sender access may block a later send.
- Notifications are exception-only: failures or Needs attention. Normal occurrences do not create an alert each time.
- An uncertain provider effect is never retried blindly. Use Reconcile after checking the provider.
Troubleshooting
- The schedule option is missing: check the account feature and your permission.
- Preview reports an incomplete policy: an administrator must complete the account setting or the missing value at the indicated scope.
- The channel is blocked: open the blocker details and correct connection, window, template, attachment, opt-out or sender access.
- Saving or an action returns a conflict: another operator or job changed the record. Reload its detail and repeat the intention against the current version.
- The dialog shows another timezone, such as UTC: check the timezone in Scheduled messages β Settings (account and inbox) and save. An existing schedule keeps the timezone it was published with.
- An occurrence Needs attention: verify the provider outcome, then choose Reconcile β Sent, Failed or Canceled.