15 個 GA4 報表出現(not set)的原因

有在使用 Google Analytic 的朋友一定對於報表中的 (not set) 感到很頭痛,數量如果少那還好,但數量一多起來之後,你開始驚覺大事不妙了,行銷活動的資料呢?該不會這些 (not set)表示都沒追到資料吧?還有得救嗎?有什麼辦法可以讓我事先預防?

會出現(not set)不一定是因為你的資料沒設定好,造成(not set)的原因其實有很多種,有一些狀況到今天依然是個謎團。

不過,這篇文章將會告訴你這些 (not set) 之所以會出現在不同類型報表或是維度的原因,

我們繼續看下去。



什麼是 (not set)?

當我們打開不同 GA4 報表時,往往會在各種維度中看到 (not set) 的出現,例如:來源/媒介城市網頁位置到達網頁國家語言以及廣告活動等。

會出現(not set)的原因通常是 GA4 沒有抓取到相對應的資料,維度雖存在,但收到的資料無法吻合維度名稱或是沒有被定義,報表就會出現(not set)。

GA4 示範帳戶的工作階段來源/媒介維度的 not set 數量有點大

儘管有時數量很小,但看到(not set)的出現宛如芒刺在背,想趕快找出造成這情況的原因是什麼,其實原因不外乎就幾種,一來是你沒定義好發送到 GA4 的資料,二來可能是 GA4 有些設定沒有完成(例如與 Google Ad 帳戶連接),最後可能就是 GA4 本身的 Bug 或是資料尚在處理中。

當你的 Google Ad 帳號沒有跟 GA4 連接,可能就會出現(not set)。

除了 GA4 Bug 的問題無法解決需等待官方更新之外,大部分的情況都是有解的,或是可以減少 (not set) 數量的產生。


「來源/媒介」的 (not set)

在 GA4 當中,相關的維度有「來源/媒介」、「工作階段來源/媒介」以及「最初招攬到使用者的來源/媒介」,如果在這些維度當中看到(not set),我們可以往以下幾個方向去查找,試想問題可能是出在哪裡。

最常見的就是獲客 > 流量開發 or 獲取新客報告中的維度「工作階段來源/媒介」或是「最初招攬到使用者的來源/媒介」出現 (not set),如果我們再進一步深入到第二維度,會發現這些 not set 都是隸屬於「Unassigned」

「Unassigned」又是什麼?(not set)怎麼都出現在這裡?

GA4 其實已經有先自定義部分流量來源的名稱,進來的流量會被自動歸類在特定的管道群組內,而不在預先定義內的就會被歸類到「Unassigned」

關於「Unassigned」的解釋可以先看這篇文章:GA4 預設管道群組中的「Unassigned」是什麼?,然後再繼續往下閱讀。

所以我們可以知道,不在 GA4 預先定義內的會被歸類到「Unassigned」,想當然爾(not set)當然也不會在預先定義內,自然會被歸類到這邊。

UTM 參數錯誤導致(not set)

看完上一段之後,你現在應該知道(not set)出現的原因了,也就是當 GA4 無法判斷或取得其來源與媒介時,流量的「來源/媒介」相關維度就會出現(not set)。

這樣的情況很常發生在建立了錯誤的 UTM 參數,為了要追蹤來自異業合作的流量(給網紅的專用連結、站外媒體等),你創建了一條帶有 UTM 參數的連結,例如:

www.abc.com/blue-shoe?utm_source=facebook
(沒有 utm_medium ,「媒介」會出現 not set)

www.abc.com/blue-shoe?utm_medium=post
(沒有 utm_source,「來源」會出現 not set)

這兩條連結都沒有 utm_campaign,GA4 「廣告活動」會出現(not set)

結論:
如果你希望減少(not set)在「來源/媒介」相關維度中出現的情況,在建立帶有 UTM 參數的連結時,一定要同時包含 utm_source、utm_medium 以及 utm_campaign只要有設定其中一個參數,但其他兩個沒有,那沒被設定到的就會變成(not set)

因此,當你的連結有帶到任何一個 UTM 參數時,請填寫完整,減少(not set)出現的可能。

Measurement Protocol 設定錯誤導致(not set)

