如何用 GTM 傳送 User ID 到 GA4?

Ian
10 min readMay 20, 2024

在之前的 GA4 User ID 介紹文章中,我們講到了使用 User ID 的好處,可以幫助我們跨裝置追蹤訪問自家網站的使用者,而在第三方 Cookies 逐漸退場以及使用者隱私規範日益嚴格的背景下,其實也已經越來越難取得與使用者相關的資訊了。

因此,讓自家網站的使用者願意成為品牌會員,便成為各企業努力耕耘的重點,有了會員編號,我們就可以透過 User ID 更好地了解使用者在自家網站的行為(當然,這追蹤行為還是必須經過使用者同意),從而進行更精準的廣告投放或是行銷活動,這樣不僅可以避免廣告預算的浪費,也可以減少對使用者傳遞不相干資訊的打擾。

在這篇文章中,我們將會告訴你如何將使用者的會員 ID 傳送到 GA4 預設的參數 User ID 中,協助我們做更進一步的分析。

如果還不了解 User ID 的朋友,我們建議可以先看這篇文章:「 GA4 中的 Client ID 和 User ID 分別是什麼意思? 」 ,再回來看這篇操作面的內容,你會更容易理解。

一定要有會員系統

雖然在前一篇文章我們已經多次強調,但在此還是要囉唆一下,要使用 GA4 的 User ID 功能,自家的網站必須要具備可以讓使用者註冊和登入的會員系統。只有在使用者登入之後,我們也才有 會員編號可以使用,也才能將其傳送到 GA4 預設的參數 User ID ,這是使用 User ID 功能的前提條件。

請工程師將會員編號推送到資料層

假設你的網站已經具備會員系統,那麼在資料庫中,一定會有一個專屬於每個會員的編號(就像我們生活在台灣,每個人都會有身分證字號一樣),我們需要請網站工程師在使用者登入的狀態之下,將該會員編號推送到資料層(Data Layer),推送的程式碼會像是下圖這樣:

(題外話:其實操作 GTM 的行銷人員會很常需要跟網站工程師溝通,如果我們能先準備好這些代碼文件,再請他們幫忙,對雙方來講將會是省時又省力的事情。

至於這個文件該如何準備,可以參考這篇文章:「 如何準備給工程師的 GA4 電子商務 Data Layer 資料層文件? 」)

眼尖的人可能有注意到,在這段程式碼中,並沒有出現我們常見的 event 參數,這是因為我們希望這個資料可以在網站載入時越早出現越好,以便我們的「 Google Tag」以及「 GA4 事件代碼 」可以準確抓取到需要的資料。

因此,我們可以不在程式碼中放入 event 參數,並且請工程師將這段程式碼放在 GTM 容器載入之前。這樣一來,這些資料就會在 GTM 容器開始運作前就已經被預先載入,從而保證我們容器中的「 事件代碼 」能夠準確抓取到會員編號。

在確定將程式碼放入網站之後,可以先透過「 預覽模式」確認在使用者登入後的頁面資料層中,是否有 member_id 以及 member_level ,如果設定正確的話,應該會呈現如下圖的畫面。

確定在使用者登入後的頁面資料層有資料後,我們就可以開始設定「 資料層變數 」。

用「資料層變數」取得會員編號

GTM 左側面板選擇「 變數」> 右側下拉至「 使用者定義的變數」區塊 > 右上角選擇「 新增」> 點選「 請選擇變數類型以開始設定」> 右側彈出視窗選擇「 資料層變數

在資料層變數設定的畫面中 > 「 資料層變數名稱欄位」輸入 member_id

欄位輸入的內容,就是我們請工程師推送到網站資料層中的程式碼參數名稱(注意:這邊我們輸入 member_id 是做為示範,你資料層中的參數名稱可能會有所不同。),為了可以抓取到對應的資料,包含大小寫在內,欄位內輸入的名稱必須要跟資料層中的完全一樣。

關於資料層變數的介紹,可以參考文章:「 GTM 變數介紹:資料層變數(Data Layer Variable)

用預覽模式測試是否抓取到正確的值

如果以上設定都正確,我們透過 GTM「 預覽模式」來到使用者登入後的頁面,預期應該要可以看到上面設定的「 資料層變數」帶出了相對應的會員編號,在我們的範例中就是: 3345678

確定該「 資料層變數 」有抓取到相對應的值之後,我們就可以進行下一步設定。

設定「Google 代碼:事件設定」變數

GA4 中的 user_id 是一個很特別的參數,看起來很像是隸屬於「 使用者範圍 User Scope」,實則不然,它並不屬於「 使用者範圍」,因此不會在各工作階段的事件中互相繼承, 雖然在同一個工作階段中,登入前的事件會在使用登入後被回填 user_id,但為了確保資料不會遺漏,除了在 Google Tag(GA4 分析代碼)中帶入 user_id 以外,建議也要在各「 事件代碼」中,帶入 user_id

而為了避免每次新增「 事件代碼」時我們都要在「 事件參數」的欄位中輸入 user_id 的麻煩,此時就可以將 user_id 設定在「 Google 代碼:事件設定」變數中,未來我們只要在各「 事件代碼」的「 事件參數」區塊中,選擇「 Google 代碼:事件設定 」變數,就會帶入該變數中所有已經設定好的參數,便不用再一個一個輸入了。

