Google Tag Manager

GTM 變數設定怎麼做?內建變數、自訂變數與 GA4 範例

Open Data 4TW 編輯團隊 Open Data 4TW 編輯團隊
· · GTM, GTM 變數, 自訂變數設定

GTM 變數是什麼?它在 Tag、Trigger 裡負責什麼

GTM 是 Google Tag Manager,也就是 Google 代碼管理工具;GTM 變數是提供標籤、觸發條件與事件參數所需資料的欄位。

如果把 GTM 當成追蹤設定的後台,Tag 負責送出資料,Trigger 負責決定什麼時候送,Variable 則負責告訴 GTM 要送什麼值。變數設定錯,常見結果不是追蹤碼完全失效,而是 GA4 收到錯的事件參數,這比沒收到更容易誤判。

用「追蹤按鈕點擊」理解 Tag、Trigger、Variable

追蹤按鈕點擊時,Tag 可以是 GA4 Event,Trigger 可以是「使用者點到某個按鈕」,Variable 可以是 Click Text、Click URL 或 Click Classes。實務上我會先確認按鈕是否有穩定的文字、連結或 class,再決定用哪個變數當判斷依據。

元件 在按鈕點擊追蹤中的角色 檢查重點
Tag 送出 GA4 事件,例如 button_click 事件名稱與參數是否正確
Trigger 判斷哪一次點擊要觸發 條件是否太寬或太窄
Variable 提供點擊文字、網址、class 等值 Preview Mode 是否抓到預期值

變數常見用途:判斷觸發、帶入事件參數、讀取頁面資訊

GTM 變數常用在五種情境:判斷 Trigger 是否觸發、把值帶進 GA4 事件參數、讀取頁面 URL、讀取點擊元素資訊、讀取 dataLayer 裡的商品或表單資料。對 GA4 來說,變數通常會變成 event parameter,例如 button_text、form_id、item_id、value。

我的判斷原則是:會影響分析決策的值才值得做成變數。只為了「看起來設定得很完整」而新增變數,後續反而會增加除錯成本。

GTM 變數有哪些種類?內建變數與使用者定義變數

GTM 變數主要分成內建變數與使用者定義變數。內建變數適合常見頁面、點擊、表單資料;自訂變數適合固定值、dataLayer、JavaScript 或條件轉換。

類型 適合情境 維護成本
內建變數 Page URL、Click Text、Form ID、Scroll Depth 低,啟用後即可引用
使用者定義變數 固定代碼、dataLayer 值、頁面類型、查詢表 中到高,需要命名與測試

內建變數:Page URL、Click Text、Click URL、Form ID、Scroll Depth

內建變數適合先啟用,因為它們涵蓋大多數入門追蹤需求。Page URL 適合分辨頁面,Click Text 適合判斷按鈕文字,Click URL 適合追蹤外部連結,Form ID 適合表單送出,Scroll Depth 適合閱讀深度追蹤。

內建變數 適合情境 注意事項
Page URL 特定頁面觸發事件 避免網址參數造成條件過窄
Click Text 追蹤「立即購買」等按鈕 按鈕文字改版會影響追蹤
Click URL 追蹤外部連結或下載連結 確認實際點擊元素是否帶有 href
Form ID 追蹤表單送出 部分表單工具不會觸發原生 submit
Scroll Depth 追蹤閱讀深度 要避免和其他互動事件混在一起解讀

使用者定義變數:常數、資料層變數、JavaScript 變數、查詢表

使用者定義變數適合把 GA4 event parameter 做得更穩定。常數變數可放 GA4 Measurement ID,資料層變數可讀取 item_id、value、currency,自訂 JavaScript 變數可整理頁面資料,查詢表可把網址或文字轉成更乾淨的分類值。

什麼時候不要自訂變數

內建變數已經能穩定取得資料時,不需要硬做自訂變數。自訂變數的問題通常不是建立當下,而是三個月後沒人記得它為什麼存在。若只是判斷單一按鈕點擊,Click Text 或 Click URL 足夠時,就先用內建變數處理。

如何設定 GTM 自訂變數:從命名到預覽測試

