Contents

n8n First Workflow Tutorial: Send a Daily Weather Notification Automatically

In this lesson, we'll build a complete small project: get the Taipei weather forecast every morning at 7:00 and send it to your inbox as a short message.

[Schedule Trigger] ─▶ [HTTP Request] ─▶ [Edit Fields] ─▶ [Send Email]
   Every day 07:00       Get weather data    Format as text      Send notification

We'll use the free Open-Meteo API, which doesn't require registration.

Step 1: Create a workflow and trigger

  1. On the home page, select Create Workflow and rename it "Daily Weather Notification."
  2. Select Add first step, search for Schedule Trigger, and select it.
  3. Set:
    • Trigger Interval: Days
    • Days Between Triggers: 1
    • Trigger at Hour: 7am
    • Trigger at Minute: 0
Schedule Trigger settings: every day at 7am
Schedule Trigger: set Trigger Interval to Days and Trigger at Hour to 7am

Make sure n8n's time zone is set correctly (GENERIC_TIMEZONE=Asia/Taipei); otherwise, the workflow will run at the wrong time.

Step 2: Get weather data

  1. Add an HTTP Request node after Schedule Trigger.

  2. Set:

    • Method: GET

    • URL:

      https://api.open-meteo.com/v1/forecast?latitude=25.03&longitude=121.56&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=Asia%2FTaipei&forecast_days=1
  3. Select Execute step. The API response will appear in OUTPUT on the right:

Output data from the HTTP Request node
After HTTP Request runs, OUTPUT on the right shows the weather data returned by Open-Meteo
{
  "daily": {
    "time": ["2026-10-12"],
    "temperature_2m_max": [28.4],
    "temperature_2m_min": [22.1],
    "precipitation_probability_max": [60]
  }
}

(The values change every day.)

Step 3: Format a message

  1. Add an Edit Fields (Set) node.
  2. Select Add Field, name it message, and set the type to String.
  3. Switch the value field to Expression and enter:
Taipei weather for {{ $json.daily.time[0] }}:
High {{ $json.daily.temperature_2m_max[0] }}°C, low {{ $json.daily.temperature_2m_min[0] }}°C,
precipitation probability {{ $json.daily.precipitation_probability_max[0] }}%.
{{ $json.daily.precipitation_probability_max[0] >= 50 ? '☔ Remember to bring an umbrella!' : '☀️ You probably won’t need an umbrella.' }}

The content inside {{ }} is an expression. $json represents the output data from the previous node. The preview below shows the result immediately. For details on expressions, see the Expressions tutorial.

  1. Select Execute step to confirm the output.
Using expressions in the Edit Fields node to generate a message
Edit Fields: drag fields from INPUT on the left into the expression; OUTPUT on the right immediately shows the combined message

Step 4: Send an email

The simplest option is the Send Email node (using SMTP):

  1. Add a Send Email node.
  2. Under Credential, select Create new credential and enter your SMTP settings. For Gmail:
    • Host: smtp.gmail.com
    • Port: 465, with SSL/TLS enabled
    • User: your Gmail address
    • Password: your Google Account app password (first enable two-step verification, then create one in your Google Account security settings)
  3. Set:
    • From Email and To Email: your email address
    • Subject: Today's Weather
    • Email Format: Text
    • Text: drag the message field from INPUT, or enter {{ $json.message }}

You can also use the Gmail node (OAuth authorization), Telegram, LINE, or Discord node. Just replace the final node. For credential setup, see Credential management.

Step 5: Test the whole workflow

Select Execute workflow at the bottom. The nodes run in order, and a green checkmark and the number of output items appear in the upper-right corner of each node. Check your inbox for the notification.

Completed weather notification workflow
Successfully executed nodes have a green outline and checkmark; the connections show the number of items passed (1 item)

If a node shows a red error, open it to view the error message, fix the issue, and run the workflow again.

Step 6: Save and publish

  1. Select Save.
  2. Select Publish. The workflow will run automatically every morning at 7:00.

Review execution history

Switch to the Executions tab to see the records of daily runs. Open any execution to view the data for each node at that time.

n8n execution history list and a failed execution
Executions tab: the left side lists each run; the right side shows the status of each node at the time, with failed nodes outlined in red

Further exercises

  • Look up the weather for Taipei, Taichung, and Kaohsiung at the same time. (Hint: Add a node before HTTP Request that generates three items. n8n runs once for each item automatically. See Data structure and items.)
  • Send an email only when the precipitation probability is above 50%. (Hint: Use the If node. See Common core nodes.)

Updated October 12, 2026