誰說 SEO 只是做白工?2026 WordPress 多渠道歸因實戰:用程式碼抓出那些被廣告搶功勞的訂單

2026/02/17 | CRM 應用, WP 開發技巧, 企業 SEO 實作, 數位行銷策略

終結數據黑洞:WordPress 多渠道歸因實戰解密

還在為 GA4 報表上虛高的廣告 ROAS 煩惱嗎?工程師揭露,在 Cookie 時代,多渠道歸因不能只看「最後一次點擊」。本文教你如何在 WordPress 底層埋入追蹤哨兵,利用 First-party Cookie 捕捉用戶的「初戀」(First Touch)與「臨門一腳」(Last Touch),並透過 Hook 將數據精準寫入 WooCommerce 訂單。立即停止讓 SEO 的長期耕耘被廣告搶走功勞,運用程式碼還原真實用戶旅程,才能正確計算 LTV。數據不會說謊,別再憑感覺做行銷!立即聯繫我們,構建專屬於您的企業級數據戰情室。

需要專業協助?

聯絡浪花專案團隊 →

誰說 SEO 只是做白工?2026 WordPress 多渠道歸因實戰:用程式碼抓出那些被廣告搶功勞的訂單

嗨,我是 Eric,浪花科技的資深工程師。如果你正在看這篇文章,我猜你八成剛跟行銷主管吵完架,或者看著報表上那欄高得嚇人的「Direct / None」發愁。今天是 2026 年了,如果你還在相信 Google Analytics 4 (GA4) 預設報表告訴你的「所有業績都是 Facebook 廣告帶來的」,那你真的該醒醒了。

在 Cookie 幾乎全面陣亡、瀏覽器隱私權大戰打得火熱的今天,依賴第三方數據就像是在沙灘上蓋城堡。身為工程師,我們不談感覺,我們談數據結構和程式碼。今天這篇文,我不講行銷大道理,我要教你如何在 WordPress 底層埋下「追蹤哨兵」,用程式碼實作多渠道歸因 (Multi-Channel Attribution),徹底分清楚這張訂單到底是 SEO 長期耕耘的果實,還是廣告臨門一腳的功勞。

為什麼你的廣告 ROAS 虛高,但公司卻沒賺錢?

很多老闆看報表只看「最後一次點擊 (Last Touch)」。情況通常是這樣的:

  1. 第一天:使用者在 Google 搜尋「2026 企業 CRM 推薦」,看到了你辛苦寫的 SEO 文章,點進來看了 5 分鐘,覺得不錯,但他正在搭捷運,所以關掉了。(這是 SEO 的功勞,First Touch)
  2. 第三天:使用者在 Facebook 滑手機,看到了你的再行銷廣告(Retargeting),想起了你,點進去晃了一下。
  3. 第七天:使用者決定購買,直接在瀏覽器輸入你的網址,下單。

在傳統的 GA4 報表或廣告後台裡,這筆訂單往往被歸類為「Direct」或是「Facebook 廣告」。於是老闆說:「哇,廣告好棒,SEO 部門在幹嘛?」

聽了是不是很想摔鍵盤?別急,我們用技術來解決這個問題。我們需要在使用者第一次踏入網站時,就給他貼上標籤,並且在結帳的那一刻,把這些標籤全部寫入資料庫。

技術架構:First Touch 與 Last Touch 的雙重捕捉

我們要實作的邏輯很簡單,但很強大。我們利用 First-party Cookie (第一方 Cookie) 來繞過部分第三方追蹤的限制。我們需要紀錄兩個關鍵欄位:

  • Initial Source (首次來源):使用者的「初戀」,這決定了新客是怎麼認識你的。
  • Last Source (最終來源):使用者的「臨門一腳」,這決定了是什麼促使他當下轉單。

Step 1: 在 `functions.php` 埋入歸因邏輯

打開你的佈景主題編輯器(或者是你的 Code Snippets 外掛,拜託,別直接改父主題),我們要寫一段在 WordPress 初始化 (init) 時執行的程式碼。這段程式碼會偵測網址參數 (UTM) 和 Referrer。

Eric 的工程師碎碎念:請注意 Cookie 的安全性設定。2026 年了,SecureHttpOnly 是基本常識,不要讓你的 Cookie 在網路上裸奔。


add_action('init', 'roamer_set_attribution_cookies');

function roamer_set_attribution_cookies() {
    // 如果是管理員,就不追蹤,以免數據失真
    if (is_admin() || current_user_can('manage_options')) {
        return;
    }

    $domain = COOKIE_DOMAIN ? COOKIE_DOMAIN : $_SERVER['HTTP_HOST'];
    $cookie_time = time() + (30 * 24 * 60 * 60); // Cookie 存活 30 天

    // 1. 捕捉 UTM 參數 (這裡簡化示範 utm_source,實際建議捕捉 medium, campaign)
    $source = '';
    if (isset($_GET['utm_source'])) {
        $source = sanitize_text_field($_GET['utm_source']);
    } else if (isset($_SERVER['HTTP_REFERER'])) {
        // 簡單判斷 Referrer
        $referer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
        if ($referer && strpos($referer, $_SERVER['HTTP_HOST']) === false) {
            // 如果是 Google, Bing, Yahoo 等搜尋引擎
            if (preg_match('/(google|bing|yahoo|baidu)/', $referer)) {
                $source = 'organic_search';
            } else if (preg_match('/(facebook|instagram|linkedin|twitter)/', $referer)) {
                $source = 'social_organic';
            } else {
                $source = 'referral_' . $referer;
            }
        }
    }

    // 如果有抓到來源
    if (!empty($source)) {
        // 設定 Last Touch (每次有新來源都覆蓋)
        setcookie('roamer_last_touch', $source, $cookie_time, '/', $domain, true, false); // HttpOnly 設為 false 以便 JS 讀取,或 server 端處理

        // 設定 First Touch (只有當 Cookie 不存在時才設定)
        if (!isset($_COOKIE['roamer_first_touch'])) {
            setcookie('roamer_first_touch', $source, $cookie_time, '/', $domain, true, false);
        }
    }
}

