Run Workflows on a Schedule

Difficulty
2/10
Tags
EssentialsSchedule TriggerHTTP RequestIfAPIExpressions

Every workflow you've built so far starts the same way: you click "Execute." That's fine for testing. But it's not automation. Real automation runs without you.

The Schedule Trigger replaces Manual Trigger and makes your workflow run by itself, on a timer. Every 5 minutes. Every morning at 9am. Every Friday afternoon. You set the interval, activate the workflow, and walk away.

One of my favorite scheduled workflows checks wind conditions for wing foiling. Every morning at 9am, it fetches the weather forecast, checks if the wind is strong enough and blowing from the right direction, and pings me on Discord if conditions look good. Before that, I was manually checking three different weather apps every morning. Now I just wait for the notification.

In this lesson, you'll build a simplified version of the same thing: a daily surf check that fetches current weather conditions and decides if they're worth heading to the beach.

What you'll practice:

  • Replacing a Manual Trigger with a Schedule Trigger
  • Configuring time intervals (daily at a specific time)
  • Using an IF node to act on API data
  • Understanding when to use Schedule Trigger vs polling triggers

Your Task

  1. 1Copy the exercise below
  2. 2Paste into your n8n editor (Ctrl+V)
  3. 3Solve it — use hints if you get stuck
  4. 4Check the solution when done

Build a daily surf check. Your workflow should fetch the current weather every morning and decide if it's a good day for the beach.

  1. Add a Schedule Trigger node configured to run every day at 9:00 AM
  2. Add an HTTP Request node that fetches current weather from the Open-Meteo API (free, no API key required): https://api.open-meteo.com/v1/forecast?latitude=33.66&longitude=-118.00&current=temperature_2m,wind_speed_10m&wind_speed_unit=kmh&timezone=auto
  3. Add an IF node that checks two conditions (both must be true):
    • Wind speed is at least 15 km/h: {{ $json.current.wind_speed_10m }} >= 15
    • Temperature is at least 15 C: {{ $json.current.temperature_2m }} >= 15
  4. Execute the workflow to verify it returns weather data and routes correctly

The example uses Huntington Beach, CA. Replace the latitude and longitude with your favorite surf spot's coordinates.

Important: The Schedule Trigger only runs automatically when the workflow is active (toggled on in the top-right corner). During development, you test by clicking "Execute Workflow" as usual.

Get the exercise workflow

Create a free account to copy exercises into your n8n editor.

Hints

  1. Search for "Schedule Trigger" in the nodes panel
  2. The default interval is "Days" with an interval of 1. That's what we want
  3. Change the Trigger at Hour to 9 (for 9:00 AM)
  4. Add an HTTP Request node and connect it to the Schedule Trigger
  5. Paste the Open-Meteo URL into the HTTP Request URL field
  6. Click "Execute" on just the HTTP Request node to test it. You should see a current object with temperature_2m and wind_speed_10m
  7. Add an IF node after the HTTP Request
  8. Add two conditions (set combinator to AND):
    • First condition: {{ $json.current.wind_speed_10m }} — Number — is greater than or equal — 15
    • Second condition: {{ $json.current.temperature_2m }} — Number — is greater than or equal — 15
  9. Click "Execute Workflow" to test the full chain. The IF node should route to "true" or "false" based on current conditions

Explanation

Schedule Trigger vs Manual Trigger

Manual Trigger requires you to click a button. Schedule Trigger runs on its own, on a timer. That's the entire difference. And it's the difference between a workflow you use and a workflow that works for you.

The Simple Interval UI

You don't need to learn cron expressions. The Schedule Trigger has a dropdown with plain options: Seconds, Minutes, Hours, Days, Weeks, Months. Pick one, set the number, and optionally pick the exact time. "Every 5 minutes" or "every Monday at 9am" covers most real-world needs.

Fetch, Decide, Act

This workflow follows a pattern you'll use constantly: fetch data from an API, check if it meets your criteria, then do something about it. The IF node is the decision point. In a real workflow, you'd connect a notification node (Slack, Discord, Email) to the "true" output so you actually get alerted when conditions are good. That's exactly how the wing foiling checker works — same structure, just with a Discord message at the end.

When to Use Schedule Trigger

Use it when you don't have anything better. If you're checking for new emails, use the Gmail Trigger instead. It's purpose-built for that job. It checks efficiently and only fires when there's actually something new.

If you used a Schedule Trigger to poll Gmail every minute, you'd hit API rate limits fast. Google doesn't appreciate being asked "any new emails?" sixty times an hour.

Schedule Trigger is for when there's no dedicated trigger node for what you need: checking the weather, generating a daily report, sending a weekly digest, or running any workflow on a timer.

The Activation Gotcha

The most common mistake: building a scheduled workflow, testing it, and wondering why it never runs on its own. You have to activate the workflow. In the n8n editor, there's a toggle in the top-right corner. Until you flip it on, your schedule is just a plan, not an automation.

In newer versions of n8n, you also need to publish the workflow before activating it.

Copy the Solution

Paste into n8n with Ctrl+V to compare with your approach.

How was this lesson?

Get the solution workflow

Create a free account to copy solutions into your n8n editor.

Related Content

Continue your learning journey with these related lessons and guides: