# How to Schedule Workflows in n8n

- Tool: n8n
- Difficulty: Beginner
- Time required: 10 minutes
- Compatibility: n8n 1.0+ (self-hosted, Docker, and n8n Cloud)
- Last updated: March 2026

## TL;DR

Schedule workflows in n8n by adding a Schedule Trigger node and configuring it with a cron expression or a simple interval like every 5 minutes or every hour. Activate the workflow to start the schedule. The Schedule Trigger replaces the older Cron node and supports both basic intervals and advanced cron syntax for precise timing.

## Why Schedule Workflows in n8n

Many automation tasks need to run on a recurring basis: syncing data every hour, sending daily reports, checking for new records every five minutes, or running cleanup jobs weekly. The Schedule Trigger node in n8n lets you define exactly when and how often a workflow executes. You can use simple intervals for basic timing or cron expressions for precise scheduling like every weekday at 9 AM. Once configured and activated, n8n automatically runs the workflow at the specified times without any manual intervention.

## Before you start

- A running n8n instance (self-hosted or n8n Cloud)
- A workflow you want to run on a schedule
- Basic understanding of time intervals and cron syntax
- The workflow must be activated for the schedule to work

## Step-by-step guide

### 1. Add a Schedule Trigger node

Open your workflow in the n8n editor. Click the plus button on the canvas and search for Schedule Trigger. Add it as the first node in your workflow. If your workflow already has a different trigger node, you can have multiple triggers in the same workflow. The Schedule Trigger node replaces the older Cron node, which is deprecated in n8n 1.0+. Connect the Schedule Trigger output to the first processing node in your workflow.

**Expected result:** A Schedule Trigger node appears on the canvas as the starting point of your workflow.

### 2. Configure a simple interval

Click the Schedule Trigger node to open its settings. Select the trigger interval type. For simple use cases, choose a preset interval: every minute, every 5 minutes, every 15 minutes, every hour, every day, or every week. This is the easiest way to set up recurring execution. For daily or weekly intervals, you can also set the specific time of day when the workflow should run.

```
// Schedule Trigger node — simple interval examples
// Run every 5 minutes:
//   Trigger Interval: Minutes
//   Minutes Between Triggers: 5

// Run every hour:
//   Trigger Interval: Hours
//   Hours Between Triggers: 1

// Run every day at 9:00 AM:
//   Trigger Interval: Days
//   Days Between Triggers: 1
//   Trigger at Hour: 9
//   Trigger at Minute: 0
```

**Expected result:** The Schedule Trigger node shows the configured interval. The workflow will run at the specified frequency once activated.

### 3. Use a cron expression for advanced scheduling

For more complex schedules, switch the Schedule Trigger to Cron mode. Cron expressions use five fields: minute, hour, day of month, month, and day of week. This lets you create schedules like every weekday at 8:30 AM or the first day of every month at midnight. Each field accepts numbers, ranges, wildcards, and step values.

```
// Cron expression format:
// ┌───────── minute (0-59)
// │ ┌─────── hour (0-23)
// │ │ ┌───── day of month (1-31)
// │ │ │ ┌─── month (1-12)
// │ │ │ │ ┌─ day of week (0-7, 0 and 7 = Sunday)
// │ │ │ │ │
// * * * * *

// Every weekday at 8:30 AM
// 30 8 * * 1-5

// Every Monday and Thursday at 6:00 PM
// 0 18 * * 1,4

// First day of every month at midnight
// 0 0 1 * *

// Every 15 minutes during business hours (9 AM - 5 PM)
// */15 9-17 * * *
```

**Expected result:** The Schedule Trigger node accepts the cron expression and shows the next scheduled execution time.

### 4. Set the timezone

By default, n8n uses the server's timezone for scheduling. If your server is in UTC but you want the workflow to run at 9 AM Eastern Time, you need to set the timezone. In the Schedule Trigger node settings, look for the Timezone field and select your target timezone from the dropdown. For self-hosted n8n, you can also set the GENERIC_TIMEZONE environment variable to change the default timezone for all workflows.

```
# Set default timezone for all workflows (environment variable)
export GENERIC_TIMEZONE=America/New_York

# Or in docker-compose.yml
environment:
  - GENERIC_TIMEZONE=America/New_York
  - TZ=America/New_York
```

**Expected result:** The Schedule Trigger node uses the specified timezone. A workflow set to run at 9 AM will trigger at 9 AM in the configured timezone.

### 5. Activate the workflow and verify execution

