有在使用 Google Analytic 的朋友一定對於報表中的 (not set) 感到很頭痛,數量如果少那還好,但數量一多起來之後,你開始驚覺大事不妙了,行銷活動的資料呢?該不會這些 (not set)表示都沒追到資料吧?還有得救嗎?有什麼辦法可以讓我事先預防?
會出現(not set)不一定是因為你的資料沒設定好,造成(not set)的原因其實有很多種,有一些狀況到今天依然是個謎團。
不過,這篇文章將會告訴你這些 (not set) 之所以會出現在不同類型報表或是維度的原因,
我們繼續看下去。
本篇重點
什麼是 (not set)?
當我們打開不同 GA4 報表時,往往會在各種維度中看到 (not set) 的出現,例如:來源/媒介、城市、網頁位置、到達網頁、國家、語言以及廣告活動等。
會出現(not set)的原因通常是 GA4 沒有抓取到相對應的資料,維度雖存在,但收到的資料無法吻合維度名稱或是沒有被定義,報表就會出現(not set)。

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

除了 GA4 Bug 的問題無法解決需等待官方更新之外,大部分的情況都是有解的,或是可以減少 (not set) 數量的產生。
ㅤ
先分清楚:有些 (not set) 是正常的
在開始排查之前,有件事情要先跟大家說:不是所有的 (not set) 都是設定出了問題。
有些維度只對特定的流量才有意義,當這筆流量本來就沒有對應的資料時,GA4 就會顯示 (not set),這是完全正常的。例如:
- 網址沒有帶 utm_term,「工作階段手動字詞」就會是 (not set)。
- 不是從 Google Ads 進來的流量,「工作階段 Google Ads 廣告群組名稱」這類廣告相關維度,也會是 (not set)。
(所以看到 (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)出現的可能。
延伸閱讀》8 個導致 UTM 參數在 GA4 中失效的可能原因
ㅤ
Measurement Protocol 設定錯誤導致(not set)
如果有在用 Measurement Protocol 將線下資料(例如:Pos 系統、CRM 系統)傳送到 GA4 的朋友,很有可能因為 MP 設定上的錯誤造成「來源/媒介」相關維度出現(not set)。
使用 MP 常常被忽略的是,MP 送出的事件如果沒有對應到 GA4 中已經存在的 client_id 和 session_id,GA4 就不知道這次互動是從哪個來源來的,「工作階段來源/媒介」就會變成 (not set)。
舉個例子:
使用者來到門市想購買產品,發現門市正在推廣加入會員就送 100 元折價券的活動,而且當下就可以使用,經過店員的引導使用者透過手機於線上完成了註冊。
接著在門市完成購物並使用了 100 元折價券,門市人員透過 Pos 機完成結帳,並將資料回傳給 GA4,兩邊資料結合後,記錄為一次轉換(購買事件)。
當 POS 機送出資料給 GA4 時,必須要帶入剛剛使用者於線上註冊時產生的 seeion_id,否則兩邊資料無法比對,GA4 只會接收到一個事件,但無法得知來源為何(連「工作階段」都沒有,怎麼會有「工作階段的來源/媒介」呢?)
因為我們不能透過 MP 規格發送的事件自行產生 session_id ,只能去匹配已經存在於 GA4 的 session_id 後,GA4 才能完整記錄我們以 MP 規格送出去的資料。
另外還有一點需要注意的是,就算透過 MP 發送的事件資料匹配到了 session_id,但是依然不會自動繼承該工作階段的其它參數,例如由 GA4 自動收集的網頁位置(page_location)、來源(source)、媒介(medium)、裝置(device_category) 以及其它相關維度,這代表我們必須在抓取 session_id 來配對的同時,也必須一併把其它參數的值抓下來然後再透過 MP 送給 GA4,才能避免掉因為 MP 產生的(not set)情況
(是的,很複雜很麻煩。)
ㅤ
遺失「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)的情況出現。
ㅤ
Google Ads 維度的(not set)
GA4 中,我們可以看到許多跟 Google Ads 相關的維度,例如「最初招攬到使用者的 Google Ads 帳戶名稱」、「最初招攬到使用者的 Ads 廣告活動」或是「工作階段 Google Ads 廣告群組名稱」。
你在報表中發現這些維度為(not set)的時候,有可能會是下面這幾種情況。


