/Docs

Flag Scheduling

Schedule a flag to enable or disable on a specific date and time, per environment. Each environment carries its own schedule, so you can ramp dev ahead of production without coupling the two.

What the schedule controls

A schedule flips the environment-level enabled toggle on the flag — exactly the same toggle the Run and Pausebuttons drive. Targeting rules, traffic splits, and variations are untouched. When the schedule fires, the flag turns on (or off) in that environment; it does not change the flag's global status, variations, or any other environment.

Schedule enable

On the ruleset view for an environment, open the schedule menu next to the Run / Pause button and pick Schedule enable…. Pick a date on the calendar, set the hour and minute, and click Done to confirm. Use Reset to clear your selection.

The fire moment is always interpreted in your browser's local timezone. The detected zone appears as a caption below the date input (for example, “Times in your local time — Asia/Dhaka”), so you can confirm what was used without picking it manually. Teammates in other regions opening the same flag see the same fire moment shown in their own local time.

Schedule disable

The Schedule disable… menu item works the same way, but flips the toggle off. You can attach a disable schedule even to a flag that is already running — the cron job will flip it off when the moment arrives.

The end time can be absolute or relative:

  • Specific date — a fixed moment on the calendar, shown to every viewer in their own local time.
  • Relative to enable— “N days after enable, at HH:mm.” If you reschedule the enable time later, the relative end recomputes automatically.

Editing and cancelling

When an environment has an active schedule, the env card shows a Scheduled chip on the meta line and a banner below it summarising the next moment the schedule fires. Two actions are always available:

  • Edit schedule… — opens the modal pre-populated with the current values so you can shift the date or time without having to cancel and re-create.
  • Cancel schedule — clears the enable and disable fields. The flag stays in its current on/off state; cancelling does not flip it.

While a schedule is active

When an environment has a future enable schedule, the Run toggle on that environment is disabled until the schedule fires or is removed. This avoids the case where one person sets a schedule for next Monday and another teammate, not realising, clicks Run on Friday.

Clicking the disabled toggle opens a small popover with a Remove schedule action. Choosing it cancels the pending schedule and immediately re-enables the toggle so you can flip the environment on right now. If you only want to shift the moment rather than launching immediately, use Edit schedule… instead.

The guard runs at the API as well as the UI. Calling POST /flags/{flagId}/envs/{envId}/run while a future schedule is active returns HTTP 409 with an error code of schedule_conflict. Cancel the schedule first, or wait for it to fire.

Missed schedules and catch-up

Schedules fire from a cron job that runs every minute. If the platform is briefly unavailable, the cron catches up on any overdue schedules within a 60-minute window. Anything older than that is marked missed: the schedule does not fire, the scheduler is notified, and the flag stays in whatever state it was in. You can then decide whether to reschedule.

Info
Catch-up exists so a brief outage does not silently drop schedules. Anything older than 60 minutes is intentionally not auto-fired — at that point the original intent is usually stale and the safer default is to surface it to the owner.

Notifications

When a schedule fires successfully, the scheduler gets two notifications: an email and an in-app notification in the bell-icon dropdown in the top bar. If a schedule fails or is missed, the scheduler is notified with the reason — most often a permission change between scheduling and firing if your org has strict permission mode enabled.

Per-environment independence

A flag with three environments can have three independent schedules, one per env. Each row in the ruleset view (one per env) renders its own chip, banner, and menu, and the cron job processes each row independently. A failure on one env never blocks another.

Where schedules show up across the app

The Flags list page has a Schedule column that summarises the next upcoming schedule across all environments for a flag (e.g. dev launches in 2h). Hover the pill to see the full per-env breakdown.

Programmatic API

The same endpoints that drive the UI are available for automation:

  • POST /api/orgs/{org}/projects/{project}/flags/{flag}/envs/{env}/schedule to create or update a schedule.
  • DELETE /api/orgs/{org}/projects/{project}/flags/{flag}/envs/{env}/schedule?scope=enable|disable|both to cancel.

See API Reference for request bodies and response shapes.