文章目錄
更新時間:2025年11月13日
在 Google Tag Manager(GTM) 中,資料層(Data Layer)是整個事件追蹤和標籤管理的核心。隨著 GTM 的更新,資料層變數也從 Version 1(v1) 進化到 Version 2(v2),兩者在功能、邏輯以及使用方式上都有明顯差異。
資料層變數(Data Layer Variable)概念回顧
在 GTM 中,資料層變數是用來抓取 資料層(dataLayer)中的資料,並將其傳遞給標籤(Tag)、觸發器(Trigger)或其他變數使用。
典型資料層結構範例:
Version 1(v1)資料層變數
特點與限制:
- v1 只能抓取資料層的最上層鍵值,若資料是多層物件,v1 無法直接抓取子層級。
範例:
window.dataLayer.push({
'event': 'signup',
'user': {
'id': 123,
'type': 'premium'
}
});
- 使用 v1 變數抓
user.id→ 無法抓到 - v1 僅能抓取
event或最上層user(整個物件)
Version 2(v2)資料層變數
為了改善 v1 的不足,GTM 在新版中推出 資料層變數 v2,提供更多彈性與控制能力。
主要改進:
- v2 可以直接抓取多層物件的子層級,語法上使用 點號(dot notation) 或 方括號(bracket notation)。
範例:
window.dataLayer.push({
'event': 'signup',
'user': {
'id': 123,
'type': 'premium'
}
});
- v2 變數名稱設定為
user.id→ 可正確抓到123 - 若是陣列
products[0].name也可以直接抓取
v1 與 v2 的對比總結
| 特性 | v1 | v2 |
|---|---|---|
| 支援巢狀物件 | ❌ | ✅ |
| 支援陣列 | ❌ | ✅ |
| 可回溯事件歷史值 | ❌ | ✅ |
| 預設值 / 錯誤容忍 | ❌ | ✅ |
| 適合 SPA / 動態頁面 | ❌ | ✅ |
| 設定方式 | 簡單,但功能有限 | 複雜,但彈性高 |
實務建議
- 新專案建議使用 v2:若網站為 SPA、使用動態資料或多層物件,v2 幾乎是必選。
- 舊專案若仍使用 v1,可逐步升級:尤其在抓取複雜事件參數或子物件時,改用 v2 可以減少自訂 JavaScript 變數。
- 注意命名規範:使用點號(
user.id)或陣列索引(products[0].name)時,需與資料層 push 結構一致。
結語
資料層變數是 GTM 核心功能之一,直接影響標籤追蹤的正確性。
v1 適合簡單場景,但功能有限;v2 彈性更高,支援巢狀物件、陣列及事件回溯,更適合現代網站與 SPA 應用。
若你正在規劃 GTM 追蹤方案,建議以 v2 為主,搭配良好的資料層設計與命名規範,確保追蹤資料的完整性與易維護性。



