---
title: 'Schedule steps'
summary: 'One time rule inside a schedule. A schedule step is a single condition (a weekday window, a fixed date, an annual recurrence, or a date range) and a schedule matches when any of its steps matches.'
section: features
tags:
  - crud
  - telephony
  - routing
  - time
updated: '2026-06-17'
---

> A **schedule step** is one time rule inside a [schedule](schedules.md). Each step expresses a single condition (a weekday window, a fixed date, an annual recurrence, or a date range). A schedule is considered to match when **any** of its steps matches - steps combine with **OR** logic.

## Overview

You rarely create a schedule step directly. The normal entry point is the parent [schedule](schedules.md)'s edit page. A step expresses one condition: the current date or time falls inside this rule. Whether it matches is evaluated by the telephony platform when the call runs.

## What it does

Pick the step type by the shape of the recurrence:

| Type | What it matches | Typical use |
|---|---|---|
| **Days of the week** | A daily time window on selected weekdays. | Office hours: Mon-Fri 08:00-18:00. |
| **Fixed dates** | A specific calendar date (year-locked) with an optional time window. | A one-off closure: 2026-12-24. |
| **Recurring dates** | A month and day that repeats every year. | Annual holidays: Christmas every Dec 25. |
| **Specific periods** | A datetime range that may span multiple days. | Renovation week: 2026-04-01 to 2026-04-07. |

For an all-day rule, set a Fixed or Recurring date to the full day (00:00 - 23:59). A step only covers the time window you give it, so expressing "closed all day Christmas Eve" as 09:00-17:00 leaves the hours outside that window (midnight to 09:00 and 17:00 to midnight) outside the rule.

> [!NOTE]
> Steps are stored as a time of day and date, without a timezone. Matching against the current time is carried out by the telephony platform, which uses the PBX time rather than the caller's local time.

## See also

- [Schedules](schedules.md) - the parent record that wraps steps and is referenced by call flows.
- [Call flows](call_flows.md) - where a schedule is attached to gate a routing step.

```yaml fields
status:
  label: Status
  tab: General
  hint: 'When off, this step is ignored when the schedule is evaluated. Disable rather than delete to take a rule out temporarily.'
type:
  label: Type
  tab: General
  hint: 'The kind of time rule: Days of the week (repeating weekly window), Fixed dates (one-time specific dates), Recurring dates (dates that repeat every year), or Specific period (a precise date-time range). Your choice determines which date fields appear.'
start_time:
  label: 'Start time'
  tab: General
  hint: 'The time of day (HH:mm) when this step becomes active on matching days or dates.'
end_time:
  label: 'End time'
  tab: General
  hint: 'The time of day (HH:mm) when this step stops being active on matching days or dates.'
days_of_the_week:
  label: 'Days of the week'
  tab: General
  hint: 'Which days of the week this step applies to. Only visible when the type is Days of the week.'
fixed_dates_datepicker:
  label: 'Fixed dates'
  tab: General
  hint: 'Specific calendar dates when this step should be active. These dates do not repeat and are one-time only. Only visible when the type is Fixed dates.'
recurring_dates_datepicker:
  label: 'Recurring dates'
  tab: General
  hint: 'Dates that repeat every year (for example, holidays). Only the month and day are matched. Only visible when the type is Recurring dates.'
'specific_period_start,specific_period_end':
  label: 'Specific period'
  tab: General
  hint: 'A precise start and end date-time range for this step. Only visible when the type is Specific period.'
```
