Skip to main content
The BlueBubbles SDK lets you schedule messages to be sent once at a specific future time, or repeatedly on an hourly, daily, weekly, monthly, or yearly cadence. All scheduling operations live on client.messages and communicate with the server’s built-in scheduler. Once registered, the server handles delivery autonomously — your app doesn’t need to stay connected.
Scheduled messages require BlueBubbles Server 1.4.0 or later. Upgrade your server before using any of the methods in this guide.

Schedule a one-time message

Use scheduleAMessage() to queue a message for delivery at a specific future timestamp. Set schedule.type to "once" and provide a milliseconds-since-epoch value in scheduledFor.
If a one-time scheduled message is missed — for example because the BlueBubbles Server was offline at the scheduled time — the message will not be sent. It will not be retried. Use recurring schedules if reliability across restarts matters for your use case.

Request body fields


Schedule a recurring message

Set schedule.type to "recurring" and add intervalType and interval to repeat the message on a defined cadence.

Recurring schedule fields

Interval type examples

When a recurring message fires, the server calculates the next scheduled time before sending the current message. This keeps the cadence consistent even if delivery takes a moment. If a recurring message is missed because the server was offline, it will not be sent for that interval — the next fire time is rescheduled to the next occurrence in the future.

List all scheduled messages

getScheduledMessages() returns all scheduled messages, including past ones. Use this to display pending schedules or audit delivery history.

Fetch a single scheduled message

Use getScheduledMessageById() to retrieve the details of one specific scheduled message by its numeric ID:

Update a scheduled message

updateAScheduledMessageById() replaces the payload or timing of an existing scheduled message. Pass the same request body shape as scheduleAMessage():

Delete a scheduled message

Use deleteScheduledMessageById() to cancel and remove a scheduled message before it fires:
Once deleted, the message will not be sent. There is no way to restore a deleted schedule — create a new one with scheduleAMessage() if needed.

Full example: morning standup reminder

This example schedules a daily 9 AM standup reminder in a group chat, then verifies the schedule was created: