Scheduling a campaign for later

Instead of sending the moment you click Send, you can schedule a campaign for a future time. The system holds the campaign in "scheduled" state and dispatches it via a 5-minute cron.

To schedule:
1. In the composer, open the Send panel
2. Switch the toggle from "Send now" to "Schedule"
3. Pick the date and time (defaults to your local timezone — confirm the timezone label is correct)
4. Click Schedule

What happens behind the scenes:
• The campaign moves to status "scheduled" with scheduledFor set to the chosen UTC instant
• Every 5 minutes a cron checks for due campaigns and atomically transitions them to "sending" inside a transaction (prevents double-sends if two cron firings overlap)
• Once dispatched, the campaign behaves identically to a regular send — recipients are resolved at dispatch time (so contacts tagged in the meantime are included)

To cancel or edit a scheduled send:
• Open the campaign before its scheduled time
• Click "Cancel schedule" — the campaign returns to draft, fully editable
• Re-schedule when ready

Notes:
• Recipient resolution happens at dispatch time, not at schedule time — late-tagged contacts will still receive
• Suppression list is also applied at dispatch time, so anyone who unsubscribes between schedule and send is excluded
• The 5-minute cron means actual send time can be up to 5 minutes after your scheduled time — don't schedule precisely for a webcast countdown