當發現明明廣告來源是 Google 廣告,但「Google Ads 相關維度」卻是(not set),此時我們可以依照以下順序排除問題。
- 你的 Google Ads 帳號可能沒有跟 GA4 連接,先到 GA4 後台 > 「產品連結」 > 「Google Ads 連結檢查」,確認 GA4 有連結到正確的 Google Ads 帳號。
ㅤ - Google Ads 的自動標記沒有打開,因此廣告到達網頁的網址最後面沒有參數「gclid」,請到 Google Ads 帳號確認是否有啟用自動標記。
ㅤ - GA4 連結了不只一個 Google Ads 帳戶,其中可能有部分帳號的自動標記沒有打開。
ㅤ - 自動標記有打開,但是你的網站過濾掉了網址中的「gclid」參數,造成「Google Ads 相關維度」變成(not set),可以在後台中測試自家廣告,觀察測試廣告是否可以開啟以及到站後的網址後面是否帶有 「gclid」參數,如果廣告無法開啟或是確定被過濾掉了,可以詢問自家網站工程師過濾的原因?是否可以保留「gclid」參數?
- 過程中被轉址也是有可能遺失「gclid」,可以使用像是 Redirect Path 這樣的工具查詢是否出現肉眼無法察覺的轉址情況發生。
關於自動標記的設定方式,可參考 Google 官方文件或是這份關於自動標記的說明文件。
ㅤ
結論:
「Google Ads 相關維度」如果全部都出現(not set),請先檢查廣告帳號是否有跟 GA4 連結,如果有,就請檢查自動標記是否有啟動,可以解決大部分問題。
ㅤ
自動標記(Auto-Tagging)可以和 UTM 參數共用嗎?
先說結論:可以。
以前的 UA 有一個「覆蓋」選項,可以讓廣告連結中手動設定的 UTM 參數,覆蓋掉自動標記(gclid)帶來的資料。例如廣告原本會顯示為 google / cpc,網址如果帶了 utm_source=GoogleSearch&utm_medium=SalesText,開啟覆蓋之後就會變成 GoogleSearch / SalesText。
到了 GA4,這個選項被拿掉了。因為在 GA4 的判斷中,如果廣告連結同時帶有 UTM 和 gclid,會優先採用 gclid,接著才是 UTM 參數。
這邊要注意的是,自動標記不會產生 UTM 參數,而是在網址加上 gclid,GA4 會用它自動帶入來源(google)、媒介(cpc)和廣告活動。如果需要更細的資訊,可以再手動加上 utm_term、utm_content 補充。
所以將「自動標記」與 UTM 參數兩個共用,這是沒有問題的。
ㅤ
Meta 廣告會覆蓋
在 Meta 廣告中,可以設定自動在 utm_source、utm_medium 以及 utm_campaign 中帶上相對應 Meta 廣告設定的廣告以及素材名稱,此時如果我們的廣告到達網頁連結中有帶上我們自行設定的 UTM 參數,你的到達網頁連結會變成帶有兩組 UTM 參數,如下方範例:

那麼 GA4 只會抓取網址最後面的 UTM 參數,也就是 Meta 廣告自動帶上的部分(紅字粗體),前面由我們手動設定的 UTM 參數,就會被覆蓋掉了,GA4 當中的「來源/媒介」雖然不會是(not set)但也永遠不會是你自己設定的 utm_source、utm_medium 以及 utm_campaign。
以過往的經驗來說,只要有打開「自動標記」,GA4 可以看到的資料其實已經很夠用了,一般的情況下,不太會需要再另外於網址中用到 UTM 參數的設定,二來則是如果每個廣告都要使用 UTM 參數,那會很麻煩且可能會被投手討厭 🤪
如果你有什麼會需要在 Google Ad 廣告到達網頁連結中另外設定 UTM 參數的情況的經驗,也歡迎分享讓大家一起參考,一起變強,一起成長。
ㅤ
「網頁標題」出現(not set)
沒有 <title> 標籤
如果你的「網頁標題」維度出現(not set),很有可能是因為網頁缺少 html 的 <title></title> 標籤,只要在第二維度中選取「網頁路徑與畫面類別」或是「網頁位置」維度,就可以知道是哪個頁面有問題。
接著到該頁面中點選右鍵 > 選取「檢查」> command + F 輸入 title > 確認是否有 <title></title> 標籤 。

