Appearance
在網站的世界中 referrer
一詞指的是一個網頁的來源,例如:你在 A 網頁點擊連結到達 B 網頁,對於 B 網頁而言,referrer
就是 A 網頁(網址)。 在 Google Analytics 4 (GA4) 中,page_referrer
這個內建參數就是用來記錄 referrer
所用的,在 GA 當中的中文維度名稱為 網頁參照網址
。
實際查看 GA4 的報表後,發現 page_referrer
並不是完全符合我們的預期,可能會看到三種類型的值:
- 空值
https://www.example.com/
只有 origin。https://www.example.com/abc/?id=123
- 完整的 URL(包括路徑、網址參數)。
什麼樣的情況是空值?
使用者直接輸入網址或透過書籤進入網頁的情況,page_referrer
會是空值,這是最常見的一種。
什麼樣的情況是完整的 URL ?
如果你的 GA 只有安裝在一個網站上(單一網域),站內互連的頁面其 page_referrer
會是完整的 URL。
什麼樣的情況只有 origin ?
只要來源網域不同,像是藉由 Google 搜尋、Facebook 分享到達你的頁面,page_referrer
就會是只有 origin。
如果擁有多個不同網域的網站,page_referrer
一樣會只有 origin,舉例來說,假設我有兩個站都安裝了 GA:
https://www.example.com/
https://news.example.com/
在 A 頁 https://www.example.com/abc/
當中有一個連結指向 B 頁 https://news.example.com/
,使用者點擊該連結,對於 B 頁 page_view
事件而言 page_referrer
會是 https://www.example.com/
而不是 https://www.example.com/abc/
完整網址。
重點不在於兩個網站是不是都安裝了同一個 GA,這其實與 GA 無關,只要簡單想成「網域不同,只會有 origin」即可。
Referrer 的安全機制
會有上述問題是因為瀏覽器對於 referrer 的安全機制所產生的結果,想像網址當中如果存放了具有隱私的資訊,這些資訊如果被第三方網站得到可不得了。
因此對於同一個網域的網站,referrer 會是完整的 URL,但對於不同網域的網站,瀏覽器所做的「預設」保護機制就是僅能讓他拿到 origin,而不是完整的 URL。 這也是為什麼在 GA 中的「網頁參照網址」有些會是完整的網址,有些則是只有 origin 的原因。
關於 referrer 細節以及如何改變預設的 Policy,推薦閱讀 Referer and Referrer-Policy best practices。 瀏覽器對於 referrer 的預設機制是好的,所以個人傾向不去更動它,但值得了解這個機制的運作方式。
回到原本的問題,如果想從單一事件得知 A 網頁到 B 網頁的資訊,GA4 自動收集的事件中有兩個可用:
page_view
事件:將page_referrer
視為來源,page_location
視為目的地。但如果遇到上述問題(網域不同時)會碰壁。click
事件:將page_location
視為來源,link_url
視為目的地。但這個事件只追蹤跨站的連結,如果是同一個網站內的連結點擊不會追蹤。
這兩個 GA4 自動收集的事件在我們的問題上很有趣,一個是跨站時會失真,一個是只收集跨站的連結點擊。
GA 自動收集的 click
事件只追蹤跨站連結或許合理,畢竟站外連結就不會有 page_view,只能靠 click 來追蹤,感覺是刻意與 page_view 形成一個互補,但對於使用 GA 的人來說,用起來可能就沒那麼方便。 本篇文章著重在一個事件中,同時帶有「來源」及「目的地」的事件在做探究,當然也可以用其他的方式計算出 A 到 B 點的流量,像是用漏斗分析,將步驟一、二分別設定為兩頁的 page_view。
而如果想在一個事件上同時看到來源及目的地,一種方法是再寫一個自訂事件,新增一個 click_link
事件,收集點擊的連結 link_url
, 這個事件與內建 click
事件差異在於,我們寫的 click_link
事件會收集所有的點擊連結,而不是只有跨站的。