(可以把「 Google 代碼:事件設定」變數想像成是一包外掛包,所有「 事件代碼」會 共用到的參數,我們都放在這個外掛包裡面,在設定「 事件代碼」時,直接選取這個變數外掛到「 事件代碼 」上就可以。)

聽起來有點複雜對嗎?讓我們跟著操作畫面繼續看下去。

GTM 左側面板選擇「 變數」> 右側下拉至「 使用者定義的變數」區塊 > 右上角選擇「 新增」> 點選「 請選擇變數類型以開始設定」> 右側彈出視窗選擇「 Google 代碼:事件設定

用預覽模式測試是否抓取到正確的值

同樣的,設定完畢之後,我們一樣來到「 預覽模式」確認「 Google 代碼:事件設定 」變數是否有正常運作,預期看到的畫面應會如下圖:

接下來,就可以將站上 GA4 的追蹤代碼(Google Tag)以及所有「 GA4 事件代碼」帶上這個「 Google 代碼:事件設定 」 變數,使用者的會員編號就會傳送到 GA4 當中了。

設定 GA4 事件以及 GA4 追蹤代碼

將變數加入 GA4 追蹤代碼中

我們假設你已經使用 GTM 一段時間且也透過 GTM 安裝好 GA4 的追蹤代碼(Google Tag),接下來只要找到該 GA4 追蹤代碼,把「 Google 代碼:事件設定 」變數加進去就可以了。

(如果是不知道如何透過 GTM 安裝 GA4 追蹤代碼的朋友,可以參考這篇文章:「 如何用 GTM 安裝 GA4 評估 ID? 」)

在代碼介面中找到已安裝的 GA4 追蹤代碼 > 展開「 共用事件設定」區塊 > 在「 事件設定變數」下拉選單中選擇前面設定的「 Google 代碼:事件設定 」變數。

儲存之後,用同樣的方式,將該變數加入 GA4 事件代碼中。

將變數加入 GA4 事件代碼中

其實,正常來說,只要有將 user_id 參數放在 GA4 追蹤代碼(Google Tag)中,接下來所有的事件都會帶有 user_id,但為了保險起見,我們也會在所有的「 事件代碼」中放入 user_id ,以確保資料不會漏接。

(因此,你也可以不用做這個部分的設定,只要做好 GA4 追蹤代碼(Google Tag)這邊的設定就可以了,但請記得密切檢查,GA4 中所有的事件是否都有收到 user_id 。)

在代碼介面中找到所有 GA4 事件 > 展開「 共用事件設定」區塊 > 在「 事件設定變數」下拉選單中選擇前面設定的「 Google 代碼:事件設定 」變數。

Debug View &預覽模式檢查

設定完畢之後,預期應該要在「 預覽模式」中看到 GA4 追蹤代碼啟動時,帶有 user_id 這個參數。

而在 GA4 的 Debug View 中,隨意點選一個事件,我們也預期會在所有事件的「 使用者屬性」頁籤中,看到 user_id 出現。

雖然 user_id 不屬於 使用者範圍(User Scope),我們在設定 GA4 追蹤代碼(Google Tag)以及「 Google 代碼:事件設定」變數時,也沒有將 user_id 放在 使用者屬性欄位中,但是在這邊,GA4 依然是將其歸類在 使用者屬性 的分類當中,這是在設定上比較容易搞混的地方,需要特別注意。

搞定!在「 預覽模式 」以及 Debug View 確定都沒有問題之後,就可以發佈代碼,未來只要使用者是在登入狀態下瀏覽網站,儘管是不同的裝置,GA4 也可以將其判斷是同一位使用者了。

接下來身為行銷人員的你可以思考的是,該如何讓使用者心甘情願加入會員?在可以掌握同一位使用者在不同裝置上的行為之後,行銷團隊可以做什麼等問題。

因為設定完之後不是結束,只是剛開始而已,還有很多要做的呢!

補充一下

使用者登出後,需移除資料層中的會員編號

在請工程師推送會員編號至資料層的同時,除了告知工程師我們需要在使用者登入時啟動這段程式碼外,也務必請他們在使用者登出之後, 停止推送會員編號到資料層中,這樣一來,我們設定的「 資料層變數」值也應該要變為 undefined ,以確保資料的準確性和安全性。

會員編號不可為空白

如果使用者沒登入,不要以空白形式推送會員 ID 到資料層,否則會被 GA4 視為是「一位」使用者,而這個使用者的 ID 叫做「空白」。

不要自訂 user_id 成維度

user_id 是 GA4 特別設定的參數,只要在 GTM 代碼中設定事件參數名稱正確,GA4 就會接收到資料並正確顯示,不需要另外自定義維度

總結一下

在這篇文章中,我們介紹了如何與工程師合作,並且使用「 資料層變數」將會員編號傳到 GA4 參數 user_id 當中,同時運用「 Google 代碼:事件設定 」變數將這些需要重複使用的參數外掛到「GA4 事件代碼」以及「Google Tag 」中。

當然,這只是其中一種方法,也可以請工程師將會員編號儲存成 Cookie,然後透過 GTM 「第一方 Cookie 變數」來選取,接著傳送到 GA4 中也是一種解法。

透過這樣的設定,我們就可以追蹤到在不同裝置上瀏覽網站且登入的使用者了(他們可能是最珍貴且有價值的一群忠實顧客,可要好好珍惜把握,例如:下圖中紫色重疊區塊內的使用者們)。

--

--