~/blog/wordpress-event-lead-auto-distribution-webhook-guide.md
企業系統與 CRM · 2025 / 12 / 21

活動名單還在用 Excel 手動分?用 Webhook 打造 WordPress 全自動『業務派單』系統

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
活動名單還在用 Excel 手動分?用 Webhook 打造 WordPress 全自動『業務派單』系統
目錄 table-of-contents.md

展覽結束的隔天早上,行銷同事把報名資料匯出成 .csv,整個團隊圍著一台電腦在 Excel 裡奮戰:手動清理、分類,再一筆一筆複製貼上,用 Email 通知業務「這個客戶交給你囉」。這套流程跑一次要半天,名單冷掉的速度卻是以小時計。其實只要在 WordPress 表單上掛一條 Webhook,就能讓系統在訪客送出表單的瞬間,自動把名單派給對的業務。

天啊,這流程光是用想的,我的工程師魂就在吶喊了。這不只是浪費時間,更是潛在的災難。手動操作,意味著會有打錯字、分錯人、甚至漏掉黃金潛在客戶的風險。商機,往往就在這一來一往的延遲與失誤中溜走了。

今天,我就要來當一次「流程終結者」。我們要徹底告別這種石器時代的作法,用工程師的思維,打造一個強韌、全自動的「活動名單自動分流系統」。我們會利用 WordPress 網站現有的工具,搭配 Webhook 這項神器,建立一個 24 小時待命、絕不出錯的業務派單機器人。準備好了嗎?泡杯咖啡,我們開始動手。

系統架構的思考:為什麼不單純用一個外掛搞定?

很多人的第一反應可能是:「這功能,去找個 WordPress 外掛不就好了?」嗯,這問題問得很好,但也暴露了「外掛思維」的侷限性。身為一個囉嗦的工程師,我得先跟你聊聊架構。

市面上確實有些 CRM 外掛或表單外掛宣稱能做到這點,但它們通常有幾個問題:

  • 缺乏彈性: 你的分派邏輯可能很複雜,例如「A 產品的線索給甲業務團隊」、「台北地區的線索給乙業務」,單一外掛很難滿足所有客製化規則。
  • 廠商綁定: 你會被綁死在某個 CRM 系統或特定服務上。未來想換系統?那整套流程可能就要打掉重練。
  • 效能與穩定性: 把所有邏輯都塞在 WordPress 裡,當流量一大、邏輯一複雜,很容易拖垮網站效能。而且,如果第三方 CRM 的 API 暫時掛了,外掛的錯誤處理機制不夠好的話,資料可能就直接遺失了。

所以,我們這次要採用的是一種更專業、更具擴展性的「解耦」架構。我們的黃金組合是:

  • WordPress 表單: 作為資料的「訊號發射器」。它只負責一件事:收集報名資料,然後用最快的速度把資料射出去。
  • 自動化中介層 (n8n): 這是我們系統的「大腦與指揮中心」。它接收來自 WordPress 的訊號,執行所有複雜的分派邏輯,然後再把指令傳遞下去。
  • 目標應用 (CRM/Email/Slack): 作為指令的「接收與執行者」。例如,在 CRM 建立客戶資料、發送 Email 通知業務等。

這三者之間溝通的橋樑,就是我們今天的主角—— Webhook。你可以把 Webhook 想像成一個專屬的電話號碼,WordPress 一有新報名,就立刻撥打這個號碼,把資料即時「說」給我們的指揮中心聽。這種架構,乾淨、高效,而且未來不管你想換哪個 CRM,或增加什麼新的通知方式,都只需要調整指揮中心的邏輯,WordPress 端完全不用動,這才是可維護的系統啊!

第一步:架設 WordPress 的「訊號發射器」

首先,我們得讓 WordPress 具備發射 Webhook 訊號的能力。這通常需要一個功能強大的表單外掛來達成。

挑選合適的表單外掛

市面上有許多選擇,關鍵在於它是否「原生支援」或可以輕易擴充 Webhook 功能。以下是我的幾個建議:

  • Gravity Forms: 這是我的首選,雖然是付費外掛,但它的 Webhooks Add-On 非常穩定且強大,幾乎是業界標準。
  • Fluent Forms: 近年來的新星,功能完整,免費版就提供 Webhook 功能,CP 值很高。
  • Contact Form 7: 雖然本身不直接支援,但可以透過一些第三方外掛(例如 'Contact Form 7 - Webhook')來補強。不過穩定性需要多方測試。

