~/blog/n8n-woocommerce-order-sync-automation-guide.md
電商與 WooCommerce · 2025 / 08 / 22

訂單接到手軟,出貨出到臉綠?n8n x WooCommerce 自動化連擊,讓你躺著處理訂單!

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
訂單接到手軟,出貨出到臉綠?n8n x WooCommerce 自動化連擊,讓你躺著處理訂單!
目錄 table-of-contents.md

用 n8n 串接 WooCommerce,把訂單處理自動化(含實作步驟)

你不需要昂貴的 ERP,只要用開源、可自架的工作流工具 n8n,透過 WooCommerce 的 Webhook 把「新訂單建立」這個事件推送出去,就能自動完成即時通知(如 LINE)與資料歸檔(如 Google Sheets),讓訂單處理 24 小時不停、減少人為失誤。

這篇文章會帶你回答三個問題:為什麼要做訂單自動化n8n 到底是什麼、跟 Zapier/Make 差在哪,以及怎麼一步步把第一條訂單流水線建起來。最後附上多商品處理、錯誤通知、狀態同步等進階技巧與避坑要點。

為什麼電商需要的是「自動化」,不只是「數位化」?

用了 WooCommerce 開店,只代表你「數位化」了;如果訂單還是靠人工複製貼上、手動通知出貨,那只是把紙本作業搬上電腦。真正能規模化的,是讓系統自己把重複任務做完,也就是「自動化」。

手動處理訂單常見的痛點:

  • 複製貼上的人為失誤:客戶姓名、地址、金額 key 錯,輕則客訴、重則金錢損失。
  • 資訊不同步:訂單進來卻忘了更新庫存導致超賣;財務與營運看到的數字對不起來,對帳曠日費時。
  • 反應速度慢:下單後等很久才收到確認信,尖峰時段出貨通知延遲,傷害的是即時體驗。
  • 人力浪費:你最該花時間的是行銷策略與 VIP 客戶,而不是當訂單資料的搬運工。

「n8n 與 WooCommerce 訂單同步」要解決的,正是上面這些問題:讓系統學會自己工作,把繁瑣重複的任務穩定地跑完。

n8n 是什麼?跟 Zapier、Make 有什麼不同?

n8n 是一套「工作流自動化工具」,概念與 Zapier、Make(前身 Integromat)相同:把各種應用程式(APP)像膠水一樣黏在一起,讓它們互相溝通、協同作業。你用拖拉的視覺化方式串接 API,不必寫一堆程式碼,就能建立強大的自動化流程。

n8n 最大的差異在於它開源(Open Source)且可以自架設(Self-hosted)。這帶來三個關鍵好處:

  • 成本極低:不被昂貴月費綁架,一台入門級 VPS 就能跑起來,對剛起步的電商幾乎可忽略不計。
  • 隱私與安全:客戶訂單資料不必流經第三方平台,全部在你自己的伺服器裡處理。
  • 彈性無上限:沒有執行次數限制,能打造複雜工作流;因為開源,懂程式的人甚至能自製節點(Node),串接任何有 API 的服務。

什麼情況選自架 n8n、什麼情況選 SaaS?

簡單判斷:如果你在意資料主權、量大、要做複雜分支、又有人能維運一台主機,自架 n8n 的長期效益很高;如果你完全沒有伺服器維運能力、量也不大,托管型方案(含 n8n Cloud 或其他 SaaS)的省心程度會勝過省下的月費。本文後續以自架情境示範。

實戰:打造 WooCommerce 新訂單「自動通知+自動歸檔」流程

我們要建立一條經典且實用的工作流:當 WooCommerce 有新訂單時,自動發送通知到 LINE Notify,並把訂單資料寫入 Google Sheets 備份。整體資料流是:WooCommerce 觸發 Webhook → n8n 接收 → 發 LINE 通知 → 寫入 Google Sheets。

第一步:設定 WooCommerce 的 Webhook 觸發器

Webhook 是整條流程的起點。它像 WooCommerce 的廣播系統:當特定事件發生(例如建立新訂單),就主動把資料「推送」到你指定的網址,而不必你的程式去輪詢查詢。

  1. 登入 WordPress 後台,前往 WooCommerce > 設定 > 進階 > Webhook
  2. 點擊「新增 Webhook」。
  3. 填寫設定:
    • 名稱:取個好辨識的名字,例如「n8n New Order Sync」。
    • 狀態:設為「啟用」。
    • 主題(Topic):選「訂單已建立(Order created)」,代表只有新訂單成立時才觸發。
    • 傳送 URL:先留空,待會去 n8n 拿接收資料的網址。

