GA4 の engagement_time_msec とは?という疑問に対しては、
公式ドキュメントの
https://support.google.com/analytics/answer/11109416?hl=ja
に解説があるのですが、上記の説明を読んで、分かりにくいと感じる方も多いのではないでしょうか。
そこで今回は、この公式ドキュメントを補う意味で、engagement_time_msec について解説させていただきます。
「アクティブ ユーザー」=指定した期間にサイトまたはアプリを利用したユニーク ユーザーの数。
エンゲージメント セッション(注1)が発生するか、アナリティクスで以下の情報が収集されると、アクティブ ユーザーとして認識されます。この定義で、engagement_time_msecの理解は欠かせません。
ウェブサイトの first_visit イベントまたは engagement_time_msec パラメータ
Android アプリの first_open イベントまたは engagement_time_msec パラメータ
iOS アプリの first_open イベントまたは user_engagement イベント
1 秒以内に user_engagement イベント(注2)が検出されると、そのユーザーはアクティブ ユーザーと見なされます。
(注1)エンゲージメント セッション:10 秒以上継続するか、コンバージョン イベントが発生するか、ページビューまたはスクリーン ビューが 2 件以上発生したセッション
(注2)user_engagement イベント:アプリがフォアグラウンド表示されている状態、またはウェブページにフォーカスがある状態が 1 秒以上続いたとき。
engagement_time_msec(エンゲージメント・タイム・ミリセック)は、前イベントから次イベントまでのアクティブ時間をミリ秒単位で示す。「msec(ミリ秒)」 = 1秒を1000で割った単位。
最初のイベントや、アクティブ時間が“0秒”とみなされたイベントでは engagement_time_msec は付かない。
ページ遷移や離脱のときに送信される user_engagement イベントが「アクティブ時間の締め処理」を担っており、次の page_view に値が付かない理由になる。
「なんで数値が付いたり付かなかったりするの?」と疑問を持ちやすい指標だが、仕組みを理解するとアクティブ時間の分析に非常に有効。
読み方(発音):
「エンゲージメント・タイム・ミリセック」
(あるいは「エンゲージメント・タイム・ミリセカンド」でもOKです)
「msec」とは何?:
ミリセカンド(milliseconds)の略称で、
1ミリ秒 = 1,000分の1秒
という意味です。
GA4 が記録する engagement_time_msec とは
「前回のイベント発生から今回のイベントが起きるまでの、ユーザーがアクティブだった時間(ミリ秒)」
を指しています。
イベント A が 10:00:00 に発生
次のイベント B が 10:00:05(5 秒後)に発生
イベント B には engagement_time_msec = 約 5000(5 秒 = 5,000ミリ秒) が付く
このように、「前のイベント発生 → 今回のイベント発生」 の間で、ユーザーがページを見たり操作したりしていた時間がミリ秒単位で加算される仕組みです。
「engagement_time_msec がない(= パラメータごと省略される)」のは、「前回のイベントからユーザーのエンゲージメント(アクティブ時間)をまったく計測できない」と判断された場合 です。代表例を2つ挙げます。
たとえば、first_visit, session_start, そして最初の page_view が発生したとき。
「直前のイベントがない」ので、エンゲージメント時間が計測できません。
「ユーザーがアクティブだった時間がほぼ0秒」とみなされるケース。
GA4 で「空白の滞在時間」がないと判断されると、engagement_time_msec が付与されないことがあります。
例えば、ユーザーがすぐに別のボタンをクリックしたり、画面内要素を連続で操作したりしたケースを想定。
直前の scroll イベントから 0.1 秒(100ミリ秒)ほどしか経っていないため、実質「ほぼ間髪入れずに起きた」 とみなされます。
GA4 に送信されるイベント: click(または別のカスタムイベント)
このとき、GA4 が「アクティブなエンゲージメント時間がほぼない」と判断 するため、→ engagement_time_msec パラメータは付かない(= 省略される)。
サイトの「ホームページ」にアクセス
first_visit / session_start / page_view が発生
まだ直前のイベントが存在しない ため、ここでは engagement_time_msec はなし。
8秒後 にスクロール
スクロールイベント(scroll)が発生
直前のイベント(page_view)から 約9秒 → engagement_time_msec = 8,781 ミリ秒
さらに11秒後 に 2 ページ目へ移動
次のページに遷移するタイミングで user_engagement イベントが自動送信
ここでは、scroll イベントから 約12秒 → engagement_time_msec = 11,856 ミリ秒
2ページ目の page_view が発生
直前(user_engagement)ですでに時間を送信しているので、2ページ目の page_view には engagement_time_msec は付かない 場合が多い。
6秒後 にスクロール
2ページ目上で scroll イベント
直前の page_view から 約6秒 → engagement_time_msec = 6,677 ミリ秒
7秒後 にサイト離脱
画面を閉じる・タブを離れる等のタイミングで user_engagement イベント
直前のスクロールから 約8秒 → engagement_time_msec = 7,711 ミリ秒
自動送信されるイベント
ユーザーが ページ遷移 する、または ページを離脱 するなど、
ユーザーがアクティブ状態を終えるタイミングで自動的に発生します。
最後のエンゲージメント時間を記録
「直前のイベント以降にユーザーがどれくらいアクティブだったのか」
これをページ離脱などのタイミングでまとめて送信してくれます。
レポート画面で見えないことがある
user_engagement はキーイベントとしてサポートされていないため、[管理]> [データの表示] > [イベント] に表示されないことがあります。(出所:https://support.google.com/analytics/answer/11109416?hl=ja)
「msec」 = ミリ秒
1 秒 = 1000 ミリ秒
8 秒なら 8,000 ミリ秒となる。
最初のイベントに engagement_time_msec が付かない理由
前のイベントが存在せず、計測できないため。
ページ移動前後で数値がつかない場合があるのは、user_engagement イベントが区切っているから
ページが切り替わるタイミングで時間を送信してしまうため、次の page_view には engagement_time_msec が付かない。
「ユーザーがどのくらいサイト上でアクティブだったか」を把握する重要な指標
例えば、スクロールイベントやリンククリックイベントの前後で engagement_time_msec を分析すると、ユーザーがコンテンツを読むのに何秒費やしているか把握しやすい。
放置時間やバックグラウンドは除外される傾向
GA4 は、タブが非アクティブになったりブラウザが閉じられたりすると、その時点で計測をストップする。
より「実際にページを見ていた時間」に近い数字が得られやすいです。
最後まで読んでいただき、ありがとうございました。
GA4の活用方法についてのご相談は、こちらまでお願いいたします。
https://and-aaa.com/contact