Customers & Automation
Assistant Scheduled Sends
Last updated 8 July 2026
Assistant Scheduled Sends
TL;DR
- Assistant scheduled sends currently apply to win-back campaigns only.
- The send waits for 30 seconds and shows Cancel and Send now actions.
- Closing the browser tab or backgrounding the mobile app does not drop a persisted win-back send.
- OpenChair rechecks eligible clients at send time, so clients who rebook during the window are dropped from the send.
Assistant scheduled sends are the server-backed queue behind the 30-second cancel window for Assistant win-back campaigns. The queue gives operators a short undo window while still protecting the send if the tab closes or the mobile app backgrounds. The current scheduled action is win-back through Assistant.
Where to find it - Web: Assistant chat, when Assistant prepares a win-back action. Mobile: Assistant tab, when Assistant prepares a win-back action.
How scheduled win-back sends work
Scheduled win-back sends wait 30 seconds before delivery. The client runs a local timer for fast feedback, and OpenChair also writes a pending row to the server-side scheduled-send queue.
- Review the Assistant win-back draft and audience.
- Send the win-back action.
- OpenChair shows Sending win-back messages in 30s.
- Click or tap Cancel to stop the pending send.
- Click or tap Send now to send immediately.
- If neither action is used, OpenChair sends after the 30-second window.
If OpenChair cannot persist the server-side queue row, the app falls back to the local 30-second timer and logs the persistence failure.
What happens if the app closes
If the browser tab closes or the mobile app backgrounds, the persisted scheduled send remains pending on the server. The cron worker checks due rows and runs the win-back send close to the scheduled time.
The worker re-resolves the win-back audience before sending. A client who rebooked after the operator clicked Send, or became ineligible before the queue fired, is excluded from the final send.
What the queue sends
The scheduled-send queue currently supports the Assistant win-back action. The stored payload includes the edited SMS body, the Assistant prompt, and the lapsed-client window used to resolve targets.
| Field | What it controls |
|---|---|
| templateBody | The edited message body that will be sent. |
| prompt | The Assistant prompt context for the action. |
| daysSinceLastBooking | The lapsed-client window used when targets are rechecked. |
| scheduledFor | The time the row becomes due for sending. |
Rows can be pending, cancelled, executed, or failed. Cancelling is idempotent, so calling cancel after a row has already executed simply has no effect.
Delivery safeguards
Assistant scheduled sends are designed to avoid duplicate win-back messages. If the local timer and server worker race each other, the win-back eligibility filters run again before delivery.
| Safeguard | How it works |
|---|---|
| Cancel window | Cancel flips a pending row to cancelled before it sends. |
| Target recheck | Eligible clients are re-resolved at fire time. |
| Deduplication | Customers already sent to today or inside the reconnect wave window are excluded. |
| Quiet hours | Do-not-disturb quiet-hours errors release the worker lock so the next tick can retry. |
| Row lock | The worker locks one due row at a time with a short lock window. |
Who can use this
Scheduled win-back sends are part of Assistant actions for PRO venues. They inherit the same access as the win-back action.
| Role | Access |
|---|---|
| Owner | Can send eligible Assistant win-back actions and use Cancel or Send now during the 30-second window. |
| Manager | Can send eligible Assistant win-back actions where their Assistant permissions allow it, then use Cancel or Send now. |
| Team | Does not manage win-back scheduled sends. |
Common mistakes
Closing the app and expecting the send to stop. Closing OpenChair does not cancel a persisted scheduled send. Use Cancel during the 30-second window.
Assuming the preview audience is frozen. The final audience is rechecked at send time. A client can drop out if they rebook or become ineligible before the queue fires.
Using scheduled sends for every Assistant action. The server-side queue currently backs win-back sends, not every Assistant action.
Troubleshooting
| Issue | Solution |
|---|---|
| I sent a win-back by mistake | Use Cancel in the Sending win-back messages in 30s toast before the timer finishes. |
| The send happened after I closed OpenChair | That is expected for a persisted scheduled send. The cron worker protects the send from being lost. |
| Fewer clients received the message than the preview showed | Check whether clients rebooked, were recently messaged, opted out, or fell inside the reconnect wave window before the send fired. |
| The send did not fire immediately at 30 seconds | The server worker picks due rows up close to the scheduled time. Quiet hours can also delay retries. |
FAQ
What are Assistant scheduled sends?
Assistant scheduled sends are the 30-second queued send window used by Assistant win-back campaigns before messages are sent to eligible lapsed clients. The queue exists so the send can still complete if the app closes.
How do I cancel a scheduled win-back send?
Use Cancel in the Sending win-back messages in 30s toast before the timer finishes. After the send executes, cancelling the pending row no longer changes the result.
Does a win-back still send if I close OpenChair?
Yes. OpenChair persists the pending send server-side so the cron worker can send it after the 30-second window if the tab closes or the mobile app backgrounds.