第 10 章

三種觸發: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 節點永遠是 workflow 的最左邊、第一個節點。canvas 上如果沒有任何 Trigger 節點,右上角的 Active toggle 打不開;就算你按 Execute Workflow 也會跳「Please add a Trigger node」的錯。

三大類 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,白天自動跑、需要時你也能手動點一下。

提示:不知道要挑哪種?想成:「這件事發生的頻率是固定時間還是外部觸發?」——固定時間走 Schedule,外部觸發走 Event。開發階段全部先用 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。
注意:Manual Trigger 的節點不會因為你按了右上角的 Active toggle 就自動跑。Active toggle 是給 Schedule 與 Webhook 用的——Manual 永遠只能靠你按 Execute Workflow 才跑。看到 workflow 已 Active 但 Manual 沒動,這是正常的。

Schedule Trigger:像 Cron 一樣定時跑

Schedule Trigger 是自動化最常用的 Trigger——你設一個時間規則,n8n 就會按規則到點自動幫你跑 workflow。適用範例:早上 8:00 把行事曆推 Slack、每小時同步一次資料庫、每週一 9:00 寄週報。

Website Down Checker workflow 起點:Schedule Trigger 節點在最左邊定時啟動整條流程
圖 10-1Schedule Trigger 永遠站在 workflow 的最左邊:時間一到就自動點燃下游整條網站健檢流程。

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(六欄位:秒 分 時 日 月 週),一行搞定。

注意(Cron 欄位數):n8n Schedule Trigger 的 Custom Cron 是六個欄位,最前面多一個「秒」——不是傳統 Linux crontab 的五欄位。順序是:秒 分 時 日 月 週。到處抄來的 0 8 * * *(五欄位)貼進 n8n 會被當成不同意思,甚至直接報錯。要記得補一個秒欄,例如「每天 8:00」應該寫 0 0 8 * * *。
危險(時區大坑):Schedule Trigger 判斷「幾點」用的是 workflow 的 timezone 設定,預設是 UTC。台灣是 UTC+8,意思是你設「8:00」如果沒改時區,實際會在台灣時間下午 4:00 才跑。這是 n8n 新手第一名踩雷。改設定的方法看下一節。

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。也就是說:

  1. Woow n8n 的 Instance 層可能已經設好了

    Woow n8n 的管理員通常已經把 GENERIC_TIMEZONE 設成 Asia/Taipei,這樣所有人設 8:00 就是台灣的 8:00。你可以先建一個測試 workflow,設「每分鐘跑一次」,看 Executions 頁面時間對不對——如果對,代表 Instance 層 OK,之後你根本不用管時區。

  2. 不對的話,就設 Workflow 層

    打開 workflow 右上角三點選單 → Settings → 中間有個 Timezone 下拉,選 Asia/Taipei。設完 Save。

  3. 每一條有 Schedule Trigger 的 workflow 都要確認

    Workflow 層的設定是各自獨立的:即使你設好了 workflow A,新開一條 workflow B 一樣要再設一次(如果 Instance 層是 UTC 的話)。

提示:不確定 workflow 現在吃什麼時區?打開 Schedule Trigger 節點,n8n 通常會顯示「Next execution at: XXXX-XX-XX 08:00 (Asia/Taipei)」——那個括號裡就是它現在用的時區,一眼看清楚。

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 章整章專講的東西,這裡先知道它存在就好。

觀念:Event Trigger 的 workflow 一定要按右上角 Active toggle 轉綠才會實際監聽外部事件。沒 Active 的 Event Trigger 只是「準備好但沒上工」——即使你設好 Gmail Trigger,Active OFF 時新郵件進來 n8n 完全不理。

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。

提示:需要毫秒級即時反應?找有 Webhook 的方案。例如「Slack 有新訊息就跑」——用 Slack Trigger(走 Slack 的 events API 是 push)比 Gmail Trigger 型的 poll 快非常多。做設計時先問一句「這個服務有 webhook 嗎?」

一條 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 並列,下游共用一組處理邏輯,兩邊來的資料都會走同一條路。

注意:並列 Trigger 的下游節點會拿到不同來源的資料格式(Gmail item 跟 Slack item 的 JSON 結構完全不一樣)。用第 14 章的 Expression 或第 18 章的 Set 節點先統一欄位,下游才好處理。

動手做:把既有 workflow 從 Manual 換成 Schedule

