訂單一來,自動歸檔通知?揭秘 WooCommerce Webhook 自動化訂單流程,讓你躺著也賺錢!

2025/07/15 | WC 開發

訂單一來,自動歸檔通知?揭秘 WooCommerce Webhook 自動化訂單流程,讓你躺著也賺錢!

嗨,我是浪花科技的 Eric。身為一個天天跟程式碼打交道的工程師,我最看不慣的就是「重複」且「手動」的工作。特別是看到很多電商老闆,訂單一進來,就開始手忙腳亂地複製客戶資料到 Excel、手動通知出貨部門、再把 Email 加到電子報系統⋯⋯天啊,光想就覺得累!在 2025 年的今天,這些事情早就該讓機器代勞了。

今天,我就要來揭秘一個 WooCommerce 內建的強大武器,它能徹底解放你的雙手,讓你的訂單處理流程全自動化,它就是 —— Webhook。別被這個技術名詞嚇到,我會用最白話的方式,從觀念到實戰,帶你一步步打造一個聰明又高效的 WooCommerce 自動化訂單流程

到底什麼是 Webhook?工程師的白話文翻譯

很多人聽過 API,但對 Webhook 總是一知半解。我來打個比方:

  • API (輪詢 Polling): 你想知道餐廳的披薩烤好了沒,所以你每五分鐘打一次電話去問:「好了嗎?」「好了嗎?」。這種方式不僅煩人,而且浪費你和餐廳雙方的時間與資源。在網站世界裡,這就是不斷地去請求伺服器,非常消耗效能。
  • Webhook (推送 Push): 你跟餐廳說:「披薩烤好後,直接打電話通知我。」然後你就去做自己的事了。一旦披薩好了,餐廳會主動打給你。這就是 Webhook 的運作模式——由事件觸發,主動推送通知。

簡單來說,Webhook 就像一個「事件通知系統」。當 WooCommerce 裡發生了某個特定事件(例如:新訂單成立、訂單付款完成、商品庫存不足),它就會自動把相關資料「推送」到你指定的網址 (URL)。這種方式即時、高效,而且對伺服器的負擔極小。身為工程師,我必須囉唆一句:能用 Webhook 就不要用輪詢,你的伺服器會感謝你。

解放雙手!WooCommerce Webhook 自動化訂單流程的應用場景

理論講完了,我們來看看 Webhook 這個神奇的工具,到底能幫我們完成哪些苦差事。一旦你打通了 WooCommerce 的任督二脈,你會發現可能性是無窮的:

  • 即時通訊通知: 新訂單成立時,自動發送一則訊息到你團隊的 Slack 或 Discord 頻道,讓所有人第一時間掌握狀況。
  • 客戶關係管理 (CRM) 同步: 當客戶完成第一筆訂單後,自動將他的資料新增到 HubSpot 或其他 CRM 系統,方便後續追蹤與再行銷。
  • 會計軟體整合: 每當訂單付款完成,自動將訂單金額、品項等資訊寫入 Google Sheets 或你的會計軟體,月底對帳不再是惡夢。
  • 物流系統串接: 當訂單狀態更新為「已出貨」,自動將出貨資訊(如物流單號)傳送到第三方物流平台,或發送出貨通知給客戶。
  • 客製化行銷郵件: 針對購買特定商品的客戶,自動將他們加入特定的電子報名單,進行精準的後續行銷。

看到這裡,你是不是已經開始想像那個訂單一來,所有事情自動完成的美好畫面了?別急,接下來我們就動手實作!

實戰教學 (一):菜鳥也能上手!用內建功能建立你的第一個 Webhook

很多人不知道,WooCommerce 本身就內建了強大的 Webhook 功能,完全不需要安裝額外外掛。我們就從最簡單的開始,建立一個「新訂單成立時,發送通知」的 Webhook。

步驟一:前往 WooCommerce 設定

首先,登入你的 WordPress 後台,在左側選單找到「WooCommerce」 -> 「設定」,然後點擊上方的「進階」分頁,再選擇「Webhook」。

步驟二:新增 Webhook