設定 GTM 自訂變數的流程是先確認要取得的值,再選變數類型、命名、放入 Tag 或 Trigger,最後用 Preview Mode 檢查實際值。

步驟 要做什麼 檢查方式
1 確認資料來源 頁面、點擊或 dataLayer 是否有值
2 選擇變數類型並命名 名稱是否看得出來源與用途
3 引用到 Tag 或 Trigger {{變數名稱}} 是否放在正確欄位
4 預覽測試 Variables 分頁是否顯示預期值

Step 1:確認要取得的值是頁面資訊、點擊資訊還是 dataLayer 資料

先判斷值從哪裡來,會比直接新增變數更有效。頁面 URL、標題這類值通常能用內建變數;點擊文字、連結和 class 也多半有內建變數;商品金額、會員狀態、訂單編號通常要靠 dataLayer。

想取得的值 建議來源 常見變數
目前頁面 頁面資訊 Page URL、Page Path
按鈕文字 點擊資訊 Click Text
表單 ID 表單資訊 Form ID
商品金額 dataLayer DLV - value

Step 2:選擇變數類型並命名

命名要讓協作者看得懂來源。常見格式包含 DLV - event_name、JS - page_type、CONST - GA4 Measurement ID。DLV 代表資料層變數,JS 代表 JavaScript 變數,CONST 代表常數。命名不是形式問題,它會直接影響後續除錯速度。

Step 3:把變數放進 Tag 或 Trigger

GTM 會用 {{變數名稱}} 引用變數。放在 Trigger 時,變數通常用來判斷條件,例如 Click Text equals 立即購買;放在 Tag 時,變數通常用來送出事件參數,例如 button_text 等於 {{Click Text}}。

可延伸閱讀 GA4 事件追蹤設定,把變數和事件名稱、事件參數一起檢查,會比只看 GTM 後台更準。

Step 4:用 Preview Mode 確認變數值

Preview Mode 要看左側事件時間軸,再點進該事件的 Variables 分頁。不要只看 Tag 有沒有 Fired,因為 Tag 觸發不代表變數值正確。若點擊事件下 Click Text 是 undefined,就代表該次事件沒有抓到文字值。

dataLayer 變數怎麼設定?電商與表單追蹤最常用

dataLayer 變數是 GTM 從網站事件資料中讀值的方法,常用在電商商品、表單狀態、訂單金額與 GA4 電商事件。

dataLayer 是什麼:讓網站把事件資料交給 GTM 的資料通道

dataLayer 是網站和 GTM 之間的資料通道。網站在特定時機把資料 push 出來,GTM 再用資料層變數讀取指定 key。對電商和表單來說,dataLayer 比從畫面文字硬抓資料可靠,因為它可以直接提供 item_id、value、currency 這類結構化資料。

dataLayer 變數設定範例:event、item_id、value、currency

dataLayer 變數名稱必須和 push 的 key 完全一致。若網站送出 item_id,GTM 裡的資料層變數名稱就要填 item_id,不要填 product_id,除非網站實際送出的 key 就是 product_id。

dataLayer.push({
  event: 'generate_lead',
  item_id: 'plan_basic',
  value: 1200,
  currency: 'TWD'
});
push key GTM 變數命名 GA4 可用參數
event DLV - event 事件名稱或觸發條件
item_id DLV - item_id item_id
value DLV - value value
currency DLV - currency currency

Page View、DOM Ready、Window Loaded 與資料時機

變數抓不到值,常常是時機錯,不是 GTM 壞掉。Page View 發生得早,頁面元素和部分 dataLayer 資料可能還沒準備好;DOM Ready 代表 HTML 結構已可讀;Window Loaded 則更晚,圖片與外部資源多半已載入完成。

若 dataLayer.push 在表單送出後才出現,就不該期待 Page View 事件能讀到那筆表單資料。這是我看過最常被誤判成「GTM 設定錯」的情況之一。

GTM 變數如何用在 GA4 事件追蹤

GTM 變數在 GA4 事件追蹤中,通常用來填入事件參數,讓 GA4 知道使用者點了什麼、送出哪張表單或購買哪些商品。

