如要瞭解使用者和工作階段範圍的概念總覽,包括 Google Analytics 如何根據閒置時間定義及嚴格限制工作階段,請參閱「維度和指標:關於 Analytics 工作階段」和「流量來源維度的範圍」指南。
本指南將說明開發人員面臨的特定挑戰,以及管理工作階段設定和被動追蹤的最佳做法。
將網頁層級維度與工作階段指標配對
最常見的報表細微差異之一,是您將網頁範圍維度 (例如網頁路徑和畫面類別) 與工作階段層級的「工作階段」指標配對時發生。
工作階段和檢視畫面定義
「工作階段」會計算指定網頁路徑至少載入一次的不重複時間範圍。
瀏覽次數 (網頁瀏覽次數) 會計算網頁路徑載入的累計總次數。
範例
假設單一工作階段的使用者瀏覽路徑如下:/home →
/products → /home → 離開
如果這是唯一的工作階段,使用「網頁路徑和畫面類別」和「工作階段」或「瀏覽」指標設定的報表會顯示:
| 網頁路徑 | 工作階段 | 觀看次數 |
|---|---|---|
/home |
1 | 2 |
/products |
1 | 1 |
| 總計 (Google Analytics 排除重複計算) | 1 | 3 |
如果將資料列加總,會得到 2 個工作階段,但系統會將資源的實際總計值重複計算,因此為 1。
自訂規則
- 有網頁路徑的工作階段是指至少造訪路徑一次的不重複工作階段。
- 「有到達網頁的工作階段」是指在路徑上開始的獨立工作階段。如要查看到達網頁流量,請一律使用「到達網頁 + 查詢字串」,而不是「工作階段 (網頁路徑)」。
- 「觀看次數」一律會計算總載入頻率。
開發人員和分析師的最佳做法
- 範圍保持一致:如果目標是瞭解工作階段效能,請勿混用以使用者為範圍的流量維度 (例如「最初招攬到使用者預設管道群組」) 和以工作階段為範圍的指標 (例如「平均工作階段持續時間」)。
- 在 DebugView 中驗證
session_start:在品質保證和驗證階段,使用 Google Analytics DebugView 等標準偵錯工具,確認session_start在工作階段啟動時正確觸發。
管理工作階段逾時的最佳做法
Google Analytics 工作階段的預設時間長度為 30 分鐘。
我們不建議導入自訂程式碼,定期「ping」Google Analytics,以免發生閒置逾時。如果人為灌水工作階段指標,就會扭曲使用者行為資料。請改用 Google Analytics 內建功能,或以有意義的參與事件為目標,提供更簡潔的解決方案。
為什麼一般「keep-alive」連線偵測 (ping) 是不良做法
- 核心指標失真:如果使用者離開分頁,他們確實處於閒置狀態。如果強制工作階段保持開啟,就會建立「殭屍工作階段」,並錯誤地提高平均工作階段時間。這會掩蓋使用者失去興趣或離開網站的真正時間點。
- 對互動工作階段的影響:Google Analytics 將持續超過 10 秒、包含至少 2 次網頁瀏覽或觸發重要事件 (舊稱「轉換事件」) 的工作階段定義為互動工作階段。如果人為保持工作階段開啟,工作階段就會顯示為互動狀態,進而提高參與度。
- 資料膨脹和成本:如果持續觸發空白背景 Ping 事件,事件計數雜訊就會增加,且如果您將 Google Analytics 資料匯出至 BigQuery,資料倉儲成本也會提高。
何時追蹤被動參與度 (以及如何追蹤)
在某些情況下,使用者會積極與內容互動,但不會觸發標準的 Google Analytics 互動事件 (例如點擊或網頁變更)。在這些情況下,請擷取有意義的使用者啟動進度事件,而非一般的 keep-alive ping:
- 長篇影片內容:如果使用者觀看內嵌的 45 分鐘影片,將會處於閒置狀態超過 30 分鐘,工作階段可能會過期。
- 深入探討文章:使用者可能花費 40 分鐘閱讀技術指南,並緩慢捲動,但不會觸發任何瀏覽動作。
- 互動式網路應用程式:監控即時動態消息、股票行情或資料資訊主頁的使用者,不必點選即可被動接收資訊。
如果使用者縮小瀏覽器視窗或切換分頁,背景 Ping 必須停止。
程式碼範例:可感知顯示狀態的事件連線偵測 (ping)
下列 JavaScript 模式示範如何追蹤被動參與度,並尊重分頁的可見度。根據特定用途調整追蹤間隔和參數值 (例如 5 分鐘或 300,000 毫秒),例如影片或長篇內容的典型長度:
const TRACKING_INTERVAL_MILLIS = 5 * 60 * 1000;
let engagementInterval;
function startEngagementTracking() {
// Prevent duplicate intervals if tab becomes visible
if (engagementInterval) return;
engagementInterval = setInterval(() => {
gtag('event', 'passive_engagement', {
'engagement_time_msec': TRACKING_INTERVAL_MILLIS
});
}, TRACKING_INTERVAL_MILLIS);
}
function stopEngagementTracking() {
if (engagementInterval) {
clearInterval(engagementInterval);
engagementInterval = null;
}
}
// Start tracking initially if the page is visible
if (!document.hidden) {
startEngagementTracking();
}
// Stop tracking when tab is hidden, resume when visible
document.addEventListener('visibilitychange', () => {
if (document.hidden) {
stopEngagementTracking();
} else {
startEngagementTracking();
}
});
Google Analytics 加強型評估與自訂追蹤
Google Analytics 具有加強型評估功能,可自動處理某些被動追蹤情境,但有特定限制。
| 互動類型 | 加強型評估功能是否會處理? | 需求 / 待辦事項 |
|---|---|---|
| YouTube 影片嵌入 | 是 | 系統會在影片播放進度達到 10%、25%、50% 和 75% 時,自動觸發 video_start、video_complete 和 video_progress 里程碑 (必須啟用 JS API 支援)。 |
| 非 YouTube 影片 (HTML5、Vimeo) | 否 | 需要自訂導入。使用 gtag.js 以程式輔助方式觸發事件,或使用 Google 代碼管理工具 (GTM) 管理觸發條件。 |
| 標準網頁捲動 | 部分 | scroll 事件只會在使用者瀏覽到網頁的 90% 處時觸發。 |
| 朗讀進度增量 | 否 | 停用預設的 Google Analytics 捲動追蹤功能,並以程式輔助或在 Google 代碼管理工具中導入自訂捲動門檻 (例如 25%、50%、75%)。 |
最乾淨的替代方案:調整 Google Analytics 工作階段逾時限制
如果網站自然而然會提供長篇內容、影片課程或持續使用應用程式,就不必注入自訂指令碼。您可以在 Google Analytics 介面中調整預設的 30 分鐘門檻,最長可設為 7 小時 55 分鐘。如需操作說明,請參閱「調整工作階段逾時」。