如果有在用 Measurement Protocol 將線下資料(例如:Pos 系統、CRM 系統)傳送到 GA4 的朋友,很有可能因為 MP 設定上的錯誤造成「來源/媒介」相關維度出現(not set)。

使用 MP 常常被忽略的是,我們是無法透過 MP 傳送的資料去創建一個新的 GA4 Client ID 或是工作階段(session ID)只能透過 MP 去傳送已經在 GA4 中有 Client ID 或是 session ID 的資料,然後將線下的事件與已存在的 session 相匹配,進而去將線下的行為與線上結合。

舉個例子:

使用者來到門市想購買產品,發現門市正在推廣加入會員就送 100 元折價券的活動,而且當下就可以使用,經過店員的引導使用者透過手機於線上完成了註冊。

接著在門市完成購物並使用了 100 元折價券,門市人員透過 Pos 機完成結帳,並將資料回傳給 GA4,兩邊資料結合後,記錄為一次轉換(購買事件)。

當 POS 機送出資料給 GA4 時,必須要帶入剛剛使用者於線上註冊時產生的 seeion_id,否則兩邊資料無法比對,GA4 只會接收到一個事件,但無法得知來源為何(連「工作階段」都沒有,怎麼會有「工作階段的來源/媒介」呢?)

因為我們不能透過 MP 規格發送的事件自行產生 session_id ,只能去匹配已經存在於 GA4 的 session_id 後,GA4 才能完整記錄我們以 MP 規格送出去的資料。

遺失「session_start」造成(not set)

在 GA4 的預設事件中,有一個「session_start」事件,當進站的使用者 cookie 中不存在工作階段或是原先的工作階段已經到期了(預設為 30 分鐘),那麼 GA4 就會給予一個工作階段,此為「session_start」事件。

看到上面 MP 的解釋你大概猜到,如果「session_start」沒有啟動,就不會有「工作階段來源」、「工作階段媒介」以及「工作階段廣告活動」的參數,那「工作階段的來源/媒介」自然也會是(not set)了。

如果你有使用 Server-side GTM,沒有傳送 「session_start」事件到 GA4,這種情況就有可能發生。

(當然,如果你沒使用,就可以排除這種可能。)

「目標對象觸發條件」未匹配當前「session」

(在論壇看到有人碰到這樣情況,據了解有發生機會但鮮少發生,寫下來留存參考)
另一種情況則是你使用 GA4 後台的「目標對象」建立了「目標對象觸發」的事件,透過這個目標對象觸發條件啟動的事件,可能沒有與現有的 Session 匹配,如此一來,在「工作階段的來源/媒介」這個維度上,你也只能獲得(not set)了。

例如:

你的網頁有一個「檔案下載」事件,但因為 GA4 是以事件為基礎,所以當使用者在同一個工作階段內重複點擊了好幾次「檔案下載」,GA4 就會收集到好幾次的「檔案下載」事件。

但你希望每個工作階段只會有一次「檔案下載」事件,避免影響數據判讀。

於是你設定了一組目標對象,序列第一步驟的條件必須是有「session_start (有工作階段啟動)」,第二步驟是產生「檔案下載」事件,接著用此目標對象設定作為觸發條件,另外觸發一個經過篩選的「檔案下載」事件。

如此一來,這個透過目標對象條件觸發的事件就只會是屬於「一個工作階段中只會記錄到一次的事件」。

(因為如果使用者在同一個工作階段(session)內再次提交表單,不會再有「session_start」事件產生,除非 session 過期。)

(BTW,這是針對每個 session 只記錄一次「事件」的做法,如果是要對每個 session 只記錄一次「轉換」,直接到 GA4 後台的「轉換」事件設定就可以了,GA4 後台 > 「資料顯示」 > 「轉換」 > 該轉換最右邊點選「三點」符號 > 選擇「變更計算方式」> 改成「每個工作階段一次」。)

變更轉換事件計算方式

而這個透過目標對象觸發的事件,很有可能不會與當下的 session 匹配,因此造成「來源/媒介」出現(not set)/(not set)的情況發生。

目標對象觸發條件設定畫面

不過,依據社群的討論,這情況會有但是蠻少見的。

