# Schedule

Start a workflow at set times: every few minutes, every day at 9, or on a cron expression.

## Start a workflow

### Schedule

Start the workflow on a fixed schedule.

- **Frequency · Required**: How often it starts the workflow. Options: Every X Minutes, Every Hour, Every X Hours, Every Day, Every X Days, Every Week, Every Month, Cron Expression. Default: Every Hour.
- **Days · Required**: Run every N days (at the chosen hour). Options: 1 day, 2 days, 3 days, 4 days, 5 days, 6 days, 7 days, 10 days, 14 days, 15 days, 30 days. Default: 2 days. Shows when **Frequency** is **Every X Days**.
- **Hours · Required**: How many hours between runs. Options: 1 hour, 2 hours, 3 hours, 4 hours, 6 hours, 8 hours, 12 hours. Default: 1 hour. Shows when **Frequency** is **Every X Hours**.
- **Minutes · Required**: How many minutes between runs. Options: 1 minute to 59 minutes (59 options). Default: 5 minutes. Shows when **Frequency** is **Every X Minutes**.
- **Hour of the day · Required**: The hour at which the trigger fires. Options: Midnight to 11 pm (24 options). Default: Midnight. Shows when **Frequency** is **Every Day**, **Every X Days**, **Every Week** or **Every Month**.
- **Days of the week · Required**: The days of the week it runs on. Options: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday. Shows when **Frequency** is **Every Week**.
- **Day of the month · Required**: The day of the month it runs on (1–31). Options: 1 to 31 (31 options). Default: 1. Shows when **Frequency** is **Every Month**.
- **Cron Expression · Required**: Standard 5-field cron expression (such as '*/5 * * * *'). Default: 0/5 * * * *. Shows when **Frequency** is **Cron Expression**.
- **Timezone · Required**: Timezone used to interpret the schedule's time of day and weekday boundaries. Options: (GMT) UTC to (GMT+12:00) Pacific, Fiji (30 options). Default: (GMT) UTC.
- **Run on weekends (Sat, Sun) · Required**: When off, it runs only on weekdays (Mon–Fri). Off by default. Shows when **Frequency** is **Every Hour** or **Every Day**.

Nothing runs until you publish the workflow. **Test** runs it once with a sample time.

A later step can use its data, such as `{{trigger.cron_expression}}`, `{{trigger.day}}`, `{{trigger.day_of_week}}` and 9 more. See [Use data from earlier steps](https://docs.gorunner.io/build/use-data-from-earlier-steps).

For a step-by-step guide, see [Run on a schedule](https://docs.gorunner.io/build/run-on-a-schedule).

## Limits

- The shortest interval is 1 minute.

Not in your list? See [When an app isn’t here](https://docs.gorunner.io/apps/when-an-app-isnt-here#q-not-in-list).

## For developers

In the API, which calls apps pieces, Schedule is `pieceId: "schedule"`. Its trigger is `schedule` / `schedule`. [Get an app](https://docs.gorunner.io/api/apps/get-app) returns every field.

Source: https://docs.gorunner.io/apps/schedule