第二步:在 n8n 建立 Webhook 監聽節點

  1. 建立一個新的 Workflow。
  2. 點「+」搜尋並加入第一個節點「Webhook」。
  3. 在 Webhook 節點設定中,會看到一個「Test URL」,這就是要的網址,把它複製下來。
工程師小囉嗦:這個 URL 很重要,任何人拿到它都能向你的 n8n 工作流發送資料,千萬別外洩。n8n 會用亂碼增加安全性,若你有更高的安全要求,可以在伺服器層級(例如 Nginx)設定只允許來自你網站伺服器 IP 的請求。

接著回到 WooCommerce 的 Webhook 設定頁,把複製的 URL 貼到「傳送 URL」欄位,儲存設定。

第三步:觸發並測試資料接收

為了讓 n8n 知道 WooCommerce 會傳來什麼格式的資料,先實際觸發一次:

  1. 在 n8n 的 Webhook 節點畫面,點右上角「Listen For Test Event」。
  2. 回到 WooCommerce 商店前台,用測試帳號下一筆訂單。
  3. 完成下單後切回 n8n,你會看到 Webhook 節點成功接收到一大包 JSON 格式的訂單資料。

這一步的意義是:n8n 會記住這份資料的結構,後續節點才能用視覺化的方式點選欄位。最關鍵的橋樑到這裡就搭好了。

第四步:串接 LINE Notify 發送即時通知

光接收資料沒用,要讓它動起來。第一件事就是即時通知,讓你或團隊第一時間掌握訂單。

  1. 點 Webhook 節點右邊的「+」,搜尋並加入「LINE」節點。
  2. 第一次使用要設定憑證(Credential)。先到 LINE Notify 官網 登入,點「發行權杖」,選擇要通知的聊天室(個人或群組),取得一組權杖後貼到 n8n 的憑證設定中。
  3. 在 LINE 節點的「Message」欄位組合通知訊息,用 n8n 的「運算式(Expression)」動態抓取前面 Webhook 傳來的資料。例如:
新訂單通知!
訂單編號:{{$json["body"]["number"]}}
客戶:{{$json["body"]["billing"]["first_name"]}} {{$json["body"]["billing"]["last_name"]}}
總金額:{{$json["body"]["total"]}} 元
趕快準備出貨囉!

你可以點欄位旁的「Add Expression」,再從左邊「Nodes > Webhook > body」用視覺化方式點選要的欄位,非常直覺。

第五步:串接 Google Sheets 進行訂單歸檔

通知完,把資料永久存到 Google Sheets,方便後續會計與行銷分析。

  1. 在 LINE 節點後面再點「+」,搜尋並加入「Google Sheets」節點。
  2. 第一次使用要設定憑證,n8n 會引導你透過 OAuth 授權 Google 帳號。
  3. 在節點設定中填入:
    • Resource:選「Row」。
    • Operation:選「Append」(在試算表最後一行附加新資料)。
    • Sheet ID:打開 Google Sheets,從網址列複製那段 ID。
    • Range:填工作表名稱,例如「工作表1」。
    • Columns:對應欄位的關鍵處。點「Add Field」,左邊「Key」是 Google Sheets 上的欄位標題,右邊「Value」用運算式對應 Webhook 傳來的資料。

常見的欄位對應如下:

Google Sheets 欄位對應運算式(Value)
訂單編號{{$json["body"]["number"]}}
客戶姓名{{$json["body"]["billing"]["first_name"]}} {{$json["body"]["billing"]["last_name"]}}
訂單金額{{$json["body"]["total"]}}
下單時間{{$json["body"]["date_created"]}}
商品內容較複雜,見下方進階技巧

全部設定好後,儲存並啟用(Activate)你的 Workflow。完成後,只要有新訂單進來,n8n 就會像個忠實員工自動完成通知與歸檔,不需要你動一根手指。

進階技巧與避坑指南

上面的流程能動,但要更強壯、更接近正式環境,還有幾個細節值得補上。

如何處理訂單中的多個商品?

WooCommerce 訂單裡的 line_items 是一個陣列(Array),包含所有購買的商品。如果直接用運算式塞進 Google Sheets,會得到一堆看不懂的 [Object]。這時用「Function」節點寫一點 JavaScript 來把陣列整理成字串:

const items = $json["body"]["line_items"];
let productSummary = '';

for (const item of items) {
  productSummary += `${item.name} x${item.quantity}\n`;
}

return [{ json: { product_summary: productSummary } }];