如果沒有,請與工程師聯絡,於遺失「網頁標題」維度的網頁上放入<title></title> 標籤。
延伸閱讀》如何準備給工程師的 GA4 電子商務 Data Layer 資料層文件?
ㅤ
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 加強型評估中的預設事件,當使用者載入網頁或是瀏覽器有發生紀錄變更,這個事件就會被啟動。

但是有個使用者行為會產生例外,
- 使用者打開了你的網頁
- 然後就放著不管去做別的事情,網頁頁籤還留在瀏覽器上面
- 使用者於 35 分鐘後回來,開始瀏覽剛剛打開的網頁
- 因為超過預設的工作階段時間(30分鐘),網頁又再啟動了一個「session_start」事件
- 但是頁面沒有重新載入,所以沒有「page_view」事件發生,就可能不會有「到達頁面」維度的資料。
沒有「page_view」等於沒有「到達網頁」維度。
一個很簡單的判斷方式,當「到達網頁」出現(not set)時,你可以發現「瀏覽」維度為 0,但使用者相關維度則是有數值的。

所以該怎麼辦?總不能去控制使用者行為吧?
請他如果閒置太久的網頁不要直接看,請先重新載入?
當然不可能!
可以怎麼處理,我們繼續看下去。
ㅤ
延長工作階段時間
如果你真的很在意到達網頁的(not set),可以到 GA4 後台 > 「資料收集和修改」 > 「資料串流」 > 選擇網站串流 > 選擇「進行代碼設定」> 展開顯示更多 > 選擇「調整工作階段逾時」> 設定為最大值 7 小時 55 分。

這個方法可以減少(not set)出現的數量,但無法完全根絕,畢竟使用者也是有可能把網頁打開後擺了超過 7 小時 55 分之後再回來瀏覽,在沒有重新載入畫面的情況下,依然不會發送「page_view」事件。
另外一點要注意,調整「工作階段時間」會影響到網站上其它的數據,例如:當你這麼做之後,你的「工作階段數」會減少,「平均工作階段時間」會增加,所有跟「工作階段」相關的數據都會因此受到影響,因此這都是必須要考量到的事情。
ㅤ
GA4 追蹤代碼觸發時間點錯誤
如果你的網站是用 GTM 安裝 GA4 追蹤代碼,那麼請注意在選擇觸發條件時,必須要選擇 Initialization-All Pages,有時事件發生的順序出錯,造成 session_start 不是第一個送出的事件,也會使得到達網頁出現(not set)。
(BTW,這個觸發條件的選擇也是官方建議的)