點擊「新增 Webhook」按鈕,你會看到一個設定表單。別怕,我們一個個來看:

  • 名稱: 給這個 Webhook 取個好記的名字,例如「新訂單通知到 Slack」。
  • 狀態: 選擇「啟用」,它才會開始工作。
  • 主題: 這是最重要的部分,也就是觸發條件。WooCommerce 提供了超多選項,像是「訂單已建立」、「訂單已更新」、「商品已刪除」等等。這裡我們選擇「訂單已建立 (Order created)」。
  • 傳送 URL: 這是 Webhook 要把資料送到哪裡的地址。為了測試,我強烈推薦一個超好用的免費工具:Webhook.site。打開這個網站,它會給你一個專屬的 URL,直接複製貼上來就好。
  • 密鑰 (Secret): 這是一個安全機制,你可以把它想像成一個密碼。WooCommerce 送出資料時會用這個密鑰簽名,接收方可以用同樣的密鑰來驗證資料來源是否可信。雖然測試時可以不填,但正式上線時,這是一個非常重要的安全習慣。

步驟三:觸發與驗證

設定儲存後,就來實際下一筆測試訂單吧!當你完成訂單後,馬上切換到剛剛打開的 Webhook.site 頁面,你會驚喜地發現,一長串資料已經被接收到了!這串 JSON 格式的資料,就是 WooCommerce 推送過來的訂單詳情,裡面包含了所有你需要的一切:客戶資訊、商品品項、金額、運送地址等等。恭喜你,你已經成功建立了第一個自動化流程的起點!

實戰教學 (二):高手進階!用程式碼打造無所不能的客製化串接

內建功能雖然方便,但如果你想做更複雜的處理,例如只傳送特定格式的資料,或是在傳送前先進行一些運算,那麼自己動手寫程式碼才是王道。身為一個追求極致的工程師,當然要來點硬核的。

外掛雖然方便,但有時候就是不夠彈性,或者你不想網站裝一堆有的沒的拖慢速度。這時候,自己寫 Code 才是根本的解決之道。我們來示範一個常見情境:當訂單狀態變為「已完成」時,自動發送一則簡潔的通知到 Slack。

核心武器:Action Hooks 與 wp_remote_post()

在 WordPress 的世界裡,`Hooks` (鉤子) 是我們的超能力。我們將使用 `woocommerce_order_status_completed` 這個 Action Hook,它會在訂單狀態變為「已完成」時被觸發。然後,我們用 WordPress 內建的 `wp_remote_post()` 函式來發送 HTTP 請求,也就是把資料送到 Slack。

程式碼範例:訂單完成後自動通知 Slack

首先,你需要去 Slack 建立一個「Incoming Webhook」應用,它會給你一個專屬的 URL。然後,把下面的程式碼加到你的子佈景主題的 `functions.php` 檔案中。


add_action( 'woocommerce_order_status_completed', 'roamer_send_order_completed_to_slack', 10, 1 );

function roamer_send_order_completed_to_slack( $order_id ) {
    // 透過訂單 ID 取得訂單物件,這是基本功
    $order = wc_get_order( $order_id );

    // 如果沒抓到訂單物件,就直接閃人,不要浪費資源
    if ( ! $order ) {
        return;
    }

    // 你的 Slack Webhook URL,千萬不要直接寫在程式碼裡,用常數或設定選項比較安全
    // 這裡為了教學方便直接寫上,正式環境請務必注意!
    $slack_webhook_url = 'https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK_URL';

    // 組合我們要傳送的訊息,只挑重點,不要囉哩叭唆
    $order_number = $order->get_order_number();
    $order_total = $order->get_formatted_order_total();
    $customer_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();

    $message = sprintf(
        "🎉 新訂單完成!\n訂單編號: #%s\n客戶: %s\n總金額: %s",
        $order_number,
        $customer_name,
        $order_total
    );

    // 準備要 POST 的資料
    $payload = [
        'text' => $message,
    ];

    $args = [
        'body'    => json_encode( $payload ),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'timeout' => 15, // 設定一個合理的超時時間
    ];

    // 發送請求!
    $response = wp_remote_post( $slack_webhook_url, $args );

    // (可選) 檢查是否有錯誤,並記錄下來,出問題才好查
    if ( is_wp_error( $response ) ) {
        // 在這裡你可以寫入 log 檔
        error_log( 'Slack Webhook failed: ' . $response->get_error_message() );
    }
}

把上面的 `YOUR/SLACK/WEBHOOK_URL` 換成你自己的,儲存後,當任何一筆訂單狀態變成「已完成」,你的 Slack 頻道就會立刻收到通知。是不是很酷?這就是用程式碼客製化的彈性與威力!

工程師的囉唆時間:Webhook 避坑指南

