拒絕罐頭訊息!用 CRM 消費分級驅動 WordPress 自動化文案生成的技術實戰

2026/02/3 | AI 人工智慧新知, CRM 應用, WC 開發, WP 開發技巧

拒絕罐頭訊息:WordPress 自動化文案的 VVIP 級實戰部署

您的 VVIP 還在收首購優惠嗎?這種資料傲慢正在流失客群。工程師 Eric 帶您進入硬核實戰,教您如何利用 WordPress/WooCommerce 的消費數據,建立一個動態文案引擎,即時判斷客戶「含金量」。本文將展示從程式碼分級、高度彈性的文案策略陣列,到解決棘手的快取(Cache)問題的完整技術棧。別再讓您的數據沉睡,浪費流量!立即啟動千人千面的個人化行銷專案,將您的 CMS 升級成聰明的銷售特務,極大化轉換率!

需要專業協助?

聯絡浪花專案團隊 →

拒絕罐頭訊息!用 CRM 消費分級驅動 WordPress 自動化文案生成的技術實戰

嗨,我是 Eric。身為一個在程式碼堆裡打滾多年的工程師,我最受不了的一件事就是:當我在某個電商網站買了幾萬塊的設備,結果登入首頁時,它還是跳出一個彈窗跟我說:「嘿!首購滿千折百喔!」

這感覺就像你每個禮拜都去同一家高級牛排館吃飯,結果服務生每次都問你:「先生第一次來嗎?需要幫您介紹菜單嗎?」這不是禮貌,這是資料的傲慢。在 2026 年的今天,這種「一視同仁」的行銷方式,基本上就是在浪費流量,甚至是在趕客。

今天這篇文章不講虛無縹緲的行銷理論,我們要來點硬核的。我要教你如何利用 WordPress (WooCommerce) 結合 CRM 的消費數據,透過程式碼自動判斷使用者的「含金量」等級,並即時生成(而不只是替換)專屬於該等級的個人化文案。這才是真正的「千人千面」。

為什麼你的 VVIP 收到的是「新客優惠」?資料孤島的代價

很多企業都有 CRM (HubSpot, Salesforce) 也有 WordPress 官網,但這兩者通常是分居狀態。CRM 知道這個人是身價百萬的大戶,但 WordPress 只知道這是一個剛登入的 User ID 5566。

要解決這個問題,我們不需要重寫整個系統,只需要在 WordPress 的佈景主題 (Theme) 或客製化外掛中,建立一個「中間層邏輯」。這個邏輯負責做三件事:

  • 識別身份:確認目前瀏覽者是誰。
  • 撈取數據:從資料庫或 CRM API 獲取他的歷史消費總額 (LTV)。
  • 動態生成:根據等級,呼叫 AI 或使用預設邏輯,產出對應的文案。

第一步:從 WooCommerce 撈取「含金量」數據

首先,我們別把事情搞太複雜去 Call 外部 API(那會有延遲問題,影響 LCP)。最快的方法,是直接讀取 WooCommerce 的歷史訂單數據。在 2026 年,伺服器效能已經過剩,簡單的 SQL 查詢或內建函數這點負載根本是小菜一碟。

這段程式碼可以放在你的 functions.php 或者自製外掛中:


/**
 * 取得使用者的消費分級
 * 回傳: 'vip', 'regular', 'new', 'guest'
 */
function eric_get_user_tier( $user_id = 0 ) {
    if ( ! $user_id ) {
        $user_id = get_current_user_id();
    }

    // 如果沒登入,就是路人甲
    if ( 0 === $user_id ) {
        return 'guest';
    }

    // 使用 WooCommerce 內建函式取得總消費額
    // 這比自己寫 SQL Join 更安全且相容性更高
    $total_spent = wc_get_customer_total_spent( $user_id );

    // 這裡的門檻值建議寫在後台設定頁,方便行銷人員調整
    // 但為了 demo 方便,我先寫死 (Hard code)
    if ( $total_spent >= 50000 ) {
        return 'vip'; // 大戶
    } elseif ( $total_spent >= 5000 ) {
        return 'regular'; // 熟客
    } else {
        return 'new'; // 新手村
    }
}

這段 Code 很簡單,但卻是整個個人化引擎的心臟。有了它,我們就不再是盲目地推播內容了。

第二步:不只是 if/else,而是「動態文案引擎」

傳統的做法是寫一堆 if ($tier == 'vip') { echo '...'; }。這太無聊了,而且維護起來很痛苦。如果行銷團隊明天想把 VIP 的稱呼改成「尊榮黑卡會員」,你就得去改程式碼。

更進階的做法是,我們定義好不同等級的「Prompt Context(提示語境)」,然後讓文案自動組裝。在 2026 年,我們甚至可以串接本地端的輕量級 LLM (Large Language Model) 來即時潤飾語氣。

以下是一個不依賴外部 API,但具備高度彈性的實作架構:


function eric_generate_personalized_copy( $location_context = 'home_banner' ) {
    $tier = eric_get_user_tier();
    
    // 定義不同等級的文案策略
    $strategies = [
        'vip' => [
            'tone' => '尊榮、專屬、簡潔',
            'offer' => '專屬秘書服務',
            'greeting' => '歡迎回來,尊貴的會員',
        ],
        'regular' => [
            'tone' => '熱情、親切',
            'offer' => '老客戶 9 折回饋',
            'greeting' => '嗨!好久不見',
        ],
        'new' => [
            'tone' => '興奮、引導性強',
            'offer' => '首購免運',
            'greeting' => '歡迎加入我們',
        ],
        'guest' => [
            'tone' => '好奇、吸引',
            'offer' => '註冊領 100',
            'greeting' => '探索無限可能',
        ]
    ];

    $strategy = $strategies[$tier] ?? $strategies['guest'];

    // 這裡可以是一個簡單的字串替換,也可以是更複雜的 AI 生成邏輯
    // 為了效能,我們這裡示範模版替換法
    
    $copy_template = "
"; $copy_template .= "

{$strategy['greeting']}

"; $copy_template .= "

針對您的消費習慣,我們推薦:{$strategy['offer']}

"; $copy_template .= "
"; return $copy_template; }

進階:為什麼工程師要懂行銷?

你看上面的程式碼,重點不在於 PHP 怎麼寫,而在於那個 $strategies 陣列的設計。這就是工程師與行銷團隊的交集點。你可以把這個陣列做成一個 WordPress Option Page,讓行銷人員自己在後台填寫「尊榮感」的定義,而你只需要負責邏輯實現。

第三步:處理最棘手的「快取 (Cache)」問題

這是我一定要囉唆的地方。做個人化內容,最大的敵人不是程式邏輯,而是快取外掛 (Caching Plugins)

如果你的網站有用 WP Rocket、LiteSpeed Cache 或 Cloudways 的 Varnish,通常 HTML 會被快取起來。這會導致一個災難性的後果:A 客戶(VIP)登入後看到的頁面被快取了,結果 B 客戶(路人)進來,也看到了「歡迎回來,尊貴的會員」的畫面。這不僅尷尬,還可能洩漏資訊。

解決方案有兩種:

  1. AJAX 後載入: 頁面載入時先放一個 Placeholder (佔位符),然後用 JavaScript 發送 AJAX 請求,後端 PHP 判斷完身份後再回傳 HTML。這是最穩的做法。
  2. ESI (Edge Side Includes): 如果你用 LiteSpeed 或進階 CDN,可以用 ESI 標籤挖洞,讓那個區塊「不被快取」。

這裡提供一個簡單的 AJAX 前端實作概念 (jQuery 版本,因為 WordPress 內建):


// 前端 JS
jQuery(document).ready(function($) {
    if ($('#smart-banner-container').length) {
        $.ajax({
            url: localized_data.ajax_url,
            type: 'POST',
            data: {
                action: 'get_personalized_banner',
                security: localized_data.nonce
            },
            success: function(response) {
                if(response.success) {
                    $('#smart-banner-container').html(response.data);
                }
            }
        });
    }
});

2026 年的下一步:串接 Local LLM

現在手機和電腦的算力都很強,未來的趨勢不是每次都 Call OpenAI API (太貴且有隱私問題),而是透過 WebLLM 等技術,或者在伺服器端跑一個輕量模型。

你可以想像,當系統偵測到這個 VIP 客戶最近買了很多「露營用品」,我們不只是推播「露營燈」,而是由 AI 生成一段文案:「上次的露營還愉快嗎?為了您的下一次山林冒險,我們準備了更輕量化的帳篷…」。這種情境式 (Context-aware) 的推播,轉換率通常是罐頭訊息的 3 倍以上。

結論:別讓數據睡在資料庫裡

很多老闆會問:「Eric,做這個功能要花多久?」我會說,寫 Code 只要半天,但定義「什麼樣的客戶該看什麼樣的內容」需要你們行銷團隊動腦。

技術只是載體。透過 WordPress 強大的 Hook 機制與 WooCommerce 的數據底層,我們完全可以把一個死板的 CMS,改造成一個懂人心的 Sales Agent。別再讓你的 VIP 覺得自己跟路人沒兩樣了。

想了解更多關於如何將這些數據自動化應用到你的網站上?可以參考我們之前寫過的幾篇深度文章:

延伸閱讀

你的網站還在發送無效的罐頭行銷訊息嗎?

別浪費你的流量與會員數據。讓浪花科技幫你打造真正的「自動化個人行銷引擎」。

立即聯繫我們,啟動個人化行銷專案

常見問題 (FAQ)

Q1: 這種判斷邏輯會不會讓網站變慢?

如果直接在資料庫進行複雜查詢(如 JOIN 大量資料表),確實會影響效能。但透過 `wc_get_customer_total_spent` 這類已優化的函式,加上適當的 Transients API (暫存) 或 Redis 快取,對效能的影響微乎其微。重點是「不要在前端渲染時才做重運算」,最好是背景計算好存入 User Meta。

Q2: 如果我沒有用 WooCommerce,是用其他 CRM 怎麼辦?

原理是一樣的。如果是外部 CRM (如 Salesforce, HubSpot),我們通常會寫一支 Webhook 接收器,當 CRM 那邊的消費等級變更時,推送到 WordPress 並更新該 User 的 Meta Data。這樣 WordPress 讀取時依然是讀取本地數據,不需要每次都 Call 外部 API,保證網站速度。

Q3: 這種個人化內容可以應用在 Email 嗎?

絕對可以,而且效果更好。你可以利用這裡提到的邏輯,配合 WordPress 的自動化外掛 (如 AutomateWoo 或 FluentCRM),在發送 Email 前動態置換內容區塊。例如 VIP 收到的信件主旨是「專屬邀請」,而一般會員收到的是「限時折扣」。

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