無論你選擇哪一個,設定的邏輯都大同小異。你需要找到表單設定中的「Webhook」或「整合」選項。你會看到一個欄位,要求你輸入「Webhook URL」。這個 URL 先留空,它是我們下一步要從指揮中心那裡拿到的。

第二步:用 n8n 打造「自動化指揮中心」

接下來,我們要建立系統的大腦。這裡我們使用 n8n 這個工具。它是一個開源、可自架設的低程式碼自動化平台,對於想完全掌控資料流與邏輯的工程師來說,簡直是夢幻逸品。(當然,你也可以用 Zapier 或 Make,但 n8n 帶來的控制權與自由度是無可比擬的。)

1. 建立 Webhook 監聽節點

在 n8n 中,建立一個新的工作流 (Workflow),第一個節點就是 `Webhook` 節點。建立後,n8n 會自動產生一個「Test URL」。這個 URL 就是我們夢寐以求的專屬電話號碼!

把它複製下來,回到你的 WordPress 表單設定,貼到剛剛那個「Webhook URL」欄位裡,然後儲存。接著,回到 n8n,點擊「Listen for test event」,然後去你的網站前台,實際送出一次表單報名。

成功的話,你會在 n8n 的 Webhook 節點看到剛剛送出的表單資料,被完整地捕捉下來了!這一步非常關鍵,因為我們拿到了資料的「結構」,後續才能針對這些欄位做處理。

2. 撰寫核心分派邏輯:輪流派單 (Round Robin)

現在資料進來了,我們要決定把它分給誰。最常見也最公平的,就是「輪流派單」。假設你有三位業務:A、B、C。第一筆資料給 A,第二筆給 B,第三筆給 C,第四筆再輪回給 A。這在程式中可以用一個計數器和取餘數 (%) 運算輕鬆實現。

在 n8n 中,我們可以在 Webhook 節點後加上一個 `Function` 節點,用幾行 JavaScript 來實現這個邏輯。這也是 n8n 比起其他平台更受開發者喜愛的地方——需要的時候,隨時可以跳進去寫 Code!

在 `Function` 節點中,貼上以下程式碼:

// 這裡我們定義一個業務團隊的列表
// 在真實應用中,這個列表可以來自 Google Sheets、資料庫,或是直接寫死在這裡
const salesReps = [
  { name: '王牌業務 A', email: 'sales-a@roamer-tech.com', slackId: 'U0XXXXXX1' },
  { name: '銷售戰將 B', email: 'sales-b@roamer-tech.com', slackId: 'U0XXXXXX2' },
  { name: '市場開拓 C', email: 'sales-c@roamer-tech.com', slackId: 'U0XXXXXX3' }
];

// n8n 的 $runIndex 會記錄這是工作流第幾次執行 (從 0 開始)
// 這是一個完美的天然計數器!
const runIndex = $runIndex;

// 使用取餘數運算子 (%) 來決定這次該輪到誰
const assignedIndex = runIndex % salesReps.length;
const assignedRep = salesReps[assignedIndex];

// 將分派結果附加到原始資料上,方便後續節點使用
// 注意:$item 是 n8n 中代表單筆資料的物件
$item.assigned_rep = assignedRep;

// 回傳處理過的資料
return $item;

這段程式碼做的事情很單純:定義一個業務列表,然後用 n8n 內建的執行次數 (`$runIndex`) 來當計數器,算出這次該輪到列表中的哪一位業務,最後把這位業務的資訊(姓名、Email 等)附加到我們收到的資料上。

第三步:將指令傳送到最終目的地

大腦已經做出了決策,現在就要執行命令了。

1. 在 CRM 中建立線索

在 `Function` 節點後,加上一個 `HTTP Request` 節點(或者如果 n8n 有你 CRM 的專屬節點,如 HubSpot, Salesforce,就直接用)。

  • URL: 填入你的 CRM 用來「新增聯絡人/線索」的 API 端點 (Endpoint)。
  • Authentication: 設定 API 金鑰或 OAuth 認證。千萬記得要把金鑰存在 n8n 的 Credentials 裡,不要直接寫在節點上!這是資安基本功。
  • Body: 這裡就是資料對應的地方。你需要把從 Webhook 收到的報名資料(如姓名、電話、公司),以及我們剛剛在 `Function` 節點中附加的 `assigned_rep`,對應到 CRM API 要求的 JSON 格式裡。例如,把 `assigned_rep.email` 對應到 CRM 裡的「負責人」欄位。

