Scheduler powers four user-visible concepts: cron triggers (fire a flow on a schedule), broadcast scheduling (send a campaign at a specific time), Wait nodes (pause a flow until a condition), and reminders (one-off contact-specific events). Underneath, they share a single durable scheduling engine with millisecond precision, exactly-once semantics, and dynamic timezone resolution. Whether you set up a recurring "every Tuesday at 9am IST" or a one-off "send when the customer's appointment is 24 hours away", the same primitives apply.
Timezone handling is per-schedule and per-contact. A broadcast can target "9am in the recipient's local timezone", in which case Scheduler resolves each contact's timezone (from CRM field, IP geolocation fallback, or business default) and stages the send for the right wall-clock moment. A flow Wait can pause "until next Monday 10am IST" globally or "until tomorrow 9am in contact timezone" per contact. The engine indexes upcoming sends by minute-bucket per timezone so peak-hour batches do not stall.
Holiday calendars are a managed resource. We ship calendars for India (national + major state holidays), US, UK, EU countries, UAE, Singapore, Australia and 40 more. You can layer custom dates (your company off-days, marketing blackouts, religious observances per audience). When a schedule lands on a calendar date with "skip" rule, it shifts to the next valid moment. When it lands with "send" rule, it fires anyway. Per-channel rules — a billing reminder still goes out on a public holiday, but a marketing nudge does not.
Blackout windows are hard constraints. You declare "never send marketing between 9pm and 9am in recipient timezone" at the tenant level, and Scheduler enforces it across every flow, broadcast and reminder. A flow that hits a blackout pauses until the window opens. A broadcast scheduled inside a blackout shifts to the edge. This is the safety net against the 4:30am accident. For transactional messages (order shipped, OTP), you can declare exceptions explicitly — but the default is conservative.