所以如果你有使用「目標對象觸發條件」,再請多觀察該事件的「工作階段的來源/媒介」的狀態,是否有(not set)的情況出現。


GA4 中,我們可以看到許多跟 Google Ads 相關的維度,例如「最初招攬到使用者的 Google Ads 帳戶名稱」「最初招攬到使用者的 Ads 廣告活動」或是「工作階段 Google Ad 廣告群組名稱」

你在報表中發現這些維度為(not set)的時候,有可能會是下面這幾種情況。

GA4 中 Google 廣告相關維度

當發現明明廣告來源是 Google 廣告,但「Google Ads 相關維度」卻是(not set),此時我們可以依照以下順序排除問題。

  1. 你的 Google Ads 帳號可能沒有跟 GA4 連接,先到 GA4 後台 > 「產品連接」 > 「Google Ads 連接檢查」,確認 GA4 有連結到正確的 Google Ads 帳號。
  2. Google Ads 的自動標記沒有打開,因此廣告到達網頁的網址最後面沒有參數「gclid」,請到 Google Ads 帳號確認是否有啟用自動標記。

    關於自動標記的設定方式,可參考 Google 官方文件

結論:
「Google Ads 相關維度」如果全部都出現(not set),請先檢查廣告帳號是否有跟 GA4 連結,如果有,就請檢查自動標記是否有啟動,可以解決大部分問題。

如果發現有部分維度有資料,部分維度是(not set),例如「工作階段 Google Ads 帳戶名稱」有資料,但是「工作階段 Google Ads 廣告活動」為(not set),也請往自動標記的方向查詢,是否手動於廣告到達網頁的網址加上了參數,與自動標記的參數發生了衝突。


「網頁標題」出現(not set)

沒有 <title> 標籤

如果你的「網頁標題」維度出現(not set),很有可能是因為網頁缺少 html 的 <title></title> 標籤,只要在第二維度中選取「網頁路徑與畫面類別」或是「網頁位置」維度,就可以知道是哪個頁面有問題。

接著到該頁面中點選右鍵 > 選取「檢查」> command + F 輸入 title > 確認是否有 <title></title> 標籤

如果沒有,請與工程師聯絡,於遺失「網頁標題」維度的網頁上放入<title></title> 標籤。

GA4 代碼在 <title> 之前載入

另一個可能的原因則是,你的 GTM 容器或是 GA4 追蹤代碼放在 <title></title> 標籤之前,如果有這樣的情況,也請工程師將代碼安裝在 <title> 之後,觀察是否能減少(not set)的情況發生。

沒有「page_view」事件

GA4 預設發送的「page_view」事件(預設是強制開啟)帶有兩個基本參數,一個是「page_title」,另一個則是「page_location」,因此如果「網頁標題」維度出現(not set),很有可能是因為「page_view」事件沒有發送。

什麼情況下會沒有發送「page_view」事件呢?請看下個段落的解釋。


「到達網頁」出現(not set)

這是最常見也最多人會有的疑問,大概僅次於「來源/媒介」的詢問度,到底為什麼「到達網頁」這麼容易會出現(not set)呢?

大部分的原因都是因為 GA4 的「page_view」事件沒有發送的關係「page_view」是 GA4 加強型評估中的預設事件,當使用者載入網頁或是瀏覽器有發生紀錄變更,這個事件就會被啟動。

但是有個使用者行為會產生例外,

  1. 使用者打開了你的網頁
  2. 然後就放著不管去做別的事情,網頁頁籤還留在瀏覽器上面
  3. 使用者於 35 分鐘後回來,開始瀏覽剛剛打開的網頁
  4. 因為超過預設的工作階段時間(30分鐘),網頁又再啟動了一個「session_start」事件
  5. 但是頁面沒有重新載入,所以沒有「page_view」事件發生,就可能不會有「到達頁面」維度的資料。

沒有「page_view」等於沒有「到達網頁」維度

一個很簡單的判斷方式,當「到達網頁」出現(not set)時,你可以發現「瀏覽」維度為 0,但使用者相關維度則是有數值的。

所以該怎麼辦?總不能去控制使用者行為吧?
請他如果閒置太久的網頁不要直接看,請先重新載入?

當然不可能!

延長工作階段時間

