先講一個讓很多行銷崩潰的真相:在傳統作法裡,每加一顆追蹤事件,你都得寫需求單、排工程師的隊、等上線、等測試,一顆事件折騰兩週是常態。等你好不容易埋好一顆,行銷檔期都換了。這就是為什麼那麼多店家的 GA4 電商追蹤永遠殘缺——不是不想埋,是埋一次太痛。
Google Tag Manager(GTM)就是來解這個痛的。它的核心概念是:工程師只需要幫你做一件事——在關鍵動作發生時,把資料推進一個叫 dataLayer 的資料層;剩下的「要送哪些事件、送去哪、帶哪些參數」全部在 GTM 後台用點選設定,不用再改網站程式碼。一次性接好 dataLayer,之後行銷自己就能加事件、改參數、上線,當天就能生效。這篇帶你把這套流程從零建起來。
先建立心智模型:dataLayer 是工程師與行銷的交接台
把 dataLayer 想像成餐廳廚房的「出餐台」。工程師是廚房,負責在對的時機把菜(資料)端上出餐台;GTM 是外場,負責從出餐台把菜端給客人(GA4)。兩邊只透過出餐台溝通,互不干涉對方內部怎麼運作。
具體來說,dataLayer 是一個全域的 JavaScript 陣列。工程師在使用者做關鍵動作時,用 dataLayer.push(...) 把一包資料推上去;GTM 監聽這個推送,抓出裡面的資料,組成 GA4 事件送出。這個分工的好處是責任清楚:工程師只保證「資料有正確推上 dataLayer」,行銷在 GTM 決定「這包資料怎麼變成 GA4 事件」,兩邊各改各的,不用每次都動到對方。
第一步:讓工程師把電商資料 push 進 dataLayer
這是唯一需要工程師幫忙的部分,而且只需要做一次。以 purchase 為例,請工程師在訂單完成頁、資料備妥後,放上這樣一段(注意 GA4 電商格式要先 push 一個 ecommerce: null 清空舊資料,避免跨事件污染):
- window.dataLayer = window.dataLayer || [];
- dataLayer.push({ ecommerce: null });
- dataLayer.push({
- event: 'purchase',
- ecommerce: {
- transaction_id: 'ORD-20260714-0087',
- value: 2560,
- currency: 'TWD',
- items: [{ item_id: 'SKU-1024', item_name: '日式棉麻寬褲', price: 1280, quantity: 2 }]
- }
- });
這裡有兩個關鍵:event 這個 key 是 GTM 用來當觸發訊號的名稱(等等在 GTM 設觸發條件會用到);而 ecommerce: null 這行是防止資料殘留的必要步驟——不清空的話,上一個事件的 items 可能會被帶進下一個事件,造成商品資料錯亂。add_to_cart、view_item、begin_checkout 都比照同樣結構,只是 event 名稱與 ecommerce 內容換掉。
第二步:在 GTM 建立資料層變數
資料推上來了,接著要在 GTM 告訴它「怎麼把這包資料的每個欄位取出來」。進 GTM 後台 → 變數 → 新增使用者定義變數 → 選「資料層變數」,然後:
- 變數名稱取 DLV - ecommerce,資料層變數名稱填 ecommerce(一次抓整包電商物件,最省事)
- 如果只想抓某個欄位,資料層變數名稱可以用點記法,例如 ecommerce.transaction_id 或 ecommerce.value
建議至少建一個抓整包的 DLV - ecommerce,之後 GA4 代碼可以直接把整包電商資料塞進去,比一個欄位建一個變數輕鬆很多。變數的作用就是 GTM 的「取料管道」,設好一次,所有電商事件共用。
第三步:設定觸發條件(Trigger)
觸發條件決定「GA4 代碼在什麼時候開火」。因為工程師已經在 dataLayer push 了帶 event 名稱的訊號,我們就用「自訂事件」觸發最精準。以 purchase 為例:進 GTM → 觸發條件 → 新增 → 選「自訂事件」:
- 事件名稱填 purchase(要跟工程師 push 的 event 值一模一樣,大小寫都要對)
- 選「部分自訂事件」時可加條件,一般用「所有自訂事件」即可
這一步的雷點最多:觸發時機錯,資料就全錯。最常見的是「用瀏覽頁面觸發 purchase」,但 dataLayer 的 push 可能在頁面載入後才跑,代碼開火時資料還沒到,送出去的是空的。用「自訂事件」觸發就能避開——因為它是等到 push 那一刻才開火,資料保證已經在 dataLayer 上。同理,add_to_cart 要用自訂事件對應加購 push,不要用「所有點擊」硬抓按鈕,那很容易誤觸或漏觸。
第四步:建立 GA4 事件代碼(Tag)
最後把三者組起來。進 GTM → 代碼 → 新增 → 選「Google Analytics:GA4 事件」:
- 設定代碼選你的 GA4 設定代碼(裡面放你的評估 ID,即 G- 開頭那串)
- 事件名稱填 purchase
- 展開「更多設定 → 電子商務」,勾選 載入電子商務資料,資料來源選 Data Layer(這一步會自動把 dataLayer 裡的 ecommerce 物件對應成 GA4 電商參數,含 items)
- 觸發條件選剛剛建的 purchase 自訂事件觸發條件
「載入電子商務資料 → Data Layer」這個勾選是關鍵中的關鍵:勾了它,GTM 才會自動把 items 陣列、value、currency、transaction_id 全部照 GA4 規格對應好,你不用一個一個手動設參數。這也是為什麼工程師 push 時一定要用標準的 ecommerce 物件結構——結構對,GTM 才對得起來。
怎麼驗證:GTM 預覽模式與 GA4 DebugView 雙保險
設完先別急著發布。GTM 右上角有個「預覽」按鈕,點下去輸入你的網站網址,會開啟一個帶偵錯面板的視窗(Tag Assistant)。你在網站上實際走一次下單流程,偵錯面板左側會列出每個觸發的事件;點進 purchase 那筆,右側能看到:哪些代碼被觸發(Tags Fired)、dataLayer 當下的內容、變數解析出的值。
驗證重點:一,purchase 代碼有沒有在「訂單完成」那一刻正確 Fired、有沒有誤觸;二,點 Data Layer 分頁確認 transaction_id、value、items 都在;三,同步開 GA4 的 DebugView,確認事件真的送達 GA4 且參數完整。GTM 預覽看「代碼有沒有正確開火」,GA4 DebugView 看「資料有沒有正確送達」,兩個一起看才是完整驗證。都對了,再回 GTM 按「提交/發布」正式上線。
破一個迷思,加一段 AI 應用
先破迷思:很多人以為 GTM 裝了就等於在追蹤電商——不是。GTM 只是個容器,你不設代碼、工程師不 push dataLayer,它什麼都不會做。GTM 的價值是「把設定權從程式碼搬到後台」,不是「自動幫你追蹤」。這件事沒有免費午餐,dataLayer 那一次性接線省不掉。
AI 在這套流程裡很好用:你可以請 AI「幫我寫一段符合 GA4 標準的 add_to_cart dataLayer.push,含清空 ecommerce 與 items 陣列」,或把你的 dataLayer 結構貼給它,請它幫你寫一份「給工程師的埋設說明文件」,溝通成本大降。但要誠實面對限制——AI 產的 dataLayer 程式碼一定要人工驗證再交給工程師,別直接貼上線。AI 常常漏掉 ecommerce: null 清空、把 event 名稱拼錯、或用了跟你 GTM 觸發條件對不上的名稱。正確做法是:AI 產草稿 → 你核對 event 名稱與結構 → 進 GTM 預覽模式實測 → DebugView 確認 → 才發布。AI 幫你寫初稿,把關的還是人。
劃重點總結
GTM 加 dataLayer 的價值,是把追蹤設定的主導權從工程師手上搬回行銷手上:工程師只需一次性把電商資料 push 進 dataLayer,之後加事件、改參數都在 GTM 後台點選完成。四個步驟記牢——工程師 push dataLayer(記得 ecommerce: null 清空)、建資料層變數、設自訂事件觸發條件、建 GA4 事件代碼並勾「載入電子商務資料 → Data Layer」。最大的雷是觸發時機,用自訂事件對應 push 就能避開空資料。上線前一定要 GTM 預覽加 GA4 DebugView 雙重驗證。把這套接好,你的追蹤就不用再排隊等兩週了。