Data Layer 資料層
GTM 怎麼知道使用者在你的網站上做了什麼?它不會讀心術,它需要你「告訴」它。
而你告訴它的方式,就是透過 Data Layer。
Data Layer 是什麼?
window.dataLayer 是一個 JavaScript 陣列,存在於網頁的記憶體中。它就像一個公佈欄:
| 角色 | 做什麼 |
|---|---|
| 網站程式碼 | 把事件資訊「貼」到公佈欄上(dataLayer.push) |
| GTM | 一直盯著公佈欄,有新消息就根據規則行動 |
| GA4 | 收到 GTM 轉發的消息,記錄到報表裡 |
簡單說:dataLayer 是網站和 GTM 之間的溝通橋樑。
看看 dataLayer 長什麼樣
當你在一個有裝 GTM 的網站打開瀏覽器的開發者工具(Console),輸入 dataLayer 就能看到它的內容。
讓我們模擬一個 dataLayer:
用 push 送出事件
dataLayer.push() 是最核心的方法——把一筆資料「推」進 dataLayer:
每次 push,GTM 就會收到通知,然後根據你設定的規則(觸發條件)決定要不要把這筆資料送給 GA4。
push 的資料結構
每次 push 的物件通常包含:
| 欄位 | 說明 | 範例 |
|---|---|---|
event | 事件名稱(GTM 用這個判斷要做什麼) | "page_view", "add_to_cart" |
| 其他欄位 | 事件的附加資訊 | page_title, item_name, value |
GTM 怎麼監聽 dataLayer?
在 GTM 後台,你會設定「觸發條件(Trigger)」來監聽特定的事件名稱:
GTM 觸發條件設定步驟(後台操作):
- 登入 GTM 後台 → 選擇你的容器
- 左側選單點「觸發條件」→「新增」
- 觸發條件類型選「自訂事件」
- 事件名稱填入你在 dataLayer.push 中用的
event值(例如add_to_cart) - 儲存
對照表:dataLayer.push 與 GTM 觸發條件
| 你的程式碼寫 | GTM 觸發條件設定 | 結果 |
|---|---|---|
event: "add_to_cart" | 自訂事件 = add_to_cart | GTM 偵測到,觸發對應的代碼 |
event: "purchase" | 自訂事件 = purchase | GTM 偵測到,送出購買轉換 |
event: "search" | 自訂事件 = search | GTM 偵測到,記錄站內搜尋 |
重點:
dataLayer.push中的event值和 GTM 觸發條件的事件名稱必須完全一致,大小寫也要一樣。
多次 push 的順序
dataLayer 是一個陣列,所有 push 的資料會按照時間順序排列:
本課重點
window.dataLayer是一個 JavaScript 陣列,是網站和 GTM 之間的溝通橋樑- 用
dataLayer.push({ event: "事件名", ... })送出資料 - GTM 會監聽 dataLayer,根據
event的值來觸發對應的追蹤碼 - 事件名稱必須和 GTM 觸發條件完全一致
- dataLayer 中的資料按時間順序排列,反映使用者的行為軌跡
下一課我們來學怎麼設計「事件」——什麼該追蹤、怎麼命名。
AI 協作:學了這個,跟 AI 怎麼配合?
Data Layer 的「結構設計」決定了你能分析多細的資料。你負責決定要追蹤什麼,AI 幫你把 dataLayer.push 的程式碼寫出來。
你的人類優勢:
- 你知道哪些使用者行為對業務有意義(不是所有點擊都值得追蹤)
- 你能和工程師溝通,確認 dataLayer.push 放在正確的時機點
可以這樣跟 AI 說:
我的電商網站有「商品頁」、「購物車頁」、「結帳頁」,請幫我列出每一頁應該 push 哪些 dataLayer 事件,包含需要的參數。
練習題
互動示範
挑戰任務
請初始化 window.dataLayer,然後 push 一筆 event 為 "page_view"、page_title 為 "商品列表" 的資料,最後用 console.log 印出 dataLayer[0].event 的值。
請初始化 dataLayer 並依序 push 三筆事件:event 為 "page_view"、"view_item"、"add_to_cart"。最後用 console.log 印出 dataLayer 的長度。