如果你真的很在意到達網頁的(not set),可以到 GA4 後台 > 「資料收集和修改」 > 「資料串流」 > 選擇網站串流 > 選擇「進行代碼設定」> 展開顯示更多 > 選擇「調整工作階段逾時」> 設定為最大值 7 小時 55 分。

這個方法可以減少(not set)出現的數量,但無法完全根絕,畢竟使用者也是有可能把網頁打開後擺了超過 7 小時 55 分之後再回來瀏覽,在沒有重新載入畫面的情況下,依然不會發送「page_view」事件。

另外一點要注意,調整工作階段時間是否會影響到網站上其他的追蹤事件,這也是必須要考量到的事情。


「內容群組」出現(not set)

滿心期待的打開「內容群組(content group)」維度,結果報表只給了(not set),WHY?

這是因為 GA4 雖然有給「內容群組」維度,但是沒有給予相對應的參數到這個維度當中,如果我們今天需要用到「內容群組」維度,就必須要透過 Google 代碼管理工具(GTM)進行設定。

關於這部分的設定教學,請參考文章:如何用 GTM 設定 GA4 「內容群組」維度?

設定完畢之後,「內容群組」維度就不會再出現(not set)了。


「地理位置」相關維度出現(not set)

GA4 中與「地理位置」相關的維度例如:「國家」「區域」以及「城市」等如果出現(not set),對於某些原本是線上電商,需透過「地理位置」維度資料判讀開設實體店地點的品牌很可能因此失去判斷的依據。

抑或是跨國型網站需透過「國家」維度來判斷是否有哪幾樣產品或是服務特別受到某些國家的人青睞,都會需要用到「地理位置」相關維度。

而會造成這些維度出現(not set)的原因很有可能是:

IP 無法識別

GA4 的地理位置是透過識別第三方服務的 IP 達成,如果 IP 遭到隱藏或是遮蔽,例如使用者可能使用了VPN、代理伺服器或是其他隱私保護工具,那「地理位置」相關維度就會出現(not set),這點愛莫能助,不是從 GA4 或是 GTM 更改設定就可以解決的問題。

透過 MP 傳送的事件不會帶 IP

如果有使用 GA4 版本的 Measurement Protocol 傳送事件,預設是不會帶 IP 且無法帶上 IP 的,過往在 Universal Analytic 是可以做到在事件參數中放上 ip 參數的,但目前的 GA4 MP 確實無法做到,暫時只能任由它顯示(not set)。

