跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

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 觸發條件設定步驟(後台操作):

  1. 登入 GTM 後台 → 選擇你的容器
  2. 左側選單點「觸發條件」→「新增」
  3. 觸發條件類型選「自訂事件」
  4. 事件名稱填入你在 dataLayer.push 中用的 event 值(例如 add_to_cart
  5. 儲存

對照表:dataLayer.push 與 GTM 觸發條件

你的程式碼寫GTM 觸發條件設定結果
event: "add_to_cart"自訂事件 = add_to_cartGTM 偵測到,觸發對應的代碼
event: "purchase"自訂事件 = purchaseGTM 偵測到,送出購買轉換
event: "search"自訂事件 = searchGTM 偵測到,記錄站內搜尋

重點: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 事件,包含需要的參數。

練習題

互動示範

DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩
DEMO 3可以修改程式碼試玩
DEMO 4可以修改程式碼試玩

挑戰任務

Task 1

請初始化 window.dataLayer,然後 push 一筆 event 為 "page_view"、page_title 為 "商品列表" 的資料,最後用 console.log 印出 dataLayer[0].event 的值。

Task 2

請初始化 dataLayer 並依序 push 三筆事件:event 為 "page_view"、"view_item"、"add_to_cart"。最後用 console.log 印出 dataLayer 的長度。

BackNext Lesson →