Code 寫完能動只是第一步,要寫得好、寫得穩,才是真功夫。在玩轉 Webhook 的時候,請務必記住我這幾點囉唆的提醒:

  • 安全永遠第一: 務必使用 HTTPS 的 URL。對於接收端的應用,一定要驗證前面提到的「密鑰 (Secret)」或簽名,確保不是來路不明的請求。千萬不要把沒有驗證機制的 Webhook 端點暴露在公網上,那跟把家門鑰匙插在門上沒兩樣。
  • 失敗乃兵家常事: 網路不是永遠可靠的。接收服務可能會掛掉、網路會抖動。你的自動化流程需要考慮到「重試機制」。有些專業的自動化平台(如 n8n)會內建重試功能,但如果你是自己寫 code,可能就要考慮把失敗的任務放到一個佇列 (Queue) 裡稍後重試。
  • 日誌 (Logging) 是你的好朋友: 當 Webhook 沒反應時,如果你沒有任何日誌,那跟盲人摸象沒什麼區別。在 WooCommerce 的「狀態」->「紀錄」裡,可以找到 Webhook 的傳送紀錄。如果是自己寫的程式,也要記得用 `error_log()` 把重要的成功或失敗訊息記錄下來。
  • 不要一次傳太多: 如果你的網站瞬間湧入大量訂單,可能會同時觸發大量的 Webhook。要注意接收端服務是否有 API 請求頻率限制 (Rate Limit),避免因為請求太頻繁而被暫時封鎖。

結論:讓自動化成為你的超級員工

從手動複製貼上,到全自動化的訂單處理流程,WooCommerce Webhook 就是那座關鍵的橋樑。它不僅能為你節省下大把的寶貴時間,更能顯著降低人為操作的錯誤率,讓你的電商營運更加順暢、更具規模化的潛力。

今天我們從觀念、基本設定到進階的程式碼實作,完整走了一遍。希望你能動手嘗試,無論是先從簡單的內建功能開始,還是直接挑戰程式碼,當你成功建立第一個自動化流程時,那種成就感絕對是無可取代的。讓自動化成為你 24 小時不打烊的超級員工吧!

延伸閱讀

需要更進階的 WooCommerce 自動化解決方案嗎?

看完了這篇文章,你是否對 WooCommerce 的自動化充滿了想像,卻不知道該如何下手?或是你的需求更複雜,需要串接公司內部的 ERP、客製化的物流系統?

浪花科技團隊擁有豐富的 WooCommerce 開發與系統串接經驗,我們能協助你打造穩定、高效、安全的客製化自動化流程,讓技術真正成為你生意的助力。歡迎點擊這裡填寫表單,與我們的專業顧問聊聊你的需求!

常見問題 (FAQ)

Q1: 什麼是 WooCommerce Webhook?

A1: WooCommerce Webhook 是一種事件通知機制。當你的網路商店中發生特定事件時(例如接到新訂單、客戶付款),它會自動將相關的訂單或客戶資料,以數據包(通常是 JSON 格式)的形式,即時地「推送」到你指定的網址 (URL)。這讓你可以輕鬆地將 WooCommerce 與其他第三方服務(如 Slack、Google Sheets、CRM 系統)連接起來,實現流程自動化。

Q2: 我需要會寫程式才能使用 Webhook 嗎?

A2: 不一定!對於許多常見的應用,你可以使用 WooCommerce 內建的 Webhook 功能,搭配像 Zapier 或 n8n 這類無程式碼 (No-code) 的自動化平台來接收資料,完全不需要寫一行程式碼。但如果你需要進行更複雜的資料處理、客製化邏輯或與特殊系統對接,那麼具備基礎的 PHP 程式設計能力,將能讓你發揮 Webhook 的最大潛力。

Q3: 使用 Webhook 安全嗎?

A3: Webhook 的安全性取決於你的設定。為了確保安全,你應該遵守幾個基本原則:1. 務必使用 HTTPS 加密的 URL 作為接收端點。2. 設定並在接收端驗證「密鑰 (Secret)」,確保資料來源是可信的 WooCommerce 網站。3. 不要在 Webhook 的資料中傳遞過於敏感的資訊,如完整的信用卡號碼。

Q4: 我的 Webhook 沒有觸發,該如何檢查問題?

A4: 如果你的 Webhook 沒有如預期般運作,可以從以下幾個地方開始偵錯:1. 檢查 WooCommerce 後台的 Webhook 設定,確認「狀態」為啟用、「主題」和「傳送 URL」都正確無誤。2. 前往 WooCommerce -> 狀態 -> 紀錄,從下拉選單中選擇 `webhook-delivery` 開頭的日誌檔,查看是否有傳送失敗的紀錄與錯誤訊息。3. 使用像 Webhook.site 這樣的工具作為你的傳送 URL,先確認 WooCommerce 這端是否能正常發送資料。

 
立即諮詢,索取免費1年網站保固