ㅤ
「內容群組」出現(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 的 MP 預設不會帶使用者的位置資訊,如果沒有另外用 user_location 或 ip_override 參數帶入國家、地區、城市,地理位置相關維度就會是 (not set)。

這個時候你可能會想問:「GA4 不是不會記錄 IP 嗎?那為什麼報表裡還看得到城市、地區或是國家這些地理維度?」
這是因為 GA4 會在收到資料的當下,用 IP 推算出使用者的地理位置,推算完之後 IP 就會被丟掉,不會記錄也不會儲存。也因為這樣,GA4 不需要像過去的 UA 一樣另外設定 IP 匿名化。
ㅤ
垃圾流量(幽靈流量)造成的(not set)
有些垃圾流量其實根本沒有造訪你的網站,而是有人拿到你的評估 ID 之後,直接透過 Measurement Protocol 把假資料打進你的 GA4,這種流量也被稱為「幽靈流量」。
因為這些資料不是從網頁上送出的,沒有正常的工作階段資訊,常常也沒有主機名稱,所以「來源/媒介」、「到達網頁」、「主機名稱」等維度,都很有可能出現 (not set)。
如何判斷與排除垃圾流量?
判斷的方式很簡單,在報表中加上「主機名稱」這個維度,看看有沒有出現 (not set),或是不屬於你網站的網域。
如果有的話,就可以透過 GA4 的「主機名稱篩選器」把它們擋掉:
GA4 左下角齒輪進入後台 > 展開「資源設定」區塊 > 展開「資料收集和修改」 > 「資料篩選器」 > 「建立篩選器」 > 選擇「網站主機名稱流量」
(建議先把篩選器設成「測試中」觀察幾天,確認沒有擋到自己的網域之後,再改成「有效」。篩選器生效之後,被排除的資料就不會再進到 GA4,事後也無法復原,這點要特別注意。)
關於主機名稱篩選器以及其他啟用 GA4 時必須檢查的設定,可以參考我們的免費電子書》GA4 設定檢查清單:18 個啟用前必須檢查的設定 & 12 個使用時必須注意的事項
ㅤ
自訂維度的(not set)
如果是 GTM 的使用者,一定會常常用到 GA4 後台的「自訂定義」,因為我們必須將透過 GTM 設置的事件參數或是部分 GA4 預設的參數定義成維度,才有辦法在報表中觀看。
這邊要注意的是,「自訂定義」的指標與維度無法溯及既往,只會有設定好後,才會有資料。
這也是為什麼你如果設定了一個過去的時間區間,「自訂維度」的欄位會出現大量(not set)的原因。

因此,如果你有非 GA4 預設參數需要在報表中觀看,請盡可能越快在 GA4 中自行定義,以免事件代碼上線許久等到要做報告的時候才發現大事不妙。
延伸閱讀 》如何使用 GA4 「自訂定義」中的「自訂維度」功能?
ㅤ
事件/配置參數遺失造成(not set)
照正常來說,如果在 GTM 設定的「Google 代碼」中的配置設定設置了與使用者相關的參數,例如:使用者的會員等級、訂閱方案、喜愛偏好等資訊。

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

ㅤ
但就像是某外送廣告一樣,在這邊也是(應該)會繼承啦!
因為實際上是有可能遺失參數的。
最保險的作法就是:
1. 在每個「GA4 事件」中都帶上參數,儘管你的「GA4 評估 ID 代碼」已經有設置參數。
2. 複製貼上很麻煩,請善用 GTM 變數「Google 代碼:事件設定」或是「Google 代碼:配置設定(用於存放使用者層級的資料)」,將會重複出現的參數設置於同一個變數內,供容器內的所有代碼取用。
(該如何設定「Google 代碼:事件設定」變數,可以參考這篇文章 》設定「Google 代碼:事件設定」變數)
3. 請確認在事件代碼啟動之前,網頁上或是資料層(Data Layer)是有相對應值的。
4. 到 GA4 後台自定義所有參數到維度當中。
5. 測試+觀察。
如此一來,就能確保我們需要的參數都有隨著該 GA4 事件發送,也記得密切觀察 GA4 報表中的值,避免要做週報或是月報時,發現了一堆(not set)或是根本沒有數字。
也可以定期透過 GTM「預覽」模式搭配 GA4 Debug View 檢查,那些放在 Google Tag 中的參數或是使用者屬性(尤其是這個),是否有出現在所有的 GA4 事件中。
ㅤ
電子商務事件中的(not set)
電子商務事件中的參數也是無法互相繼承的,假設你在「view_item」事件中設定了 item 相關參數,例如:「item_brand」、「item_category」或是「item_name」等。
接下來的事件如「add_to_cart」或是「purchase」也都必須帶上相同的參數,GA4 並不會因為前面「view_item」已經有參數值,後面依序的事件就自動補上參數。

這也是很常見的誤區,所以當你的電子商務事件「item 相關維度」出現(not set)時,請先確認是否有在每個事件中都帶上了參數。
ㅤ
維度與指標的「範圍」不相容造成的(not set)
這個情況在「探索」報表中特別常見,很多朋友明明設定都沒有問題,報表卻還是出現一大片 (not set),原因就出在維度和指標的「範圍」不相容。
GA4 中的每個維度和指標都有自己的範圍,分成「使用者」、「工作階段」、「事件」以及「商品」四種。當你把範圍不相容的維度和指標放在同一張報表時,GA4 找不到可以對應的資料,就會顯示 (not set)。
商品範圍的維度搭配一般事件
例如把「商品名稱」(商品範圍)和「事件計數」(事件範圍)放在同一張表,因為只有電子商務事件才會帶商品資料,像是 page_view、scroll 這些事件並沒有商品名稱,它們的數據就會全部被歸到 (not set)。
(想看商品的表現,就搭配「商品瀏覽次數」、「加入購物車的商品數」、「商品收益」這類商品範圍的指標,數據才會正確。)
使用者範圍的自訂維度
如果你有設定使用者範圍的自訂維度(例如會員等級),GA4 只會在這個使用者屬性被設定之後發生的事件上帶入這個值。在那之前發生的事件,像是使用者還沒登入時的瀏覽紀錄,就會顯示 (not set)。
所以在解讀這類報表時,要記得 (not set) 的部分,很可能只是「使用者還沒被貼上這個標籤」,而不是資料遺失了。
關於自訂維度的範圍與設定方式,可以參考》如何使用 GA4「自訂定義」中的「自訂維度」功能?
ㅤ
讓子彈飛一下,等待 24-48 小時
GA4 處理資料大約需要 24-48 個小時,所以剛設定好的參數不會馬上顯示在相對應的維度中,儘管維度可以呼叫出來,但是資料可能還沒跟上,GA4 此時會先使用(not set)為這個值預留一個位置,待資料處理完畢之後再替換掉。
如果過了 48 小時之後還是呈現(not set),這時我們就可以用上述的方法開始查找原因了。
ㅤ
Google 2023/11/2 號更新
Google 調整了自動收集事件中的「first_visit」以及「session_start」事件,這兩個事件將會自動帶入同一個工作階段中使用者端啟動的第一個事件參數(譬如說:page_view),確保子資源的資料可以更加正確,這一舉動也有可能會減少(not set)的出現。
ㅤ
GA4 (not set) 常見問題
GA4 的 (not set) 和 (other) 有什麼不一樣?
這兩個很常被搞混,但意思完全不同。
(not set) 是 GA4「沒有收到」這個維度的值,或收到的值沒辦法對應到維度,也就是這篇文章前面提到的各種原因。
(other) 則是 GA4 有收到資料,但因為這個維度的值太多、太雜(也就是「高基數」),超過了報表能顯示的列數上限,GA4 就會把資料量比較少的那些值,合併成一列 (other)。
常見會出現 (other) 的情況,像是把每個使用者都不一樣的值(例如會員編號、時間戳記)設成自訂維度,或是網址帶了一堆不同的參數,導致「網頁位置」的值多到數不完。
(遇到 (other) 的時候,可以先縮短報表的日期範圍、改用「探索」報表,或把資料匯出到 BigQuery 查看完整的原始資料。設定自訂維度時,也要避開這種每個值都不一樣的參數。)
ㅤ
GA4 的 (not set) 和 Unassigned 一樣嗎?
不一樣,但兩者常常一起出現。
(not set) 是指某個維度沒有值,例如「來源/媒介」是 (not set)。
Unassigned 則是「預設管道群組」裡的一個分類,意思是 GA4 拿到了這筆流量的來源和媒介,卻沒辦法把它歸進任何一個預設管道(例如 Organic Search、Paid Social)。
所以當「來源/媒介」是 (not set) 時,GA4 沒有東西可以判斷,管道群組自然就會變成 Unassigned。不過呢,Unassigned 不一定都是 (not set) 造成的,像是 UTM 的 utm_medium 自己亂取名稱,不符合 GA4 的管道規則,也會被歸到 Unassigned。
關於 Unassigned 的出現原因和解法,可以參考》GA4 Unassigned 是什麼?出現原因與 3 個減少方法
ㅤ
GA4 的 (not set) 和 (direct) / (none) 是同一件事嗎?
也不是喔!
(direct) / (none) 代表 GA4 有成功判斷,只是判斷的結果是「這個使用者沒有從任何地方點進來」,例如直接輸入網址、點書籤,或從不會傳送參照網址的 App 點進網站,所以會被歸到「Direct」管道。
(not set) 則是 GA4 根本沒有拿到可以判斷的資料。
簡單來說,(direct) / (none) 是「有答案,答案是直接進站」;(not set) 是「沒有答案」。
ㅤ
GA4 報表中的 (not set) 一定要完全消除嗎?
不一定,也幾乎不可能完全消除。
像是使用者開著 VPN、在頁面上閒置太久,或是 GA4 本身的資料處理時間差,這些都會讓報表中出現少量的 (not set),屬於正常現象。
比較需要注意的是以下兩種情況:
- (not set) 的比例突然大幅增加:通常代表網站最近改版、GTM 設定被更動,或是 Google Ads 連結、自動標記出了問題。
- (not set) 佔了某個維度很大的比例:例如超過一半的到達網頁都是 (not set),就要回頭檢查 page_view 是否有正常送出。
(建議可以定期看一下 (not set) 的比例變化,有異常再依照這篇文章的方法逐一排查就可以了。)
ㅤ
總結一下
目前為止,我們提到了 19 種會讓 GA4 報表出現 (not set) 的可能原因,這邊依照維度整理一下,未來如果有遇到相關問題,也方便快速查找。
「來源/媒介」出現 (not set)
- UTM 參數設定錯誤或不完整
- Measurement Protocol 送出的事件沒有對應到既有的工作階段
- 遺失「session_start」事件
- 「目標對象觸發條件」產生的事件沒有對應到當前的工作階段
「Google Ads 相關維度」出現 (not set)
- Google Ads 沒有與 GA4 連結、沒有開啟自動標記,或 gclid 在網站過濾或轉址的過程中遺失
「網頁標題」出現 (not set)
- 網頁沒有 <title> 標籤
- GA4 代碼在 <title> 之前載入
- 沒有送出「page_view」事件
「到達網頁」出現 (not set)
- 使用者閒置超過工作階段逾時時間,回來時開啟了新的工作階段,卻沒有重新觸發 page_view
- GA4 追蹤代碼的觸發時間點錯誤,session_start 不是第一個送出的事件
「內容群組」出現 (not set)
- 沒有透過 GTM 設定內容群組,請參考文章》如何用 GTM 設定 GA4「內容群組」維度?
「地理位置」相關維度出現 (not set)
- 使用者用 VPN、代理伺服器等工具隱藏了 IP
- 透過 MP 送出的事件沒有帶位置資訊
多個維度同時出現 (not set)
- 垃圾流量(幽靈流量)直接把假資料打進 GA4,可以用主機名稱篩選器排除
- 自訂維度無法回溯,建立之前的資料都會是 (not set),請參考》如何使用 GA4「自訂定義」中的「自訂維度」功能?
- 事件參數遺失,建議在事件代碼中使用「Google 代碼:事件設定」變數統一管理
- 電子商務事件之間的商品參數不會自動繼承,每個事件都要帶上
- 維度與指標的範圍不相容,例如商品範圍的維度搭配一般事件的指標
- 資料還在處理中,先等個 24–48 小時
這是目前已知的 (not set) 可能原因,但相信還有更多可能性只是沒有被提出來,未來如果有發現其它造成 GA4 報表出現 (not set) 的原因,我們也會持續在本篇文章更新。
延伸閱讀
如果你很喜歡這篇文章並且覺得內容有幫助,又剛有些多餘時間,歡迎你看看其它文章,繼續探索(這坑?這地獄?這片樂土?)
同時,如果對於內容有疑問或是建議,也歡迎你留言告訴我們:)
