n8n 接手名單搬運工:WordPress 表單送出即寫入 Google Sheets 的自動化全流程
☰ 目錄 table-of-contents.md
用 n8n 串接 Google Sheets,把 WordPress 表單變成即時資料流
如果你每個月都得手動登入 WordPress 後台、匯出 Contact Form 7 名單、再整理成行銷團隊要的格式,這篇文章就是要終結這件事。核心結論很簡單:在 WordPress 用 wpcf7_mail_sent Hook 把表單資料以 Webhook 送到 n8n,再由 n8n 寫進 Google Sheets,整段流程不需要額外外掛,客戶送出表單後資料會在數秒內自動出現在試算表上。
本文會用一套完整的 Step-by-Step 帶你從零建好這條管道:先設計 Google Sheets 欄位、設定 n8n Webhook 觸發器、用一小段 PHP 讓 WordPress 主動送出資料、把 n8n 接到 Google Sheets,最後正式上線。文末也整理了常見除錯清單與進階擴充方向。
為什麼該停止手動匯出表單資料?
「不過就是幾分鐘的複製貼上」是一種典型的線性思維,但手動作業的真實成本遠比表面高:
- 時間成本:每天 10 分鐘,一個月就是 300 分鐘(5 小時),一年累積約 60 小時。這些時間足夠開發一個小外掛或學會一個新框架。
- 錯誤成本:人不是機器,複製貼上難免眼花手殘。一個欄位錯置或一筆資料遺漏,就可能導致銷售機會流失或客戶抱怨;自動化流程能確保資料準確一致。
- 機會成本:當銷售團隊要等到月底才拿到名單,熱騰騰的潛在客戶早就涼了。透過 n8n 與 Google Sheets 自動化,客戶一送出表單,資料就能即時出現在團隊的試算表上,讓他們立刻跟進。
別再把網站當成資料孤島。我們要做的,是把它變成資訊中樞,讓數據自動流向需要它的地方——這就是自動化的核心價值。
動工前要準備哪些工具?
完成這個任務不需要火箭科技,只要備齊以下幾樣即可:
- WordPress 網站:並安裝國民級表單外掛 Contact Form 7。
- n8n 實例:n8n 是這次的自動化大腦。你可以使用 n8n Cloud 付費服務,也可以在自己的伺服器上 self-host。它像樂高積木,用拖拉方式就能串接各種服務。
- Google 帳號:用來建立目標資料庫 Google Sheets。
- 一點點寫程式的勇氣:我們會用一小段 PHP,讓 WordPress 在表單提交時主動發出訊號。比起多裝一個外掛,這種做法更乾淨、更高效。
如何從零打造 WordPress 到 Google Sheets 的自動化管道?
整條管道的資料流是:使用者提交表單 → WordPress 觸發 Hook → 以 Webhook POST 到 n8n → n8n 寫入 Google Sheets。以下分五步完成。
步驟一:先設計好 Google Sheets 的欄位結構
打開 Google Drive 建立一份新的 Google Sheets,最重要的第一步是在第一列建立「欄位標題」,並讓它們對應到 Contact Form 7 表單裡的欄位。
舉例來說,如果表單有「姓名(your-name)」、「Email(your-email)」、「訊息(your-message)」,你的 Google Sheet 標題就可以設定成:
Timestamp(記錄提交時間)NameEmailMessage
欄位名稱建議用英文並保持簡潔,這會讓後續在 n8n 裡對應資料時更直覺。先想好資料結構,是所有系統設計的好習慣。
步驟二:在 n8n 設定 Webhook 觸發器
接著輪到自動化中樞 n8n 上場:
- 在 n8n 儀表板建立一個新的 Workflow。
- 在觸發器(Triggers)裡搜尋並選擇「Webhook」。
- 在 Webhook 的設定畫面,你會看到一組「Test URL」,這是暫時的訊號接收地址。點擊複製按鈕把這串 URL 複製下來,馬上會用到。
- 點擊「Listen For Test Event」按鈕,n8n 會進入等待模式,像雷達一樣等著接收來自 WordPress 的第一個訊號。
步驟三:用 Hook 讓 WordPress 主動送出資料
這是最關鍵、也最能體現工程師價值的一步。我們不裝外掛,而是直接用 WordPress 內建的 Hooks 機制做事。
打開主題資料夾底下的 functions.php(請務必先備份,或使用子佈景主題),在檔案最後面貼上這段程式碼:
function roamer_send_cf7_to_n8n( $contact_form ) {
$title = $contact_form->title();
$submission = WPCF7_Submission::get_instance();
// 只針對特定的表單標題;若想讓所有表單都送,可移除這個 if 判斷
if ( '你的表單標題' != $title ) {
return;
}
if ( $submission ) {
$posted_data = $submission->get_posted_data();
// 你的 n8n Webhook Test URL
$webhook_url = 'https://你的n8n網址/webhook-test/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
$body = [
'form_title' => $title,
'submitted_data' => $posted_data,
];
$args = [
'body' => json_encode( $body ),
'headers' => [ 'Content-Type' => 'application/json; charset=utf-8' ],
'timeout' => 60,
'redirection' => 5,
'blocking' => true, // 設為 true 確保請求確實送出
'httpversion' => '1.0',
'sslverify' => false, // 若 n8n 使用自簽 SSL 憑證,可能需要設為 false
'data_format' => 'body',
];
wp_remote_post( $webhook_url, $args );
}
}
// 使用 'wpcf7_mail_sent',確保只有在郵件成功寄出(代表表單成功提交)時才觸發
add_action( 'wpcf7_mail_sent', 'roamer_send_cf7_to_n8n', 10, 1 );
程式碼小解析:
wpcf7_mail_sent這個 Action Hook 會在 Contact Form 7 成功寄出郵件後觸發,是最可靠的觸發點。WPCF7_Submission::get_instance()幫我們取得使用者提交的所有資料。- 記得把
$webhook_url換成上一步從 n8n 複製的 Test URL。 wp_remote_post是 WordPress 內建函數,專門用來發送 POST 請求。
安全提醒:範例中為了相容自簽憑證把
sslverify設為false。正式環境若 n8n 端使用有效的 SSL 憑證,建議改回true,避免關閉憑證驗證帶來的風險。
儲存 functions.php 後,回到網站前台,找到那個 Contact Form 7 表單實際填寫並提交一次。如果一切順利,表單會顯示成功送出;同時切換回 n8n 視窗,你會看到它已經收到來自 WordPress 的資料。
步驟四:把 n8n 連接到 Google Sheets
n8n 已經收到資料,接下來把它寫進 Google Sheets:
- 在 Webhook 節點旁點擊「+」新增節點。
- 搜尋「Google Sheets」並選取。
- 在 Credential 點選「Create New」,跟隨指示透過 OAuth2 授權 n8n 存取你的 Google 帳號。這是標準且安全的授權流程。
- 在「Resource」選擇「Row」,「Operation」選擇「Append or Update」。
- 在「Sheet ID」欄位選擇步驟一建立的那份試算表。
- 在下方「Columns」區塊點擊「Add Column」,n8n 會把 Google Sheet 上的標題(Timestamp、Name、Email、Message)都讀取進來。
- 把左邊 Webhook 傳來的資料對應到右邊的欄位。例如將
{{$json["body"]["submitted_data"]["your-name"]}}對應到Name欄位;Timestamp則可用 n8n 內建表達式{{$now}}自動填入當前時間。 - 點擊「Execute Node」測試,剛剛的測試資料就會成功寫入 Google Sheet。
步驟五:正式上線,啟動自動化引擎
測試都沒問題後,剩下最後收尾:
- 回到 Webhook 節點,除了 Test URL 之外會有一組 Production URL,把它複製下來。
- 回到
functions.php,把$webhook_url換成這組 Production URL。 - 在 workflow 編輯頁面,點擊右上角的「Active」開關,從 Inactive 切換為 Active。
- 大功告成。現在這條流程 7x24 待命,每次表單提交都會在數秒內自動、準確地同步到 Google Sheets。
還能怎麼擴充?讓自動化更上一層樓
基本同步完成後,n8n 的強大在於擴展性。你可以像玩樂高一樣繼續串接更多節點:
- 增加錯誤告警:在 Google Sheets 節點後串接「IF」節點判斷寫入是否成功;若失敗,自動發 Email 或 Slack 通知自己,第一時間掌握狀況。
- 資料清洗與格式化:寫入前加入「Set」或「Function」節點預先處理資料,例如去除多餘空白、統一手機號碼格式等。
- 多通路通知:除了寫入 Google Sheets,還能同時把資料推送到 CRM 系統(如 HubSpot)、發送 LINE 通知給業務主管,甚至自動建立任務卡。這一切只是多加幾個節點的事。
結論:把機器該做的事交回給機器
我們透過 n8n 與 Google Sheets 自動化,把一個繁瑣的手動任務變成全自動、高效率的系統。這不只省下時間,更改變了工作思維:當你開始用「自動化」的視角檢視每個環節,就會發現無限的優化空間。
從表單提交、訂單處理、客戶服務到內容發佈,WordPress 的每個環節都能透過 n8n 這類工具串接起來。別再讓人去做機器該做的事,現在就把第一個手動任務自動化吧。
如果你在建置過程中有任何疑問,或有更複雜的企業級自動化需求,浪花科技的團隊都樂意協助。我們不只會寫程式,更擅長為你的業務流程找出最聰明的解法。
延伸閱讀
常見問題
如何讓 Contact Form 7 表單資料自動同步到 Google Sheets?
為什麼選擇 wpcf7_mail_sent 這個 Hook 來觸發資料傳送?
串接 n8n Webhook 時,程式碼裡的 sslverify 設成 false 安全嗎?
n8n 的 Test URL 和 Production URL 有什麼差別,正式上線要用哪個?
在 n8n 把資料寫進 Google Sheets 應該用哪個操作避免重複?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。