2. 即時通知相關業務

光把資料丟進 CRM 還不夠,我們要主動出擊!在 `HTTP Request` 節點之後,可以並行新增一個 `Slack` 或 `Email` 節點。

在訊息內容中,你可以動態地插入資料,打造一則個人化的通知。例如,在 Slack 節點中設定訊息:

「嗨 @{{ $item.assigned_rep.name }}!來自【{{ $json.body.event_name }}】活動的新線索來囉!客戶姓名:{{ $json.body.customer_name }},聯絡電話:{{ $json.body.phone }}。請立即跟進!」

這樣一來,業務員在手機上就能立刻收到通知,點開就能看到客戶資訊,跟進速度比對手快上好幾倍!

最終加固:一個工程師的偏執

系統上線前,我總會多想一步:如果出錯了怎麼辦?例如,CRM 的伺服器剛好在維護,API 呼叫失敗了,那這筆寶貴的客戶資料不就人間蒸發了?

這就是專業系統與玩具系統的差別。在 n8n 中,你可以在節點的「Settings」中設定「Retry on Fail」,讓它在失敗時自動重試幾次。更進一步,你可以設定一個專門的「Error Workflow」,當重試幾次都失敗後,自動觸發另一個流程,例如發一封緊急通知給系統管理員,並把失敗的資料記錄到一個備用的 Google Sheets,確保 100% 不漏單。

看到這裡,你是不是也覺得手癢了?從一團亂麻的 Excel 表格,到一個井然有序、全自動化的派單系統,這中間的轉變,不僅是效率的提升,更是企業數位化成熟度的體現。這套架構的彈性極高,你可以輕易地擴充更複雜的規則,例如根據報名者填寫的「預算」欄位,自動將高預算的客戶指派給最資深的業務。這才是數據驅動的真正威力!

延伸閱讀

讓我們幫您打造自動化流程

覺得自己動手太複雜,或是有更進階的客製化需求嗎?浪花科技專精於企業級的 WordPress 開發與自動化流程設計。我們能為您打造穩定、高效、可擴展的系統,讓您的團隊專注在更有價值的事情上。立即與我們聯繫,讓浪花科技的工程師團隊,成為您數位轉型的最佳夥伴!

// FAQ

常見問題

為什麼自動派單系統建議用解耦架構,而不是單一 WordPress 外掛?
單一外掛通常在分派邏輯彈性、廠商綁定與效能穩定性上受限。建議改用解耦架構:WordPress 表單作為「訊號發射器」只負責收集並送出資料、自動化中介層(如 n8n)作為「大腦」執行分派邏輯、CRM 或 Email/Slack 作為「執行者」。這樣未來更換 CRM 或新增通知方式,只需調整中介層邏輯,WordPress 端完全不用動,較易維護。
Webhook 在自動派單系統裡扮演什麼角色?
Webhook 是 WordPress 表單與自動化中介層之間溝通的橋樑,可以想像成一個專屬電話號碼。每當有新報名,WordPress 表單就立刻撥打這個號碼,把資料即時傳送給中介層處理,達成不需人工介入的即時資料流。
哪些 WordPress 表單外掛支援 Webhook?
適合的表單外掛關鍵在於是否原生支援或能輕易擴充 Webhook。Gravity Forms 透過付費的 Webhooks Add-On 提供穩定強大的功能,近乎業界標準;Fluent Forms 免費版即提供 Webhook,CP 值高;Contact Form 7 本身不直接支援,需透過第三方外掛補強,穩定性需多方測試。
如何用 n8n 實現業務輪流派單(Round Robin)?
在 n8n 的 Webhook 節點後加一個 Function 節點,用 JavaScript 定義業務團隊清單,再利用 n8n 內建的 $runIndex(記錄工作流第幾次執行,從 0 開始)當作天然計數器,以取餘數運算($runIndex % 業務人數)算出該輪到哪位業務,最後把該業務資訊附加到資料上供後續節點使用。
串接 CRM API 時,API 金鑰應該放在哪裡才安全?
API 金鑰應存放在 n8n 的 Credentials 中,不要直接寫在 HTTP Request 節點上,這是資安基本功。在節點裡只引用憑證,可避免金鑰外洩。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

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

$
// final.exec()

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