GA4 事件 可用 GTM 變數 常見事件參數
click Click Text、Click URL、Click Classes button_text、link_url
form_submit Form ID、Form Classes、Page URL form_id、page_location
generate_lead DLV - value、DLV - form_type value、form_type
purchase DLV - transaction_id、DLV - items transaction_id、items、value、currency

按鈕點擊事件:Click Text、Click URL、Click Classes

按鈕點擊通常先用 Click Text 或 Click URL 判斷,若網站按鈕文字常改,Click Classes 可能更穩。設定後要到 GA4 DebugView 確認 button_text 或 link_url 是否有進來。延伸設定可看 GA4 事件追蹤設定。

表單送出事件:Form ID、Form Classes、表單成功頁

表單追蹤要先確認網站表單技術。傳統 HTML 表單可能能用 Form ID;第三方表單、AJAX 表單或彈窗表單,有時不會觸發原生表單送出事件。若表單送出後會進到成功頁,也可以用成功頁 Page URL 當輔助判斷。

電商事件:商品 ID、金額、幣別、品項陣列

電商事件要優先檢查商品 ID、金額、幣別和 items 陣列是否從 dataLayer 正確送出。若平台已經有原生 GA4 串接,再用 GTM 補一次 purchase 事件,很容易造成重複收入。電商設定可接著看 GA4 電商追蹤設定。

GTM 變數沒有值怎麼辦?常見錯誤排查

GTM 變數沒有值時,先分辨是變數取不到、Trigger 沒觸發、Tag 沒送出,還是 GA4 沒接到,不要一次改全部設定。

問題 可能原因 修法
Preview Mode 看不到值 事件時機不對或變數名稱錯 切換正確事件,檢查 Variables 分頁
變數有值但 GA4 沒收到 Tag 未觸發或參數欄位填錯 檢查 Tag Fired、DebugView 與參數名稱
前台沒生效 容器未發布、GTM ID 錯、工作區錯 確認發布版本與網站實際載入的容器

Preview Mode 看不到變數值

先確認已進入正確頁面,並且左側時間軸選到正確事件。很多人點了按鈕,卻還停在 Page View 事件看 Variables,當然看不到點擊變數。要看 Click Text,就要選 click 相關事件。

變數有值但 GA4 沒收到

變數有值不代表 GA4 一定收到。請檢查 Tag 是否 Fired、事件參數名稱是否填在正確欄位、GA4 DebugView 是否出現事件。若 DebugView 有事件但報表暫時沒有,先不要急著重改 GTM,GA4 報表處理本來就不一定即時。資料異常可搭配 GA4 資料異常排查 檢查。

設定完成但前台沒生效

設定完成後要發布容器,網站前台才會使用新版本。也要確認網站安裝的是正確 GTM ID,並且沒有在錯的工作區完成設定。多網站、多品牌共用帳號時,這類錯誤比想像中常見。

GTM 變數設定前的發布檢查清單

發布 GTM 變數前,應檢查命名、版本說明、觸發範圍、GA4 接收狀態與是否重複追蹤,避免把錯誤資料正式送進報表。

檢查項目 要確認什麼 完成
命名 是否看得出 DLV、JS、CONST 與用途 是
Preview Mode Variables 分頁是否有正確值 是
Tag 狀態 該觸發時有 Fired,不該觸發時沒有 Fired 是
GA4 DebugView 事件名稱與事件參數是否正確 是
重複追蹤 平台原生串接和 GTM 是否重複送事件 是

命名規則與版本說明

命名規則要服務維護,不是服務美觀。DLV - item_id、CONST - GA4 Measurement ID 這類名稱,一看就知道來源和用途。發布版本說明也要寫清楚改了哪些變數、影響哪些事件,避免多人協作時無法追溯。

避免重複安裝 GA4 或重複送事件

SHOPLINE、CYBERBIZ、Shopify、WordPress 外掛都可能已有 GA4 或像素串接。若平台原生功能已送出 purchase,再用 GTM 送一次 purchase,GA4 可能出現重複收入。設定轉換前,可搭配 GA4 轉換設定 檢查事件來源。

本文不處理的 GTM 主題

