A schedule fires on a pattern you set. Every firing records an event and runs each deployment bound to it.
A schedule is one or the other, never both:
cron — a recurring pattern, 0 4 * * * for 04:00 daily.at — a single absolute instant.A cron pattern is interpreted in the schedule's IANA time zone (Europe/London,
America/New_York). Set it, and daylight-saving transitions are handled for you: 0 9 * * *
stays 09:00 local across the change.
An at schedule has no time zone question — an absolute instant is already unambiguous.
A schedule generates its own payload, so this.payload on a scheduled run is the timing itself:
{
firedAt: "2026-08-16T04:00:00.000Z",
timezone: "Europe/London",
localTime: "2026-08-16 05:00:00",
cron: "0 4 * * *",
at: null,
nextRunAt: "2026-08-17T04:00:00.000Z", // null for a one-time schedule
runNumber: 42,
quota: 100,
runsRemaining: 58, // null when the quota is unlimited
manual: false // true when a person pressed Run now
}
Two controls shape the firing sequence itself:
3 and the next three firings are skipped, then the
schedule resumes normally. This is the "pause it for a bit" control.Quota counts firings, not runs. A firing that reached no deployment still spends one, because quota answers "how many times may this schedule fire", not "how many runs may it cause".
The manual Run now action fires the schedule immediately. It is free and deliberately outside the accounting:
manual: true, and the payload's manual field says so, so a flow can
tell a test firing from a real one.It is refused while the schedule is switched off — like the other triggers, a test that produced something a real firing no longer would would be misleading.
Unbinding the last deployment does not stop a schedule. It keeps firing, keeps recording events, and keeps spending quota — it simply starts nothing.
That is on purpose: an active schedule with no targets is now a visible misconfiguration. Its next run time is populated and its statistics show firings with no runs. Switch it off or delete it to actually stop it.
The schedule page shows the next firing time, computed from the pattern and the time zone alone. It deliberately ignores skips and an exhausted quota — it answers "when does this pattern next come round", not "will anything happen then".
| Switch | Off means |
|---|---|
| The schedule's own | The scheduler itself stops. No firing, no event, nothing |
| The binding's | This deployment is unwired; the schedule still fires and still records |