The Schedule Trigger only works when the workflow is activated. Toggle the Active switch in the top-right corner of the editor to activate it. After activation, check the Executions tab to verify that the workflow is running at the expected times. The first execution happens at the next scheduled interval after activation, not immediately. If you want to test the workflow first, use the Execute Workflow button for a manual run before activating.

**Expected result:** The workflow shows as Active. After the first scheduled interval passes, you see a new entry in the Executions tab with the workflow's results.

## Complete code example

File: `docker-compose.yml`

```yaml
# docker-compose.yml — n8n with timezone configuration for scheduling
version: '3.8'

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    ports:
      - '5678:5678'
    environment:
      # Timezone for scheduled workflows
      - GENERIC_TIMEZONE=America/New_York
      - TZ=America/New_York
      # General configuration
      - N8N_HOST=0.0.0.0
      - N8N_PORT=5678
      - WEBHOOK_URL=https://n8n.example.com/
      # Execution settings
      - EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
      - EXECUTIONS_DATA_SAVE_ON_ERROR=all
      - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true
      # Prune old executions to save disk space
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
    volumes:
      - n8n_data:/home/node/.n8n
    healthcheck:
      test: ['CMD', 'wget', '--spider', '-q', 'http://localhost:5678/healthz']
      interval: 30s
      timeout: 5s
      retries: 3

volumes:
  n8n_data:
    driver: local
```

## Common mistakes

- **Forgetting to activate the workflow after adding a Schedule Trigger** — undefined Fix: The Schedule Trigger only fires when the workflow is active. Toggle the Active switch in the top-right corner of the editor.
- **Using the deprecated Cron node instead of Schedule Trigger** — undefined Fix: The Cron node is deprecated in n8n 1.0+. Replace it with the Schedule Trigger node which has the same capabilities with a better interface.
- **Schedule fires at the wrong time because of timezone mismatch** — undefined Fix: Set GENERIC_TIMEZONE in your environment variables and verify the timezone in the Schedule Trigger node settings.
- **Expecting the workflow to run immediately after activation** — undefined Fix: The first execution happens at the next scheduled interval. If you set every hour and activate at 2:15 PM, the first run is at 3:00 PM.

## Best practices

- Always set the GENERIC_TIMEZONE environment variable to match your business timezone
- Test workflows manually with the Execute Workflow button before activating the schedule
- Use simple intervals for basic timing and cron expressions only when you need specific day/time combinations
- Monitor the Executions tab after activating a scheduled workflow to confirm it runs as expected
- Enable execution data saving so you can review the results of scheduled runs
- Prune old execution data to prevent database growth from long-running scheduled workflows
- Add error handling nodes so scheduled workflows send alerts on failure instead of failing silently
- Document your cron expressions in the workflow notes so other team members understand the schedule

## Frequently asked questions

### What is the minimum schedule interval in n8n?

The minimum interval is every minute. You can set the Schedule Trigger to run every 1 minute, but be cautious with high-frequency schedules as they increase server load and may hit API rate limits on connected services.

### Can I have multiple Schedule Trigger nodes in one workflow?

Yes. A workflow can have multiple trigger nodes including multiple Schedule Triggers. Each one fires independently, and any of them can start the workflow.

### Does the schedule keep running if I edit the workflow?

Yes. Editing a workflow does not deactivate it. The schedule continues running with the saved version. Your unsaved changes are not included until you save the workflow.

### How do I stop a scheduled workflow temporarily?

Toggle the Active switch off in the workflow editor. This deactivates all triggers including the Schedule Trigger. Toggle it back on to resume the schedule.

### What happens if n8n is down when a scheduled execution is due?

Missed executions are skipped. n8n does not retroactively run workflows for intervals that were missed while the server was down. The next execution occurs at the next scheduled interval after n8n restarts.

### Can I schedule a workflow to run only once at a specific date and time?

The Schedule Trigger is designed for recurring execution. For a one-time run, set a cron expression for the specific date and time, then manually deactivate the workflow after it runs.

### Can RapidDev help me set up complex scheduling logic in n8n?

Yes. RapidDev can design and implement advanced scheduling patterns including conditional scheduling, dependency chains, and failure recovery. Contact RapidDev for a free consultation.

---

Source: https://www.rapidevelopers.com/n8n-tutorial/how-to-schedule-workflows-in-n8n
© RapidDev — https://www.rapidevelopers.com/n8n-tutorial/how-to-schedule-workflows-in-n8n
