GTM 中資料層變數 Version 1 與 Version 2 的區別解析

Google Tag Manager Haran 3年前 (2023-02-07) 2321次瀏覽 0條留言

更新時間:2025年11月13日

Google Tag Manager(GTM) 中,資料層(Data Layer)是整個事件追蹤和標籤管理的核心。隨著 GTM 的更新,資料層變數也從 Version 1(v1) 進化到 Version 2(v2),兩者在功能、邏輯以及使用方式上都有明顯差異。

資料層變數(Data Layer Variable)概念回顧

GTM 中,資料層變數是用來抓取 資料層(dataLayer)中的資料,並將其傳遞給標籤(Tag)、觸發器(Trigger)或其他變數使用。

典型資料層結構範例:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  'event': 'purchase',
  'transactionId': 'T12345',
  'transactionTotal': 299.99,
  'userType': 'premium'
});
  • event:事件名稱,用於觸發標籤
  • transactionId / transactionTotal / userType:自訂資料,用於追蹤或報表分析

資料層變數就用來抓取這些自訂資料,例如抓取 transactionTotal,在 GA4 標籤中作為事件參數使用。

 

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 為主,搭配良好的資料層設計與命名規範,確保追蹤資料的完整性與易維護性。


如果您在操作上仍有任何疑問,歡迎留言交流,或加入:Google Analytics 4交流社團發問
Like (0)
發佈我的留言
取消留言
表情 贴图 加粗 删除线 居中 斜体

Hi,*为發佈留言必須填寫。

  • 顯示名稱*
  • 電子郵件地址*
  • 個人網站網址