這個節點會把商品清單整理成一個簡單字串,後面的 Google Sheets 節點就能用 {{$node["Function"].json["product_summary"]}} 取用整理好的商品摘要。

錯誤處理為什麼是基本功?

如果某天 Google Sheets 的 API 剛好掛掉,你的工作流會卡在那一步,預設情況下它就停住,你甚至不知道有訂單同步失敗。正式環境一定要加上錯誤處理。

在 n8n 的 Workflow 設定中可以指定一個「Error Workflow」:另外建立一個專門處理錯誤的流程,當主流程失敗時觸發它,發送 Email 或 LINE 通知給管理員,例如「訂單 #12345 同步失敗,請手動處理!」。這樣失敗不會被默默吞掉,而是會被你看見。

為什麼要在意「重複觸發」與冪等性(Idempotency)?

Webhook 的本質是「推送後不保證對方一定收到」,因此設計良好的系統通常會在送出失敗時重試,這代表同一筆訂單事件有可能被推送不只一次。如果你的流程是「每收到一次就在 Google Sheets 新增一行」,重複推送就可能造成重複的資料列。

處理原則很單純:用訂單編號這類唯一鍵來判斷「這筆是否已處理過」。例如先查詢試算表是否已有相同訂單編號,有就略過或改成更新而非新增。這個「同一事件重複執行、結果仍一致」的特性就叫冪等性(Idempotency),是訂單類自動化最該守住的底線,因為它直接關係到帳目正確與否。

不只是新訂單,狀態更新也能同步

WooCommerce 的 Webhook 主題除了「訂單已建立」,還有「訂單狀態已更新(Order status changed)」。你可以另建一個工作流專門監聽這個事件:例如把訂單狀態從「處理中」改成「已完成」時,自動發一封「您的商品已出貨」的客製化 Email 給客戶,甚至串接物流公司的 API 查詢運送狀態。

結論:自動化是電商的護城河

我們從觀念走到實作,完整跑過如何透過 n8n 與 WooCommerce 進行訂單同步:用 Webhook 觸發、n8n 接收、再分流到 LINE 通知與 Google Sheets 歸檔,並補上多商品處理、錯誤通知、冪等性與狀態同步等讓它更穩固的細節。

這只是起點。只要對方有提供 API,你就能把 CRM、電子發票、簡訊服務全部串起來,打造專屬於你的自動化商業大腦。把時間從重複瑣事中釋放出來,省下的時間與避免的錯誤,會以數倍回報,這是電商戰場上必須建立的護城河。

如果你在設定過程遇到問題,或想規劃更複雜、企業級的自動化流程,歡迎與浪花科技的顧問團隊聯繫,讓我們為你量身打造合適的解決方案。

延伸閱讀

// FAQ

常見問題

n8n 是什麼?跟 Zapier、Make 有什麼不同?
n8n 是一套工作流自動化工具,概念與 Zapier、Make 相同,透過視覺化拖拉串接各種應用程式的 API。最大差異在於 n8n 開源且可自架,因此成本較低、訂單資料不必流經第三方平台、且沒有執行次數限制,懂程式者還能自製節點串接任何有 API 的服務。
什麼情況適合自架 n8n,什麼情況適合用托管型 SaaS?
若你在意資料主權、訂單量大、需要複雜分支流程,且有人能維運主機,自架 n8n 的長期效益較高。若完全沒有伺服器維運能力且用量不大,托管型方案(含 n8n Cloud 或其他 SaaS)的省心程度通常勝過省下的月費。
如何讓 WooCommerce 新訂單自動觸發 n8n 工作流?
在 WordPress 後台前往 WooCommerce > 設定 > 進階 > Webhook 新增一個 Webhook,狀態設為「啟用」,主題(Topic)選「訂單已建立(Order created)」,並把 n8n Webhook 節點產生的接收網址貼到「傳送 URL」。如此一來只要有新訂單成立,WooCommerce 就會把訂單資料推送到 n8n。
n8n 中如何處理 WooCommerce 訂單裡的多個商品?
WooCommerce 訂單的 line_items 是一個陣列,直接塞進 Google Sheets 會顯示成 [Object]。可用 Function 節點寫 JavaScript 走訪該陣列,把每個商品的名稱與數量組合成字串,再於後續節點以該整理後的欄位取用商品摘要。
n8n 的 Webhook 接收網址需要特別注意安全嗎?
需要。任何人取得這個 URL 都能向你的工作流發送資料,所以絕對不要外洩。n8n 會用亂碼增加安全性,若有更高安全要求,可在伺服器層級(例如 Nginx)設定只允許來自你網站伺服器 IP 的請求。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?