有問題可以在文章底部留言

GTM中取得Client ID的3種正確方式

Google Tag Manager Haran 2年前 (2024-12-23) 2481次瀏覽 0條留言

更新時間:2026年6月1號

在Google Tag Manager(GTM)中取得GA4的Client ID時,許多人第一個想到的方法通常是:

  • 讀取第一方Cookie(_ga)
  • 使用自訂JavaScript(Custom JavaScript Variable)
  • 使用window.gaGlobal.vid

然而,這些方法都存在一定風險,在某些情況下可能無法正確取得Client ID,進而導致資料出現 (not set)、資料遺失或歸因錯誤等問題,因此並不建議作為正式環境的實作方案。

另外,也有部分開發人員會想到使用Universal Analytics(UA)時代常見的customTask方法。

但需要注意的是,GA4並不支援customTask,因此這種做法已不適用於GA4

那麼,在GA4中該如何正確且準確地取得Client ID呢?

答案取決於你的GA4是如何部署的:

GA4 安裝方式 取得Client ID的方法
網站原始碼硬編碼(gtag.js) 使用 gtag(‘get’) 使用
使用GTM 部署GA4 使用Analytics存儲空間變數
使用GTM部署GA4 使用 readAnalyticsStorage API

 

方法一:使用 gtag(‘get’)

如果你的網站是透過原始碼直接安裝 GA4,也就是使用 gtag.js 部署,那麼可以透過 Google tag API 直接取得 Client ID

範例:

gtag('get', 'YOUR_MEASUREMENT_ID', 'client_id', (client_id) => {
    // do something with client_id
})

注意事項:gtag(‘get’) 本質上是呼叫 Google tag API,因此必須先成功載入 gtag.js。

這種方法適用於:網站直接安裝 GA4使用gtag.js部署

但如果你是透過GTM安裝GA4,通常不建議直接在GTM中依賴此方法,因為執行時機與載入順序可能造成Client ID無法穩定取得。

 

 

方法二:使用Analytics存儲空間(最推薦)

對於使用GTM部署GA4的網站而言,目前最推薦的方法是使用Analytics存儲空間(Analytics Storage) 內建變數。

這是GTM官方提供的功能,可以直接讀取GA4所儲存的資訊,不需要解析Cookie,不依賴Cookie,格式不受 _ga Cookie結構變動影響 ,支援Consent Mode取得結果最穩定,因此對於大部分 GTM 使用者來說,這是目前最佳實務(Best Practice)。

可取得的資料包括:

GA4裡點擊「變數」——「新增」——「請選擇變數類型以開始設定…」——「Analytics存儲空間」,命名為“Client ID”,做如下設定:GTM中取得Client ID的3種正確方式

 

方法三:使用readAnalyticsStorage API

如果你需要在GTM中進行更進階的客製化開發,可以使用GTM提供的readAnalyticsStorage API

由於此 API 無法直接在一般變數中使用,因此需要建立,需要透過自訂變數範本去使用,你需要建立一個自訂變數範本,在裡面使用readAnalyticsStorage API去取得Client ID/Session ID,已經有人分享了程式,如:https://github.com/luratic/ga4_get_client_id_and_session_info

 

 

結論

GA4環境中取得Client ID時,應優先使用Google官方提供的方式,而非自行解析Cookie或使用非公開 API。

建議優先順序如下:

應避免:

  • 直接解析 _ga Cookie
  • 使用window.gaGlobal.vid
  • 使用UA時代的 customTask

這樣不但能提高資料準確性,也能降低未來Google更新導致追蹤失效的風險。

 

延伸閱讀:


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

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

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