假設你在第 8 章做的 workflow 一開始用 Manual Trigger 測試(合理,測試階段就該用 Manual),現在測完想改成每天早上 9:30 自動跑:

  1. 打開那條 workflow

    從左側 Workflows 清單點進去。目前一開頭是 Manual Trigger 節點,右邊接著你原本的下游。

  2. 刪掉 Manual Trigger 節點

    在 Manual Trigger 節點上右鍵→ Delete(或選中它按 Delete / Backspace)。原本連到下游的線會斷掉,下游第一個節點變成「浮」在 canvas 上,別緊張。

  3. 加一個 Schedule Trigger

    Canvas 左上角按 +(或空白處按 Tab)叫出節點抽屜 → 選 On a schedule → 「Schedule Trigger」。它會落到 canvas 上。

  4. 設 Schedule Trigger 的時間

    點開節點面板:Trigger Interval 選 Days、Days Between Triggers 1、Trigger at Hour 9、Trigger at Minute 30。看節點底下顯示的 Next execution,確認括號內時區是 Asia/Taipei(不是就照上一節去設)。

  5. 把 Schedule Trigger 連到原本的下游

    拖 Schedule Trigger 右邊的圓點,連到下游第一個節點左邊的圓點。連線成功會是實線。

  6. Save + 打開右上 Active toggle

    按 Ctrl+S 存檔,然後右上角 Active toggle 拉成綠色。這一步最容易忘——Active OFF 的 Schedule 永遠不會自動跑,你哭到明天也沒用。

  7. 驗證:按一次 Execute Workflow 手動跑

    Active 之後,你按 Execute Workflow 一樣可以手動跑一次,等於測試「Schedule Trigger 這條路能不能走到底」。跑成功就代表明天 9:30 一定會自動跑。

  8. 隔天檢查 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 最短能設多久跑一次?
n8n Community 版理論上可以設到 每 1 秒跑一次(Seconds Between Triggers = 1),但實務上這樣會把 CPU 吃爆、Executions 歷史也會爆炸。合理範圍是每分鐘以上(Minutes Between Triggers = 1);需要更即時就別用 Schedule,改走 Webhook。n8n Cloud 版依方案不同有最小間隔限制(例如某些方案是 1 分鐘),詳情看你們家的訂閱條款。
我想一次設全部 workflow 的時區,不要每條都改,可以嗎?
可以,但需要動 server 環境變數 GENERIC_TIMEZONE=Asia/Taipei,這是 Instance 層設定,只有管理員(或有 IT 權限的人)能改。Woow n8n 的 admin 通常已經幫你設好台北時區了,你先建個「每分鐘跑一次」的測試 workflow 看 Executions 時間對不對就知道。詳細環境變數清單看附錄 A · 設定速查與n8n 官方時區文件。
一個 Trigger 節點能同時服務多個 workflow 嗎?
不能。每個 Trigger 節點只屬於它所在的那條 workflow。如果兩條 workflow 都想在早上 8:00 跑,就各自放一個 Schedule Trigger。想避免重複,可以把共用邏輯抽成 Sub-workflow(第 19 章會講)——各自的 Trigger 呼叫同一個 sub-workflow,就達成「一段邏輯多個入口」。
Webhook Trigger 的 URL 每次都會變嗎?
不會,Production URL 是固定的——一旦 workflow Active,URL 就會綁在那條 workflow 上不變。但要注意:Test URL 是每次進 canvas 監聽時才活,你關掉 canvas 或切走頁面就死。開發時用 Test URL 快速看資料,上線用 Production URL 貼給對方系統。第 22 章詳細講。
Trigger 跑起來會消耗 execution 額度嗎?
n8n Cloud 版:每一次 Trigger 引發的 workflow 執行都算一次 execution,計入你的月度額度(依方案不同 5,000 / 10,000 / 更多不等)。Community / self-hosted 版(Woow n8n 屬於這種):沒有次數限制,你想 Schedule 每分鐘跑一次都行,只要伺服器扛得住。Executions 歷史保留幾天可以設,看附錄 A。
Schedule Trigger 跟排程系統的 Cron 是同一個東西嗎?
語法很像但欄位數不同。傳統 Linux crontab 是五欄位(分 時 日 月 週),n8n Schedule Trigger 的 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,否則語意會整個跑掉或報錯。
如果我的 workflow 遇到錯誤沒跑完,下一次 Schedule 到還會跑嗎?
會。Schedule Trigger 不管上一次結果——時間到就再啟動一次新的 execution。上一次失敗的資料不會自動 retry。想要錯誤自動處理(重試、通知、backup 手段),需要另外設 Error workflow 或節點層的 Retry on fail——這是第 17 章整章的主題。
Manual Trigger 節點裡看到 "When clicking 'Test workflow'" 跟 "When clicking 'Execute workflow'" 差在哪?
n8n 早期版本按鈕叫 "Execute Workflow",較新版本改成 "Test workflow"(或兩者並存),指的都是同一個動作:你按下去、workflow 從 Manual Trigger 開始跑一次。名字改了但功能沒變,看你這台 n8n 是哪個版本、右上角按鈕寫什麼就是什麼。