Step 2: 在 WooCommerce 結帳時將數據寫入訂單

光有 Cookie 沒用,我們得在使用者掏錢的那一刻,把這些資訊「烙印」在訂單裡。這樣你的 CRM 或是後台才能永久保存這些數據。


// 當訂單建立時,從 Cookie 讀取資料並存入 Post Meta
add_action('woocommerce_checkout_update_order_meta', 'roamer_save_attribution_to_order');

function roamer_save_attribution_to_order($order_id) {
    $first_touch = isset($_COOKIE['roamer_first_touch']) ? sanitize_text_field($_COOKIE['roamer_first_touch']) : 'direct_unknown';
    $last_touch = isset($_COOKIE['roamer_last_touch']) ? sanitize_text_field($_COOKIE['roamer_last_touch']) : 'direct_unknown';

    update_post_meta($order_id, '_roamer_first_touch', $first_touch);
    update_post_meta($order_id, '_roamer_last_touch', $last_touch);
}

// (選用) 在後台訂單詳情頁顯示,方便人工查看
add_action('woocommerce_admin_order_data_after_billing_address', 'roamer_display_attribution_in_admin', 10, 1);

function roamer_display_attribution_in_admin($order) {
    $first = get_post_meta($order->get_id(), '_roamer_first_touch', true);
    $last = get_post_meta($order->get_id(), '_roamer_last_touch', true);

    echo '

首次來源 (First Touch): ' . esc_html($first) . '

'; echo '

最終來源 (Last Touch): ' . esc_html($last) . '

'; }

解讀數據:抓出「助攻王」與「得分王」

當你累積了一個月的數據後,你可能會發現一些驚人的事實:

  1. SEO 是最強助攻王:你會發現很多訂單的 First Touch 都是 organic_search,但 Last Touch 可能是 facebook_adsline_oa。這代表 SEO 為你帶來了新客,而後續的行銷活動負責收割。如果砍掉 SEO 預算,你的新客源頭就會斷掉,廣告成本會飆升。
  2. 高價產品的決策週期長:對於 B2B 或是高單價商品,First Touch 和 Last Touch 往往不同;而低單價商品這兩者通常相同(衝動消費)。

進階玩法:串接 CRM 進行 LTV 分析

如果你按照我上面的代碼實作,你現在 WordPress 資料庫裡已經有了寶貴的歸因數據。下一步,千萬不要讓這些資料躺在 WP 後台發霉。

你需要透過 API 或 Webhook,將 _roamer_first_touch_roamer_last_touch 這兩個欄位同步到你的 CRM (如 HubSpot, Salesforce 或自建的 Laravel CRM)。

這樣你才能計算:「來自 SEO 的客戶,他們的終身價值 (LTV) 是否比來自 Facebook 廣告的客戶更高?」 根據浪花科技在 2025 年的實戰經驗,答案通常是肯定的。主動搜尋來的客戶,忠誠度與留存率通常高於被動廣告打中的客戶。

結論:別再憑感覺做行銷

程式碼不會說謊。透過簡單的 Cookie 追蹤與 Hook 攔截,我們就能還原使用者的真實旅程。這不僅是為了證明 SEO 的價值,更是為了讓每一分行銷預算都能被正確歸因。

如果你覺得這一切聽起來很美好,但你的網站架構太舊,或是你需要更複雜的跨裝置歸因系統,歡迎找我們聊聊。畢竟,解決技術債這種事,讓專業的來比較快。

不想再讓行銷預算變成糊塗帳?需要構建企業級的數據追蹤系統?

立即聯繫浪花科技,打造你的數據戰情室

推薦閱讀

常見問題 (FAQ)

Q1: 這種追蹤方式違反 GDPR 或隱私法規嗎?

這屬於 First-party Cookie (第一方 Cookie),通常比第三方 Cookie 合規,但建議仍在網站加入 Cookie 同意 Banner (Consent Mode),明確告知使用者你會搜集數據用於分析與改善體驗,以符合 GDPR 與 2026 年的最新法規。

Q2: 如果使用者用無痕視窗 (Incognito) 或是換手機下單,追蹤得到嗎?

純前端 Cookie 無法跨裝置或跨無痕視窗。如果要解決這個問題,需要導入 User ID 追蹤系統(例如要求使用者登入後才記錄)或使用更進階的 Server-side GTM 搭配 CAPI 技術來進行模糊比對,但本文介紹的方法已能涵蓋 70-80% 的一般情境。

Q3: 為什麼我的 Direct 流量還是很高?

Direct 流量來源很多,包括我的最愛、LINE 對話框點擊(APP 內瀏覽器有時會遺失 Referrer)、或是掃描 QR Code。建議在所有對外發布的連結(包含 QR Code)都嚴格加上 UTM 參數,能大幅減少不明來源的流量。