三種觸發:Manual / Schedule / Event
workflow 要跑,總得有個「開頭」告訴 n8n「什麼時候開始」。這章一次把三種主要的 Trigger 類型講白:Manual(你按按鈕才跑)、Schedule(時間到自動跑)、Event(外部發生事情就跑)。順便把 Schedule 最容易踩的時區坑講清楚,免得你排半天沒動靜。
為什麼要搞懂三種觸發
到第 8 章為止,你已經拉出一條「Schedule Trigger + Google Calendar + Slack」的 workflow,也知道第 9 章資料怎麼從節點流到節點。但仔細想想:workflow 是「什麼時候」開始跑的?
- 你按 Execute Workflow 按鈕才跑?
- 還是每天 8:00 自動跑?
- 還是一收到某封 Gmail、或某個 URL 被打,才跑?
這三種答案對應到 n8n 的三大類 Trigger 節點——每一條 workflow 一開頭一定要選一個(沒有 Trigger 節點的 workflow,n8n 根本不知道什麼時候要幫你辦事)。挑錯 Trigger 的後果很直接:明明想每天自動跑,卻放了 Manual Trigger,於是「怎麼沒動?」變成一週後才發現。這章就是把三種類型攤在你面前,讓你一次挑對。
三大類 Trigger 一次看完
n8n 節點抽屜的「On app event」與「On a schedule」分類底下有幾十個 Trigger 節點,但骨子裡就是三種類型的變形:
| 類型 | 誰決定 workflow 跑 | 典型節點 | 什麼時候該選 |
|---|---|---|---|
| Manual(手動) | 你自己按按鈕 | Manual Trigger(When clicking "Execute workflow") | 開發/測試階段、需要人工按一下才要跑的臨時任務 |
| Schedule(排程) | 時間到就跑(Cron) | Schedule Trigger | 每天/每小時/每週固定時間要跑的固定任務(日報、備份、對帳) |
| Event(事件) | 外部發生事情就跑 | Webhook、Gmail Trigger、Slack Trigger、Sheets Trigger、GitHub Trigger、RSS Feed Trigger…… | 要即時反應外部事件(收到郵件、表單被填、程式碼被 push、Sheet 被改) |
三種類型在同一條 workflow 裡可以並存——後面第 6 節會講怎麼一條 workflow 同時有 Schedule + Manual,白天自動跑、需要時你也能手動點一下。
Manual Trigger:開發階段的最好朋友
Manual Trigger 是所有 Trigger 中最簡單的——它沒有任何參數,就一個節點放在那。用法就一句話:右上角按 Execute Workflow,這條 workflow 就從頭跑一次。
什麼時候該用
- 開發/測試時:拉好 workflow 想馬上看效果,Manual 最快。按一下、看結果、改節點、再按一下。
- 一次性任務:例如「幫我把這個月的所有客戶名單 export 出來」——一次性的批次工作,設 Schedule 太麻煩,Manual 按一下就好。
- 要人工把關的流程:例如「主管檢查完報表才發出去」,這種需要人為判斷的場合,Manual Trigger 讓「按下按鈕」變成一種簽核動作。
什麼時候不該用
- workflow 已經上線、要 24 小時自動跑:這時候 Manual 就是災難,因為你不按就永遠不會跑。上線後主要 Trigger 應該換成 Schedule 或 Webhook。
- 需要外部系統打進來(例:Line Bot 收訊息):這種 Manual 完全做不到,要走 Webhook / Event Trigger。
Schedule Trigger:像 Cron 一樣定時跑
Schedule Trigger 是自動化最常用的 Trigger——你設一個時間規則,n8n 就會按規則到點自動幫你跑 workflow。適用範例:早上 8:00 把行事曆推 Slack、每小時同步一次資料庫、每週一 9:00 寄週報。
Trigger Interval 有幾種設法
| Trigger Interval | 意思 | 你要填什麼 |
|---|---|---|
| Seconds | 每 X 秒跑一次 | Seconds Between Triggers(例:30 秒) |
| Minutes | 每 X 分鐘跑一次 | Minutes Between Triggers(例:15 分鐘) |
| Hours | 每 X 小時跑一次;可指定「跑在第幾分」 | Hours Between Triggers、Trigger at Minute |
| Days | 每 X 天跑一次;可指定「跑在幾點幾分」 | Days Between Triggers、Trigger at Hour、Trigger at Minute |
| Weeks | 每 X 週跑一次;可指定星期幾 | Weeks Between Triggers、Trigger on Weekdays(勾 Mon/Tue/…)、Trigger at Hour/Minute |
| Months | 每 X 個月跑一次;可指定日期 | Months Between Triggers、Trigger at Day of Month、Trigger at Hour/Minute |
| Custom (Cron) | 用 Cron 表達式寫更複雜的規則 | Expression(例:0 8 * * 1-5) |
最常用的兩種設定範例
每天早上 8:00 跑:Trigger Interval 選 Days、Days Between Triggers 填 1、Trigger at Hour 填 8、Trigger at Minute 填 0。
週一到週五 9:30 跑:Trigger Interval 選 Weeks、Weeks Between Triggers 填 1、Trigger on Weekdays 勾 Mon/Tue/Wed/Thu/Fri、Trigger at Hour 9、Trigger at Minute 30。或直接走 Custom (Cron) 填 0 30 9 * * 1-5(六欄位:秒 分 時 日 月 週),一行搞定。
秒 分 時 日 月 週。到處抄來的 0 8 * * *(五欄位)貼進 n8n 會被當成不同意思,甚至直接報錯。要記得補一個秒欄,例如「每天 8:00」應該寫 0 0 8 * * *。Schedule 的時區怎麼設
時區設定有兩個層級,會互相蓋。搞清楚你在哪一層改,是省下半天疑惑的關鍵:
| 層級 | 影響範圍 | 怎麼改 |
|---|---|---|
| Workflow 層(每條 workflow 各自設) | 只影響這條 workflow 的 Schedule Trigger 判斷時間 | 打開 workflow → 右上角 Settings(或 Ctrl+,)→ Timezone 選 Asia/Taipei |
| Instance 層(整台 n8n 全域) | 整台 n8n 上所有沒特別設 workflow 層時區的 workflow 都吃這個 | 環境變數 GENERIC_TIMEZONE=Asia/Taipei;同時建議把 Node.js 的 TZ=Asia/Taipei 也一起設,兩者要一致,否則 new Date() 之類的顯示會跟排程判斷差 8 小時(要動 server 設定,一般人請找 IT) |
優先順序:Workflow 層 > Instance 層 > 預設 UTC。也就是說:
-
Woow n8n 的 Instance 層可能已經設好了
Woow n8n 的管理員通常已經把
GENERIC_TIMEZONE設成Asia/Taipei,這樣所有人設 8:00 就是台灣的 8:00。你可以先建一個測試 workflow,設「每分鐘跑一次」,看 Executions 頁面時間對不對——如果對,代表 Instance 層 OK,之後你根本不用管時區。 -
不對的話,就設 Workflow 層
打開 workflow 右上角三點選單 → Settings → 中間有個 Timezone 下拉,選
Asia/Taipei。設完 Save。 -
每一條有 Schedule Trigger 的 workflow 都要確認
Workflow 層的設定是各自獨立的:即使你設好了 workflow A,新開一條 workflow B 一樣要再設一次(如果 Instance 層是 UTC 的話)。
Event Trigger:外部發生事情才跑
Event Trigger 是最有魔法感的一類:不是你在動,是外部世界在動。有人填了表單、有郵件進來、Sheet 被改、GitHub 有人 push——這些事發生,n8n 就自動跑。常用的 Event Trigger 節點:
| 節點 | 什麼事會觸發 | 典型場景 |
|---|---|---|
| Webhook | 你給的 URL 被 HTTP 打 | Line Bot 收訊息、Typeform 提交、HA 自動化打進來、第三方系統回 callback |
| Gmail Trigger | Gmail 收到新郵件(可設 label / 寄件人過濾) | 客戶信一進來就抓資料建單、發票郵件自動存 Drive |
| Slack Trigger | Slack 有新訊息/@我/新頻道/表情反應 | @bot 就查資料、看到某關鍵字自動回覆 |
| Google Sheets Trigger | Sheet 新增列或某列改動 | 表單登記就自動發歡迎信、報價表改了就通知業務 |
| Airtable Trigger | Airtable 新記錄或改動 | CRM 有新客戶就開 Slack 頻道、任務狀態變 Done 就寄結案信 |
| GitHub Trigger | push / PR opened / issue 建立 / release | PR merged 自動部署、有 issue 就通知團隊 |
| RSS Feed Trigger | RSS 有新項目 | Blog 有新文自動貼 Slack、新聞網站有更新就寄摘要 |
| Chat Trigger | n8n 的 chat 介面被輸入訊息 | 做內部 chatbot / AI Agent 助手(ch22 之後會用到) |
Webhook 是 Event Trigger 之王,能接任何用 HTTP 打進來的系統——這是第 22 章整章專講的東西,這裡先知道它存在就好。
Trigger 節點 vs Poll 節點——為什麼 Gmail 收信慢半拍
Event Trigger 底下其實還分兩種底層機制,決定它反應多快:
| 機制 | 怎麼運作 | 反應速度 | 誰是這種 |
|---|---|---|---|
| Push(Webhook 型) | 對方系統發生事情就主動 HTTP 打你的 URL | 即時(幾百毫秒) | Webhook、GitHub Trigger、Slack Trigger(有部分走 events API) |
| Poll(輪詢型) | n8n 定時去對方 API 問「有沒有新東西」 | 間隔多久看設定,通常 1 分鐘~1 小時 | Gmail Trigger、Google Sheets Trigger、Airtable Trigger、RSS Feed Trigger |
這個差別很重要:Gmail Trigger 不是收到郵件就馬上跑,它是 n8n 每 X 分鐘去 Gmail API 問「上次問完到現在有新信嗎」。你設 poll interval = 5 分鐘,新郵件進來最壞情況要等 5 分鐘 workflow 才啟動。想更快就把 poll interval 縮到 1 分鐘(Community 版最短限制),但 API 呼叫次數會增加、可能撞到對方的 rate limit。
一條 workflow 能有多個 Trigger 嗎?可以
n8n 允許一條 workflow 上放多個 Trigger 節點,它們並列(不是串聯)——任何一個被觸發,都會跑同一條下游 workflow。這是很好用的 pattern:
Pattern 一:Schedule + Manual(最常見)
每天 8:00 自動發日報,但你臨時想「現在馬上再發一次」——加一個 Manual Trigger 跟 Schedule Trigger 並列,你按 Execute Workflow 就能立刻跑一次。canvas 上會長成這樣:
[Schedule Trigger] ─┐
├──▶ [下游節點 A] ─▶ [下游節點 B]
[Manual Trigger] ─┘
Pattern 二:Webhook + Schedule(雙保險)
正常情況靠 webhook 即時反應,但為了防 webhook 漏掉,額外加一個 Schedule 每小時掃一次資料庫「有沒有漏處理的」,補跑一遍。
Pattern 三:多個 Event Trigger 匯流
「Gmail 或 Slack 收到訊息都要建同一種單」——放 Gmail Trigger + Slack Trigger 並列,下游共用一組處理邏輯,兩邊來的資料都會走同一條路。
動手做:把既有 workflow 從 Manual 換成 Schedule
假設你在第 8 章做的 workflow 一開始用 Manual Trigger 測試(合理,測試階段就該用 Manual),現在測完想改成每天早上 9:30 自動跑:
-
打開那條 workflow
從左側 Workflows 清單點進去。目前一開頭是 Manual Trigger 節點,右邊接著你原本的下游。
-
刪掉 Manual Trigger 節點
在 Manual Trigger 節點上右鍵→ Delete(或選中它按 Delete / Backspace)。原本連到下游的線會斷掉,下游第一個節點變成「浮」在 canvas 上,別緊張。
-
加一個 Schedule Trigger
Canvas 左上角按 +(或空白處按 Tab)叫出節點抽屜 → 選 On a schedule → 「Schedule Trigger」。它會落到 canvas 上。
-
設 Schedule Trigger 的時間
點開節點面板:Trigger Interval 選
Days、Days Between Triggers1、Trigger at Hour9、Trigger at Minute30。看節點底下顯示的 Next execution,確認括號內時區是Asia/Taipei(不是就照上一節去設)。 -
把 Schedule Trigger 連到原本的下游
拖 Schedule Trigger 右邊的圓點,連到下游第一個節點左邊的圓點。連線成功會是實線。
-
Save + 打開右上 Active toggle
按 Ctrl+S 存檔,然後右上角 Active toggle 拉成綠色。這一步最容易忘——Active OFF 的 Schedule 永遠不會自動跑,你哭到明天也沒用。
-
驗證:按一次 Execute Workflow 手動跑
Active 之後,你按 Execute Workflow 一樣可以手動跑一次,等於測試「Schedule Trigger 這條路能不能走到底」。跑成功就代表明天 9:30 一定會自動跑。
-
隔天檢查 Executions 頁
左側 Executions(或該 workflow 內的 Executions 分頁),會看到隔天 9:30 那筆自動跑的紀錄。有紀錄 = 排程活著;沒紀錄 = 去下一節排錯。
Trigger 常見卡關
Trigger 沒動、動錯時間、動了但下游沒跑——把下面這五種對照一次,八成能自己救回來。
| 症狀 | 可能原因 | 怎麼救 |
|---|---|---|
| Schedule 到時間了沒跑 | 右上角 Active toggle 是 OFF | 打開 workflow,Active 拉成綠色。這是第一名踩雷。 |
| Schedule 有跑但時間差 8 小時 | Timezone 沒設,走預設 UTC | Workflow → Settings → Timezone 選 Asia/Taipei,Save 再看下次 Next execution |
| Webhook Trigger URL 被打了但沒動 | 你拿的是 Test URL;Test URL 只在你按「Listen for test event」的期間、或在 workflow 未 Active 時執行過一次的當下才活,關掉 canvas 就死 | 用 Production URL(Webhook 節點面板可切換),並確保 workflow 是 Active。細節看第 22 章。 |
| Gmail Trigger 明明收到信卻沒觸發 | (1) Poll interval 太長還沒到、(2) Gmail 端有 filter 把信直接歸檔或垃圾桶、(3) OAuth scope 授權範圍不含 label | 先把 Poll Times 改成 Every Minute 排除間隔問題;再檢查 Gmail 側 filter;最後重新授權 OAuth credential |
| 時間對、Active 也開,但 workflow 就是沒跑 | (1) Workflow 沒 Save 就切走、(2) Trigger 節點被右鍵 Disable 了(灰色)、(3) 該 workflow 是複製過來的但 Trigger 沒重新設定 | Save 一次;右鍵 Trigger 節點看是否 Disabled,選 Enable;重新打開 Trigger 節點按一次 Save 確保設定寫入 |
| Manual Trigger 按了 Execute Workflow 沒反應 | Canvas 上有多個 Trigger 節點但 Manual Trigger 沒接到下游 | 檢查連線:Manual Trigger 右邊的圓點必須連到下游節點左邊的圓點 |
| Schedule 一分鐘跑一次太頻繁,想關掉 | 忘記 workflow Active 是 ON | 把 Active toggle 關掉即可;不用刪 Trigger 節點 |
常見問題
Schedule Trigger 最短能設多久跑一次?
我想一次設全部 workflow 的時區,不要每條都改,可以嗎?
GENERIC_TIMEZONE=Asia/Taipei,這是 Instance 層設定,只有管理員(或有 IT 權限的人)能改。Woow n8n 的 admin 通常已經幫你設好台北時區了,你先建個「每分鐘跑一次」的測試 workflow 看 Executions 時間對不對就知道。詳細環境變數清單看附錄 A · 設定速查與n8n 官方時區文件。一個 Trigger 節點能同時服務多個 workflow 嗎?
Webhook Trigger 的 URL 每次都會變嗎?
Trigger 跑起來會消耗 execution 額度嗎?
Schedule Trigger 跟排程系統的 Cron 是同一個東西嗎?
Custom (Cron) 是六欄位:秒 分 時 日 月 週——最前面多一個「秒」。常用範例(記得補秒):0 0 8 * * *(每天 8:00)、0 0 8 * * 1-5(週一到週五 8:00)、0 */15 * * * *(每 15 分鐘)、0 0 9 1 * *(每月 1 號 9:00)。從 crontab.guru 抄五欄位表達式時,記得前面補一個 0,否則語意會整個跑掉或報錯。