這裡只聚焦 GTM 變數與自訂變數設定,不展開完整安裝、UTM 教學、Server-side GTM、Consent Mode 或廣告投放策略。

  • 完整 GTM 安裝流程,只保留必要背景。
  • UTM 參數完整教學,UTM 是網址標記,不是 GTM 變數本身。
  • Server-side GTM 架構與伺服器端追蹤部署。
  • Consent Mode 法規與同意管理深度設定。
  • Google Ads、Meta Pixel 的投放策略與成效優化。
  • CRM 串接與名單管理流程。

GTM 是什麼?和 GA4 有什麼差別?

GTM 是 Google Tag Manager,用來管理追蹤碼、觸發條件與變數;GA4 是 Google Analytics 4,用來接收與分析事件資料。GTM 負責送資料,GA4 負責看資料,兩者不能互相取代。

GTM 變數是什麼?一定要設定嗎?

GTM 變數是提供 Tag 或 Trigger 使用的值,例如網址、點擊文字、表單 ID、商品金額。不是每個追蹤都要自訂變數,但只要需要把特定值送進 GA4 事件參數,就應該檢查變數是否正確。

GTM 內建變數和自訂變數差在哪?

內建變數是 GTM 預先提供的常用欄位,例如 Page URL、Click Text、Form ID。自訂變數則由使用者建立,常用來讀取 dataLayer、固定 ID、JavaScript 回傳值或查詢表結果。

GTM 自訂變數要怎麼命名比較好?

建議用來源加用途命名,例如 DLV - item_id、JS - page_type、CONST - GA4 Measurement ID。名稱要讓下一位維護者不打開設定也能猜到用途。

dataLayer 變數抓不到值怎麼辦?

先檢查 dataLayer.push 是否真的出現在該事件前,再確認資料層變數名稱是否和 key 完全一致。若 push 發生在表單送出後,Page View 事件通常讀不到那筆資料。

GTM 設定好了為什麼 GA4 沒有資料?

可能是 Tag 沒觸發、事件參數填錯、GA4 Measurement ID 錯、DebugView 沒收到事件,或報表尚未處理完成。先用 Preview Mode 看 Tag Fired,再用 GA4 DebugView 確認事件。

GTM 和 UTM 是同一個東西嗎?

不是。GTM 是管理追蹤碼與事件設定的工具;UTM 是加在網址上的流量來源參數。GTM 可以讀取網址中的 UTM,但 UTM 本身不是 GTM。

GTM 可以取代 Google Analytics 嗎?

不可以。GTM 不提供完整分析報表,它只是協助把事件資料送到 GA4、Google Ads、Meta Pixel 等平台。分析與報表仍要在 GA4 或其他接收端查看。

電商平台已經有 GA4 串接,還需要用 GTM 變數嗎?

不一定。若平台原生 GA4 串接已正確送出商品、金額與訂單資料,就不該無條件再用 GTM 重送一次。只有在原生串接缺少事件參數、需要補自訂事件或需要第三方標籤時,才考慮用 GTM 變數補強。

GTM 變數會影響網站速度嗎?

一般變數本身影響有限,真正要小心的是過多標籤、複雜自訂 JavaScript、重複追蹤碼和第三方腳本。能用內建變數處理的情境,不必為了追求彈性而寫複雜 JavaScript。

Preview Mode 裡 Variables 分頁要看什麼?

要先選左側正確事件,再看 Variables 分頁中該變數的值是否符合預期。檢查重點包含是否為 undefined、值是否和點擊元素一致、dataLayer 值是否在正確事件時間點出現。

自訂 JavaScript 變數什麼時候才需要用?

只有在內建變數、dataLayer 變數或查詢表無法處理時,才建議使用自訂 JavaScript 變數。它適合整理頁面狀態或轉換資料格式,但也更需要測試,避免網站改版後回傳錯誤值。

標籤
GTMGTM 變數自訂變數設定GA4 事件dataLayer
Eric Chang
Eric Chang
SEO 數據分析與網站量測研究者

以官方文件、實際設定與量測結果整理 SEO 數據、網站追蹤與分析方法,並標示資料來源與判讀限制。