(BTW,過往 UA 的 MP 確實是可以加入流量來源以及 IP 參數在 MP 中的,或許是隱私權問題而有了修改,因為在 GA4 官方文件也明說不會於 GA4 紀錄使用者 IP。


自訂義維度的(not set)

如果是 GTM 的使用者,一定會常常用到 GA4 後台的「自訂定義」,因為我們必須將透過 GTM 設置的事件參數或是部分 GA4 預設的參數定義成維度,才有辦法在報表中觀看。

這邊要注意的是,「自訂維度」無法溯及既往,只會有設定好當天之後的資料,這也是為什麼你如果設定了一個過去的時間區間,「自訂維度」欄位會出現大量(not set)的原因。

因此,如果你有參數需要透過自訂維度在報表中觀看,請盡可能越快在 GA4 中定義好,以免事件代碼上線許久等到要做報告的時候才發現大事不妙。

延伸閱讀 》如何使用 GA4 「自訂定義」中的「自訂維度」功能?


事件參數遺失造成(not set)

照正常來說,如果在 GTM 設定的「GA4 評估 ID 代碼」中設置了與使用者相關的參數,例如:使用者的會員等級訂閱方案喜愛偏好等資訊。

接著,我們在未來用 GTM 設定的「Google Analytics (分析):GA4 事件」代碼會直接繼承 「GA4 評估 ID 代碼」中的參數,只要你用的是同一個「GA4 評估 ID 代碼」,便不用於 GA4 事件代碼再設定一遍事件參數或是使用者屬性。

但就像是某外送廣告一樣,在這邊也是(應該)會繼承啦!

因為實際上是有可能遺失參數的。

最保險的作法就是:

1. 在每個「GA4 事件」中都帶上參數,儘管你的「GA4 評估 ID 代碼」已經有設置參數。

2. 複製貼上很麻煩,請善用 GTM 變數「Google 代碼:事件設定」,將會重複出現的參數設置於同一個「Google 代碼:事件設定」變數內供大家取用。

3. 請確認在事件代碼啟動之前,網頁上或是資料層(Data Layer是有相對應值的。

4. 到 GA4 後台自定義所有參數到維度當中。

5. 測試+觀察。

如此一來,就能確保我們需要的參數都有隨著該 GA4 事件發送,也記得密切觀察 GA4 報表中的值,避免要做週報或是月報時,發現了一堆(not set)或是根本沒有數字。

電子商務事件中的(not set)

電子商務事件中的參數也是無法互相繼承的,假設你在「view_item」事件中設定了 item 相關參數,例如:「item_brand」、「item_category」或是「item_name」等。

接下來的事件如「add_to_cart」或是「purchase」也都必須帶上相同的參數,GA4 並不會因為前面「view_item」已經有參數值,後面依序的事件就自動補上參數。

這也是很常見的誤區,所以當你的電子商務事件「item 相關維度」出現(not set)時,請先確認是否有在每個事件中都帶上了參數。


讓子彈飛一下,等待 24-48 小時

GA4 處理資料大約需要 24-48 個小時,所以剛設定好的參數不會馬上顯示在相對應的維度中,儘管維度可以呼叫出來,但是資料可能還沒跟上,GA4 此時會先使用(not set)為這個值預留一個位置,待資料處理完畢之後再替換掉。

如果過了 48 小時之後還是呈現(not set),這時我們就可以用上述的方法開始查找原因了。


Google 11/2 號更新

Google 調整了自動收集事件中的「first_visit」以及「session_start」事件,這兩個事件將會自動帶入同一個工作階段中使用者端啟動的第一個事件參數(譬如說:page_view),確保子資源的資料可以更加正確,這一舉動也有可能會減少(not set)的出現。


總結一下

目前為止,我們提到了 15 種在不同維度上會出現(not set)的可能原因,這邊簡單總結一下,未來如果有遇到相關問題,也方便快速查找。

  1. 如果「來源/媒介」出現(not set/not set),請先查找該網址連結的 UTM 參數是否設定錯誤,如果沒錯,再來是查找是否丟失 session。
  2. 如果「Google Ads 相關維度」出現(not set),請確認廣告帳號是否與 GA4 連接。
  3. 如果「網頁標題」出現(not set),請先確認該網頁是否有 <title> 標籤或是GA4 代碼有無在 <title> 前載入?如果前面兩項都沒問題,就再看是否沒有「session_start」或是「page_view」事件。
  4. 如果「到達網頁」出現(not set),基本上都是「page_view」事件沒有發送的關係。
  5. 如果「內容群組」出現(not set),你需要用 GTM 自行設定,請參考文章:如何用 GTM 設定 GA4 「內容群組」維度?
  6. 如果「地理位置」相關維度出現(not set),通常通是 IP 識別的問題,注意一下自家是否有使用 MP 或是 Server-side GTM 發送事件以及參數,如果沒有,就是使用者端有保護自己的 IP 不讓其被追蹤。
  7. 「自定義維度」的資料無法回到過去,只能看到設定當天開始後的資料,在此之前的都會是(not set)。(關於自訂維度的設定,可以參考這篇:如何使用 GA4 「自訂定義」中的「自訂維度」功能?
  8. 可能遺失了事件參數,因為 GA4 事件不一定會繼承最上層 GA4 ID 代碼中的參數,建議於事件代碼的「共用事件設定」中放入設定好的「Google 代碼:事件設定」變數。
  9. 等個 24-48 小時,讓資料處理一下。

這是目前已知的(not set)可能原因,但相信還有更多可能性只是沒有被提出來,未來如果有發現其它造成 GA4 報表出現(not set)的原因,我們也會持續在本篇文章更新。


延伸閱讀

如果你很喜歡這篇文章並且覺得內容有幫助,又剛有些多餘時間,歡迎你看看其它文章,繼續探索(這坑?這地獄?這片樂土?)

同時,如果對於內容有疑問或是建議,也歡迎你留言告訴我們:)