· Joseph · Marketing  · 5 min read

設定Google Analytics 4 / Google Tag Manager追蹤user id

這篇文章我決定用中文寫,主要原因是中文的資料太少,而且也很多不是Google Analytics 4 + Google Tag Manager (GA4+GTM) 的設定,所以我覺得用中文記錄一下,好讓大家要搜尋的可以搜得到。

在以前GA追蹤埋追蹤碼時,我們要紀錄的user_id經過規劃後會視情況放在category, action, label, value或複雜一點的custom dimensions裡,GA經過長時間的演進,再加上GTM的助攻,現在已經可以有各種變化、也有多種templates可以套用在網站及應用程式裡。

至於要怎麼做呢?首先一樣從GTM上方的管理 > 安裝 Google 代碼管理工具把追蹤程式碼塞到我們的網站上,然後回到GA4去取得評估ID

如果你只有通用型GA分析的話,也可以從管理 > Google Analytics (分析) 4 資源設定輔助程式開啟GA4追蹤功能

get-evaluation-id.jpg

get-evaluation-id-2.jpg 圖裡的評估ID等一下在設定GTM的時候會用到。

先串GTM跟GA

進到GTM,從左邊代碼裡新增一個代碼設定:Google Analytics (分析):GA4 設定,貼上剛剛的評估ID,然後最下面觸發條件選擇All PagesGTM-GA4-setting.jpg

儲存然後右上角的提交,設定完回到GA4,在瀏覽網頁的時候就會有一些page_view的事件。 GA4-setting-works.jpg

這邊就讓你的GA4跟以前通用型GA一樣了。

再串user_id

user_id的時候,我們要設定GTM、GA4、還有也要寫code,我們從GTM開始。

先在GTM設定user_id

add-data-layer-var.jpg 我們在左邊變數的地方新增一個資料層變數,這邊輸入的user_id要跟程式碼裡push進dataLayer的一致。

add-trigger-event.jpg 這一步是我遲疑的地方,在左邊觸發條件裡我手動新增一個page_view自訂事件,準備去把每個user_id一起追蹤進去。雖然All Pages應該可以被觸發,但測試時一直沒進去,設定這個觸發條件才可以。

add-field-to-set.jpg 接著回去修改剛剛的代碼,把要設定的欄位使用者屬性加上欄位名稱及資源名稱userId,而數值的部分可以透過選擇或是直接key上去,都是{{user_id}}。 要設定的欄位userId會顯示在GA4的事件裡,而使用者屬性則會顯示在依使用者屬性裡。

這邊為什麼不是user_id而是userId?因為之後在GA4設定的時候我一直餵不進去user_id,反而userId可以。

接著設定GA4

ga4-data-layer-userId.jpg自訂定義裡新增維度,範圍選使用者,而使用者屬性/變數這邊就是我說的只能輸入userId,不接受user_id的地方。

這邊的設定會影響依使用者屬性這部分的追蹤,事件的部分不會影響。

最後是code的部分,我以React / NextJs為例。

看看code

gtag.js

const pushDataLayer = (event) => {
  if (window && window.dataLayer) {
    window.dataLayer.push(event);
  }
};

export const pageview = (url) => {
  const pageEvent = {
    event: 'page_view',
    page: url,
  };

  pushDataLayer(pageEvent);
  return pageEvent;
};

export const setUserId = (userId) => {
  const pageEvent = {
    user_id: userId,
  };

  pushDataLayer(pageEvent);
  return pageEvent;
};

pages/_app.js

  useEffect(() => {
    const cookies = parseCookies()
    const handleRouteChange = (url) => {
      if (cookies.userId) {
        gtag.setUserId(cookies.userId);
      }
      gtag.pageview(url)
    }
    router.events.on('routeChangeComplete', handleRouteChange)
    return () => {
      router.events.off('routeChangeComplete', handleRouteChange)
    }
  }, [router.events])

setUserId裡可以看到key是user_id,而handleRouteChange裡在pageview之前要先setUserId,把user_id塞進dataLayer裡。

最後就來看看結果了。 result.jpg 這張圖的1跟2呼應到上面修改代碼時的要設定的欄位使用者屬性,每個page_view都會紀錄userId,使用者屬性也有把userId記錄下來。

這是設定第二次了,即便如此我還是失敗了很久,希望文章寫下來以後不會忘記。

Back to Blog

Related Posts

View All Posts »

Google Ads搜尋關鍵字廣告設定

Google Ads搜尋關鍵字廣告設定 當我們有需要被解決的需求,像牙齒痛,想知道哪裡有診所可以治療? 要買電視,想知道電視的商品資訊及評價?多數人會使用Google搜尋引擎搜尋找解答,用戶搜尋意圖明確,因此在Google搜尋引擎可以接觸到精準的潛在顧客,已是電商品牌行銷布局必要的媒體工具之一。 想投放Google搜尋關鍵字廣告卻不知道要怎麼開始?本篇整理我投放Google關鍵字廣告設定過程,現在就來製作第一則廣告吧~ 投放廣告前準備事項 1. 訂好廣告目標 業主想提升網站流量,投放以流量為主的搜尋廣告及點擊出價做設定, 需依照廣告目標,選擇適合的廣告類型及出價策略,才能提升廣告投放的效益!

Google Ads account setting

數位科技蓬勃時代,多數人大部分時間都在使用手機及社群媒體分享生活圈維持情感連繫,品牌電商想要快速累積知名度及訂單,在社群或搜尋引擎投放廣告是最快達成成效的行銷方式,那要選擇哪個廣告平台呢?如果你的廣告預算有限,可以先從受眾精準的**Google ads搜尋廣告**開始 !

Upgrade hexo and hexo-theme-materialize

Upgrade hexo and hexo-theme-materialize

終於在年節時間把這個部落格升級到Hexo 6.2了!2019年建立這個部落格那時候還是用Hexo 4,前年曾經升級到Hexo 5,並且嘗試把hexo-theme-materialize一起升級到v4,不料這次theme升級幅度有點大,hexo-theme-materialize v4他們把Stylus都給改成scss,還改成了webpack,升級沒這麼順利,所以當時就只有先把Hexo從4升級到5.2。這次九天連假,前兩天就把動畫追完,後面只好把之前欠的補一補了。

Facebook Pixel and Facebook Conversions API

Recently I got a Trello ticket to add Facebook Pixel tracking code, and they gave me a token to use. As a frontend engineer on that project, it's confusing to me, because the token is for Facebook Conversions API. The biggest difference between Facebook Conversions API and Facebook Pixel is Facebook conversions API is invoked on the server, and Facebook Pixel is on the client. Besides, Facebook Conversions API is to solve IOS 14 updates. Now, let me write the usage of Facebook Conversions API down. Get Facebook Conversions API token. pixel-home-page