dataLayer 是什麼?GTM 資料層的用途與設定範例

dataLayer 是網站提供事件與資料給 GTM 的共同介面。看懂 push、事件時序、變數與 GA4 的關係,避免覆寫佇列、漏值與重複送出。

dataLayer(資料層)是網頁提供結構化資料給 Google Tag Manager 或 gtag.js 的介面。常見的網站實作會以 JavaScript 陣列保存待處理訊息,再透過 push 加入事件與相關欄位,讓追蹤工具依照約定的名稱取用。

對站長來說,它的價值是讓追蹤不必一直從畫面上的文字猜資料。例如表單成功後,網站直接提供表單代號與成功訊號,通常比抓某個按鈕的顏色或位置更容易維護。本文說明基本寫法、GTM 對應與常見錯誤。

資料查核:2026 年 9 月 8 日。


dataLayer 如何連接網站與追蹤工具?

網站知道業務流程發生了什麼,追蹤工具則需要明確的事件和欄位才能記錄。dataLayer 位在兩者之間,作為共同約定的資料介面。例如工程師提供 lead_form_success 和 form_id,行銷人員就能在 GTM 設定相應的觸發條件與變數。

這份資料位於使用者瀏覽器中,不能當成安全的秘密儲存區,也不是長期資料庫。放入資料層的內容不會自動進入 GA4;還需要標記實作把指定資料送到指定目的地。Google 資料層文件說明了它如何供標記和觸發條件取用。

資料層是網站與標記的介面;網站提供事件與欄位,標記再決定如何使用。
資料層是網站與標記的介面

一個最小範例:表單成功時提供資料

以下是教學用示意,不會在這篇文章中執行。程式應由負責網站的人放在「表單確實提交成功」的處理流程中,並和 GTM 設定使用相同的名稱。

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'lead_form_success',
  form_id: 'product_inquiry',
  form_location: 'contact_page'
});

第一行保留已存在的 dataLayer,只有尚未建立時才使用空陣列。第二段把事件名稱與這次事件所需的值一起送入。event 是 GTM 用來辨識事件的欄位,form_id 和 form_location 則是本例自行約定的資料。

這裡沒有放姓名、電話或 Email。對一般行銷分析而言,表單種類與位置就能回答不少問題;自由文字輸入內容還可能意外包含個資,不適合整段送到分析服務。


在 GTM 要做哪些對應?

  1. 建立資料層變數。讓 GTM 讀取 form_id 和 form_location;欄位名稱與大小寫必須一致。
  2. 建立自訂事件觸發條件。監聽 lead_form_success,必要時加上表單代號篩選。
  3. 建立 GA4 事件標記。選擇適合的 GA4 事件名,例如成功產生名單時的 generate_lead,並帶入所需參數。
  4. 用預覽工具測試。確認事件出現時,變數已有正確值,且標記只在預期情境執行。

若對三個元件的角色還不熟悉,可回到GTM 入門,再對照自訂事件觸發條件文件。資料層事件名與 GA4 事件名可以不同,重點是對應關係一致且有紀錄。

同一次事件要帶齊資料;依序確認行為、設定與資料,減少漏收與重複。
同一次事件要帶齊資料

為什麼事件與參數最好一起 push?

GTM 依序處理資料層訊息。若先送出成功事件,之後才更新表單代號,前一個事件觸發的標記可能還讀不到新值。把該次事件和必要欄位放在同一次 push 中,能減少這種時序誤判。

一般頁面重新載入後,不能假設上頁的資料仍存在。需要跨頁使用的分類或身分狀態,應由網站在新頁面重新提供適當值。單頁應用程式雖不一定重新載入,也要在路由或狀態改變時更新資料,避免沿用上一次互動的值。


四個最容易讓追蹤失效的地方

  • 直接覆寫資料層:在容器載入後使用 window.dataLayer = [],可能清掉既有訊息與連接關係;新增資料應使用 push。
  • 命名不一致:dataLayer、datalayer 和 DataLayer 不相同,form_id 與 formId 也不會自動對應。
  • 值出現得太晚:只看到預覽最後有資料,不代表觸發當下就有資料。
  • 成功流程重複執行:按兩次、重新整理完成頁或重複回呼,都可能造成重複事件,應從業務流程控制並測試。

若事件名稱含空格、符號或動態值,也應先檢查送往 GA4 時的命名規則。訂單編號和每筆金額通常屬於參數,不適合拼進事件名稱裡製造無數種事件。

資料層最常見的三個誤判;把工具顯示的訊號,和實際量測結果分開判斷。
資料層最常見的三個誤判

交接時保留一份資料規格

至少寫下事件什麼時候發生、每個欄位的意義與型別、可能為空的情況,以及 GTM 要送到哪個 GA4 事件。工程師和行銷人員用同一組測試情境驗收,之後網站改版時才能知道哪些約定需要維持。

dataLayer 能讓資料傳遞更清楚,但不能替代成功條件、同意管理與 GA4 接收驗證。先保留既有佇列、讓事件和參數對齊,再逐段測試,就能建立較穩定的追蹤基礎。


參考資料

重點整理

dataLayer.push 會直接把資料傳給 GA4 嗎?

不一定。push 是把訊息交給資料層;GTM 仍須有對應的觸發條件與 GA4 標記,才會把指定欄位送到 GA4。

dataLayer 可以存放 API 密鑰嗎?

不可以把秘密放在這裡。它位於瀏覽器端,使用者可檢視相關資料;API 密鑰、密碼和敏感個資應留在適當的受控環境。

換頁後資料層的值會自動保留嗎?

一般整頁載入不能假設會保留。需要在新頁繼續使用的欄位,應由網站重新提供;單頁應用程式也要在狀態變化時更新資料。