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 要做哪些對應?
- 建立資料層變數。讓 GTM 讀取 form_id 和 form_location;欄位名稱與大小寫必須一致。
- 建立自訂事件觸發條件。監聽 lead_form_success,必要時加上表單代號篩選。
- 建立 GA4 事件標記。選擇適合的 GA4 事件名,例如成功產生名單時的 generate_lead,並帶入所需參數。
- 用預覽工具測試。確認事件出現時,變數已有正確值,且標記只在預期情境執行。
若對三個元件的角色還不熟悉,可回到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 密鑰、密碼和敏感個資應留在適當的受控環境。
換頁後資料層的值會自動保留嗎?
一般整頁載入不能假設會保留。需要在新頁繼續使用的欄位,應由網站重新提供;單頁應用程式也要在狀態變化時更新資料。



