# Run workflows on a schedule

> Use the Schedule Trigger to run n8n workflows every few minutes, daily or weekly, with the right timezone and without surprises.

Source: https://viralistic.nl/help/n8n/schedules

Reports, reminders, syncs and clean-up jobs all run on a timer. In n8n you do this with the **Schedule Trigger** node. This article shows how to set it up, how to use cron for unusual schedules, and how to avoid the classic timezone mistake.

## Set up a schedule

1. Create a workflow and add **Schedule Trigger** as the first step.
2. Under **Trigger Rules**, choose a **Trigger Interval**: seconds, minutes, hours, days, weeks, months or custom (cron).
3. Fill in the details for that interval.
4. Build the rest of the workflow and test it with **Execute workflow**. A manual run starts immediately, whatever the schedule says.
5. Click **Publish**. The schedule only runs once the workflow is published.

### Common examples

| You want                   | Interval | Settings                                                         |
| -------------------------- | -------- | ---------------------------------------------------------------- |
| Every 15 minutes           | Minutes  | Minutes Between Triggers: 15                                     |
| Every day at 7:30          | Days     | Days Between Triggers: 1, Hour: 7am, Minute: 30                  |
| Every Monday at 9:00       | Weeks    | Weeks Between Triggers: 1, Weekday: Monday, Hour: 9am, Minute: 0 |
| First of the month at 8:00 | Months   | Day of Month: 1, Hour: 8am, Minute: 0                            |

You can add several trigger rules to one node, for example Monday at 9:00 and Thursday at 14:00.

## Custom schedules with cron

For anything the standard intervals cannot express, choose **Custom (Cron)** and enter an expression. The five fields are minute, hour, day of month, month and day of week:

```text
0 9 * * 1-5        Weekdays at 9:00
*/30 8-18 * * 1-5  Every 30 minutes during office hours on weekdays
0 0 1 1,4,7,10 *   Midnight on the first day of each quarter
```

n8n also accepts an optional sixth field at the start for seconds. If you do not write cron every day, use a helper such as [crontab.guru](https://crontab.guru) to check your expression.

## Get the timezone right

A schedule that runs an hour early or late is almost always a timezone issue.

- **n8n Cloud:** set the instance timezone in your Cloud dashboard under Manage.
- **Self-hosted:** set the `GENERIC_TIMEZONE` environment variable, for example `Europe/Amsterdam`.
- **One workflow:** open the workflow menu (the three dots), choose **Settings** and change **Timezone**.

With a proper timezone such as `Europe/Amsterdam`, daylight saving time is handled for you.

## Things to know

- **Missed runs:** if n8n is offline when a run is due, that run is skipped by default. Recent versions add a setting for missed executions in the node's settings. Do not rely on a schedule for anything that must never be missed. Add a check, such as comparing with a "last run" date stored in a data table.
- **Overlapping runs:** if a run takes longer than the interval, the next one starts anyway. Keep heavy jobs on longer intervals, or process data in batches.
- **Busy minutes:** many workflows on the exact hour all start at once. Spread them out, for example 7:05, 7:10 and 7:15.
- **Quotas:** on paid Cloud plans, every scheduled run counts as an execution. A workflow every minute adds up to over 40,000 runs a month. Check whether you really need that frequency.

> **Tip:** For "only when something changed" jobs, a frequent schedule plus a check against stored data works well. Save what you already processed in a data table and skip it next time. See [Store data with Data Tables](https://viralistic.nl/help/n8n/data-tables).

## Example: weekly summary

```text
Schedule Trigger (Monday 8:45)  →  Google Sheets (read last week)  →  Summarise  →  Slack message
```

1. Trigger every Monday at 8:45.
2. Read last week's rows from a sheet or your CRM.
3. Summarise them, with a Summarize node or an AI step.
4. Post the summary to your team channel before the Monday meeting.

## Next steps

- [Receive data with webhooks](https://viralistic.nl/help/n8n/webhooks)
- [Store data with Data Tables](https://viralistic.nl/help/n8n/data-tables)
- [Error handling and alerts](https://viralistic.nl/help/n8n/error-handling)
