電商追蹤實作
你已經知道什麼是事件、什麼是 Data Layer。現在我們要把它們組合起來,完成電商追蹤中最重要的一件事:讓 GA4 知道「誰買了什麼、花了多少錢」。
這就是 purchase 事件。
purchase 事件的完整資料結構
一筆完整的 purchase 事件需要這些資料:
| 欄位 | 層級 | 說明 | 範例 |
|---|---|---|---|
event | 最外層 | 事件名稱 | "purchase" |
transaction_id | ecommerce | 訂單編號(唯一) | "T20240301-001" |
value | ecommerce | 訂單總金額 | 2680 |
currency | ecommerce | 幣別 | "TWD" |
tax | ecommerce | 稅金 | 0 |
shipping | ecommerce | 運費 | 60 |
coupon | ecommerce | 優惠券代碼 | "SUMMER20" |
items | ecommerce | 商品陣列 | [{...}, {...}] |
組裝一筆完整的 purchase 事件
我們用一個實際的電商訂單來組裝:
訂單情境: 客戶買了 2 件經典白T恤(590 元/件)和 1 雙運動鞋(1,500 元),使用優惠券 SUMMER20 折 200 元,運費 60 元。
為什麼要先 push { ecommerce: null }?
養成好習慣:每次 push 電商事件之前,先 push
{ ecommerce: null }清除前一筆資料。
計算訂單金額
value 是客戶「實際付款金額」,通常的計算方式:
value = Σ(price × quantity) - discount + shipping
GTM 的電商代碼設定(後台操作)
寫好 dataLayer.push 之後,你還需要在 GTM 後台設定對應的代碼和觸發條件:
步驟一:建立觸發條件
- GTM 後台 → 觸發條件 → 新增
- 類型選「自訂事件」
- 事件名稱填
purchase - 儲存
步驟二:建立 GA4 事件代碼
- GTM 後台 → 代碼 → 新增
- 代碼類型選「Google Analytics:GA4 事件」
- 評估 ID 填入你的 GA4 Measurement ID(格式:
G-XXXXXXX) - 事件名稱填
purchase - 勾選「傳送電子商務資料」→ 資料來源選「Data Layer」
- 觸發條件選剛才建的
purchase觸發條件 - 儲存
步驟三:設定所有電商事件的對照
| dataLayer event | GTM 觸發條件 | GTM 代碼 |
|---|---|---|
view_item | 自訂事件 = view_item | GA4 事件:view_item |
add_to_cart | 自訂事件 = add_to_cart | GA4 事件:add_to_cart |
begin_checkout | 自訂事件 = begin_checkout | GA4 事件:begin_checkout |
purchase | 自訂事件 = purchase | GA4 事件:purchase |
注意:每個電商事件的 GA4 代碼都要勾選「傳送電子商務資料」→ 來源選「Data Layer」。
完整的使用者旅程
把所有事件串在一起,模擬一個完整的購物流程:
本課重點
purchase事件是電商追蹤的核心,讓 GA4 知道營收來自哪裡transaction_id必須唯一,用來避免重複計算value是實付金額,記得帶currency- 每次 push 電商事件前,先 push
{ ecommerce: null }清除殘留資料 - GTM 後台需要對每個電商事件建立觸發條件和 GA4 事件代碼
下一課我們來學怎麼驗證追蹤碼是否正確運作——除錯與驗證。
AI 協作:學了這個,跟 AI 怎麼配合?
電商追蹤的程式碼格式固定,非常適合讓 AI 幫你批量生成。你負責提供商品資料結構和訂單邏輯,AI 幫你組裝 dataLayer.push。
你的人類優勢:
- 你知道公司的訂單資料有哪些欄位可用
- 你能確認折扣、運費的計算邏輯是否正確
可以這樣跟 AI 說:
我的電商訂單有這些欄位:order_id, total_amount, discount, shipping_fee, items(含 sku, name, price, qty)。請幫我寫一個函數,把這些資料轉換成 GA4 purchase 事件的 dataLayer.push 格式。
練習題
互動示範
挑戰任務
請組裝一筆 purchase 事件的 dataLayer.push,transaction_id 為 "T-999",value 為 1200,currency 為 "TWD",items 中有一件 item_name 為 "帽子"、price 為 1200、quantity 為 1。最後印出 transaction_id。
請宣告 items = [{price: 300, quantity: 2}, {price: 500, quantity: 1}],用 for 迴圈計算所有商品的小計總和,再加上 shipping = 60,用 console.log 印出最終的 value。