直帰したセッションでもセッション時間が計測されるケース、ランディングページが(not set)で平均セッション時間が計測されるケースと計測されないケースを例に、Googleアナリティクスの「直帰」「セッション時間」の仕様について解説します。
多くの方が「直帰セッションの滞在時間は0秒である」と捉えているのではないでしょうか。
非インタラクションヒットの仕様と共に、それぞれの仕様の理解を深めて貰えれば幸いです。
※本稿でご紹介している内容を参考にご自身の環境に変更を加える際は自己責任でお願い致します。
記事の内容は2020年6月時点で確認している最新の情報をまとめておりますが、万が一記述内容に齟齬がある場合はTwitterのDMなどでご連絡頂ければ幸いです。何卒よろしくお願い致します。
- 公式ヘルプページの定義を確認
- 直帰セッションでもセッション時間が計測される
- 検証
- 1:ページを閲覧して離脱したセッション
- 2:ページ閲覧後、非インタラクションヒット「偽」のイベントを発生したセッション
- 3:ページ閲覧後、非インタラクションヒット「真」のイベントを発生したセッション
- 補足:ユーザーエクスプローラーで表示されるセッション時間の見方
- 4:非インタラクションヒット「偽」だけ発生したセッション
- 5:非インタラクションヒット「偽」を2回だけ発生したセッション
- 6:非インタラクションヒット「偽」の後にページを閲覧したセッション
- 7:非インタラクションヒット「偽」の後に、非インタラクションヒット「真」が発生したセッション
- 8:非インタラクションヒット「真」だけ発生したセッション
- 9:非インタラクションヒット「真」の後に、非インタラクションヒット「偽」が発生したセッション
- 10:非インタラクションヒット「真」の後にページを閲覧したセッション
- 11:非インタラクションヒット「真」を2回だけ発生したセッション
- 12:非インタラクションヒット「真」→非インタラクションヒット「偽」→ページ閲覧をしたセッション
- まとめ
公式ヘルプページの定義を確認
セッション
出典:アナリティクスでのウェブ セッションの算出方法 - アナリティクス ヘルプ
セッションとは、特定の期間にウェブサイトで発生した一連の操作のことです。たとえば、1 回のセッションには、複数のページビュー、イベント、ソーシャル インタラクション、e コマース トランザクションなどが含まれます。詳しくはアナリティクスのさまざまなリクエスト タイプをご覧ください。
セッションは、ユーザーがサイト上で行った操作内容を格納するコンテナ(容器)ととらえることができます。
まずは基本である「セッション」について確認すると、ユーザーがサイト内で行動した様々な操作を記録したコンテナ(容器)であると書かれています。
ページを閲覧する行動だけを記録するのではなく、イベントやトランザクションなど様々な行動をウェブサイトに実装されたトラッキングコード(タグ)によって記録するわけですね。それらはリクエストタイプという種類で分類されています。
リクエストタイプ
トラッキングコードの仕組み
出典:トラッキング コードの概要 | Google アナリティクス | Google Developers
リクエストタイプという種類でユーザーの行動を記録するプロセスをざっくりまとめると
①ユーザーがトラッキングコードが実装されたウェブサイトを訪問し、ブラウザがリクエスト
②~⑤トラッキングコードの実装内容に応じて、ページで発生したユーザーの行動をデータ収集
⑥トラッキング コードによるデータ収集が終わると、ログ作成と後処理のため GIF リクエストがアナリティクス データベースに送信される
このような流れでGA管理画面の各レポートで確認できる情報として蓄積されていきます。
リクエストタイプ
アナリティクスサーバーに送信されたユーザーの行動記録はGIFリクエストと呼ばれ、下記のリクエストタイプに分類されています。
リクエスト タイプ | 説明 | クラス |
---|---|---|
ページ | サーバー上のウェブページがリクエストされた場合。 | 操作 |
イベント | サイトに設定したイベント トラッキングによりイベントが発生した場合。 | 操作 |
トランザクション | サイトで購入トランザクションが発生した場合。 | 操作 |
アイテム | トランザクション内の各アイテムが GIF リクエストで記録された場合。 | 操作 |
変数 | ユーザーがカスタム ユーザー セグメントを設定して有効にした場合。 | 非操作 |
5種類のリクエストタイプがあり、クラスが「操作」と定義されているものは【インタラクション】なヒット(記録)と分類されます。
ここで注目したいのが、この公式ヘルプページに記載されている注釈です。
注:
インタラクションとして分類されたリクエストは、そのページ またはサイトの直帰率の計算に影響します。
直帰率は、サイトで 1 ページしか閲覧されなかったセッションを示していますが、 厳密にはユーザー セッション内で発生した単一の操作リクエストと定義され ます。そのため、ページの直帰率は e コマースのトランザクションと イベント トラッキング リクエストの影響も受けます。これらの機能が ページ トラッキングと共存し、発生時に追加の操作リクエストが アナリティクス サーバーに送られるためです。
Googleアナリティクスを利用する方なら馴染み深い「直帰」の判定にはユーザーがサイト内で行動を起こしたとみなすインタラクションのリクエストの発生有無、数が深く関わってきます。
直帰
直帰とは、サイト内の 1 ページしか閲覧されなかったセッションのことです。Google アナリティクスの場合、Google アナリティクス サーバーに対するリクエストを 1 回だけ発生させたセッションを特に区別して直帰として扱います。たとえば、ユーザーがサイト内のページを開いた後で、そのセッション中に Google アナリティクス サーバーに対する他のリクエストを発生させずに離脱した場合、このセッションは直帰のセッションになります。
「直帰率」の公式ヘルプページにもこのように記載されており、「インタラクション」のリクエストが1回だけ記録されたセッション(容器)を直帰だと定義するとしています。
非インタラクションヒット
「直帰」は、インタラクション ヒットが 1 つしか含まれないセッションとして定義されます。イベントヒットは既定ではインタラクション ヒットと見なされ、直帰率の計算に含められます。しかし、ここでパラメータの値を true に設定すると、このようなイベントヒットがインタラクション ヒットとは見なされなくなります。この法則を利用することで、イベントを含むページの直帰率の計算を調整できます。
値を true に設定した場合は、非インタラクションのイベントがタグ設定された 1 ページのセッションは、ユーザーがセッション中に当該イベントをトリガーした場合でも、直帰にカウントされます。逆に、このオプションを省略すると、イベント測定が設定された 1 ページのセッションは、同じセッション中にユーザーがイベントをトリガーした場合は直帰にカウントされなくなります。
イベントを計測する場合「非インタラクションヒット」という設定をすることが可能です。
この設定をtrue (GTMでは「真」と表記されている)にすると、イベントの計測をする際のリクエストがインタラクティブではない状態で記録されます。つまり、ユーザーがサイト内で何かしらの操作をしたとはみなされなくなります。
直帰はインタラクティブなリクエストをベースに判定する為、ページのスクロール率のイベントを実装する際、直帰率に影響を及ぼさないイベントとして実装したい場合にこの設定をするケースなどでよく知られていますね。
セッションの持続時間
出典:アナリティクスでのウェブ セッションの算出方法 - アナリティクス ヘルプ
デフォルトでは、セッションはユーザーが何も操作を行わないまま 30 分が経過するまで持続しますが、この有効期限は数秒~数時間に変更することもできます。詳しくはセッションの設定の変更方法をご覧ください。
ユーザー A がサイトにアクセスすると、アナリティクスでは、その時点から時間の計測が開始されます。ユーザー A によるなんらかの操作がないまま 30 分が経過すると、セッションは終了します。ただし、ユーザー A がサイトの要素を操作(イベント、ソーシャル インタラクション、ページビューなどが発生)するたびに、有効期限はその操作が行われた時点から 30 分後にリセットされます。
セッションはインタラクションのリクエストが発生して30分経過すると「離脱した」とみなされ終了します。1回のセッションや各ページの滞在時間は、記録されたリクエストをヒットという単位(スコープ)で捉えて、その発生した間隔で計算されます。
セッション時間
平均セッション継続時間は、すべてのセッションの継続時間(秒単位)の合計をセッション数で割った値となります。個々のセッションの継続時間は、セッション最後のページでのエンゲージメント ヒットの有無によって算出方法が異なります。
エンゲージメント ヒットとは、opt_noninteraction パラメータが適用されていないイベントに起因するヒットのことを指します。たとえばイベント トラッキングを設定して動画の再生などのイベントをトラッキングしている場合は、それぞれの動画再生がエンゲージメント ヒットとなります。opt_noninteraction パラメータを適用しているイベントは、エンゲージメント ヒットにはなりません。
出典:平均セッション継続時間 - アナリティクス ヘルプ
参考:Tracking Code: Event Tracking | Analytics for Web (ga.js)
ユーザーが計測期間内に複数のセッションを発生している場合、「平均セッション時間」という指標で評価することができます。
また、ユーザー > 行動 > エンゲージメント レポートでは「セッション時間」指標を利用したレポートを見ることができます。
引用した公式ヘルプは記載内容が少し古いので補足すると、個々のセッションの「セッション時間」の判定は、最後に記録したヒットがインタラクティブかそうでないかによって計算方法が異なります。
最後のページにインタラクションヒットが無い場合
最後のページにインタラクションヒット(エンゲージメント ヒット)がない場合、セッション継続時間は以下のように算出されます。
最後のページでの最初のヒットの時間 ー 最初のページでの最初のヒットの時間
例
ページ 1: 最初のヒットが午前 10 時
ページ 2: 最初のヒットが午前 10 時 5 分
ページ 3: 最初のヒットが午前 10 時 10 分
午前 10 時 10 分 - 午前 10 時 = セッションの継続時間 10 分(600 秒)
最後のページを閲覧した後、イベントなど発生させずにそのまま離脱したセッションというわけですね。
最後のページにインタラクションヒットがある場合
最後のページにインタラクションヒット(エンゲージメント ヒット)がある場合、セッション継続時間は以下のように算出されます。
最後のページでの最後のヒットの時間 ー 最初のページでの最初のヒットの時間
例:
ページ 1: 最初のヒットが午前 10 時
ページ 2: 最初のヒットが午前 10 時 5 分
ページ 3: 最初のヒットが午前 10 時 10 分
最後のエンゲージメント ヒットが午前 10 時 15 分
午前 10 時 15 分 - 午前 10 時 = セッションの継続時間 15 分(900 秒)
最後のページを閲覧した後、動画の再生イベントなど何かしらの行動が、非インタラクションヒットの設定が適用されていないイベントなどで計測されていた場合はこのような計測が行われます。
これらのページから理解しておくべきポイント
- 「直帰」はインタラクションヒットが1度だけ記録されたセッションを指す
- 「非インタラクションヒット」の設定を有効にしたヒットは、インタラクションヒットとみなされない
- 「セッション時間」はユーザーが訪問した最初のページで発生した【最初のヒット】と、セッション内で発生した【最後のインタラクションヒット】の時間の間隔で計算される
上記を覚えて、いよいよ本題に入ります。
直帰セッションでもセッション時間が計測される
ユーザー > 概要レポートで、Googleアナリティクスのシステムセグメント「直帰セッション」を適用し、期間内の「直帰したセッションのみ」に絞り込んで計測してみます。
公式ヘルプページの解説どおりであるなら、直帰したセッションはインタラクションヒットが1度だけ発生したセッションなので、複数発生したヒットの間隔を計測する「セッション時間」が計測されることはなく0秒になるはずです。
しかし、このレポートではセッション時間が計測された直帰セッションが発生している為、期間内の「平均セッション時間」は0秒にはなりませんでした。
検証
カスタムセグメントを12パターン作成し、「ユーザー > ユーザーエクスプローラー」と「行動 > サイトコンテンツ > すべてのページ」と「行動 > サイトコンテンツ > ランディングページ」の3種のレポートを利用して検証した結果、公式ヘルプページの解説には記載のない仕様が確認できました。それぞれ見ていきましょう。
1:ページを閲覧して離脱したセッション
直帰の定義を説明する際に「最初に表示した1ページを閲覧した以外には何もせず離脱したセッションを指す」とお話することが多いのではないでしょうか。
確かに、この行動は公式ヘルプページの解説とも合致します。
- 最初のヒット:ページを閲覧した際のインタラクションヒット
- 2つ目のヒット:なし
このようなセッションは直帰とみなされ、セッション時間は0秒でした。
2:ページ閲覧後、非インタラクションヒット「偽」のイベントを発生したセッション
各検証結果の説明をわかりやすくする為、ここからは非インタラクションヒットの設定がされていないイベントを非インタラクションヒット「偽」と呼称します。設定が有効である場合は非インタラクションヒット「真」と呼称します。
- 最初のヒット:ページを閲覧した際のインタラクションヒット
- 2つ目のヒット:同ページ内で発生した非インタラクションヒット「偽」
流入したページで動画の再生などのイベントヒットを計測された場合、直帰とはみなされません。インタラクションのリクエストが複数回ある為です。また、ページビューヒットと非インタラクションヒット「偽」の発生間隔がセッション時間としてカウントされます。
3:ページ閲覧後、非インタラクションヒット「真」のイベントを発生したセッション
「スクロール率」や「指定要素の表示トリガーで判定する読了率」などのイベントは、直帰率に影響を及ぼさないようには非インタラクションヒット「真」で実装されるのがベターです。
ランディングページで非インタラクションヒット「真」を発生して離脱したセッションの検証結果は下記のようになりました。
- 最初のヒット:ページを閲覧した際のインタラクションヒット
- 2つ目のヒット:同ページ内で発生した非インタラクションヒット「真」を発生して離脱
補足:ユーザーエクスプローラーで表示されるセッション時間の見方
上述のパターン3をカスタムレポートで確認すると下記のような結果になります。
非インタラクションヒット「真」であれば、直帰の判定には影響がなく平均セッション時間もカウントされていないことが確認できます。
一方、このセッションをユーザーエクスプローラーで確認すると下記のような結果になります。
セッション時間は0秒と表示されていますが、ストップウォッチのアイコンの横に表示されている秒数は16秒です。
ストップウォッチの欄に表示されているのは、セッションの最初と最後のヒットの間隔の秒数を表している為、非インタラクションヒットの設定に関係なくカウントされています。
個々の「セッション時間」の評価をする場合は、セッションIDや日付など適切なディメンション(切り口)で「平均セッション時間」指標や「セッション時間」指標を採用したレポートで1セッションごとに確認するように注意しましょう。
4:非インタラクションヒット「偽」だけ発生したセッション
- 閲覧したページのタブを開いたまま、ブラウザを放置
- セッションが切れてからブラウザを立ち上げ、開きっぱなしのタブから閲覧を再開
このようなユーザー行動はスマートフォン端末が普及するにつれて増加していると思いますが、これが厄介です。では、セッションが切れてからブラウザを立ち上げて、開きっぱなしのタブ=ページからサイト内での行動を再開するとどうなるでしょうか。
その場合、閲覧ページの読み込みが発生しない為、「ページ」のリクエストタイプではなく、「イベント」など別のリクエストタイプが最初のヒットとして記録されます。
この最初のヒットが非インタラクションヒット「偽」であり、1ヒットだけ記録して離脱するとどうなるでしょうか。
- 最初のヒット:非インタラクションヒット「偽」
- 2つ目のヒット:なし
セッション内でページの閲覧が記録されない為、このセッションのランディングページは (not set) になります。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
(not set) | 0% | 0秒 | 1 | 0 |
非インタラクションヒット「偽」が1つだけ計測されたセッションは直帰とはみなされませんした。
一番最初に提示した公式ヘルプをもう一度見てみると
直帰とは、サイト内の 1 ページしか閲覧されなかったセッションのことです。Google アナリティクスの場合、Google アナリティクス サーバーに対するリクエストを 1 回だけ発生させたセッションを特に区別して直帰として扱います。
インタラクションとして分類されたリクエストは、そのページ またはサイトの直帰率の計算に影響します。
直帰率は、サイトで 1 ページしか閲覧されなかったセッションを示していますが、 厳密にはユーザー セッション内で発生した単一の操作リクエストと定義され ます。
このように記載されていましたね。
今回の検証パターン4はインタラクションのリクエスト1回だけですが、直帰とはみなされていない為ややこしいなと感じました。
つまり、ページ閲覧が無いがユーザーがサイト内で何かしらのアクションをした1セッション(容器)は記録されます。非インタラクションヒット「偽」以外のヒットが無いため、間隔をカウントする「セッション時間」は0秒となります。
5:非インタラクションヒット「偽」を2回だけ発生したセッション
パターン4と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「偽」を発生
- 同じページでもう一度非インタラクションヒット「偽」を発生して離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
(not set) | 0% | 計測される | 1 | 0 |
非インタラクションヒット「偽」が2あるので、各ヒットの間隔をカウントして「セッション時間」が計測されたセッションになります。
6:非インタラクションヒット「偽」の後にページを閲覧したセッション
パターン5と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「偽」を発生
- 別ページへ遷移してから離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
②の閲覧ページ | 0% | 計測される | 1 | 1 |
別ページへ遷移したヒットがあるので、タブから復帰して最初に計測したページビューのヒットが発生したページがランディングページになります。
最初のヒットが非インタラクションヒット「偽」のイベントであっても、セッション時間は計測されます。
7:非インタラクションヒット「偽」の後に、非インタラクションヒット「真」が発生したセッション
パターン6と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「偽」を発生
- 同じページで非インタラクションヒット「真」を発生
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
(not set) | 0% | 0秒 | 1 | 0 |
非インタラクションヒット「真」のイベントは「ユーザーがサイト内で何かしらの行動を起こしたとみなさない」ように設定されています。
そのため、最初のインタラクションヒットと最後のインタラクションヒットの間隔でカウントする「セッション時間」は0秒と記録されます。
8:非インタラクションヒット「真」だけ発生したセッション
パターン7と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「真」を1度だけ発生させて離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
(not set) | 0% | 0秒 | 0 | 0 |
非インタラクションヒット「真」のイベントは「ユーザーがサイト内で何かしらの行動を起こしたとみなさない」ように設定されているので、セッションが直帰かそうでないかの判定に影響を及ぼしません。
つまり、非インタラクションヒット「真」のイベントしか発生させないセッションではランディングページ(not set)がセッション0と記録されます。
新規ユーザーは1とカウントされ、合計イベント数も1とカウントされますがセッションは0となっていることがわかりました。
9:非インタラクションヒット「真」の後に、非インタラクションヒット「偽」が発生したセッション
パターン8と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「真」を発生
- 同じページで非インタラクションヒット「偽」を発生して離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
(not set) | 0% | 計測される | 1 | 0 |
非インタラクションヒット「真」のイベントが最初のヒットとして記録された後、非インタラクションヒット「偽」のイベントが発生した場合、各ヒットの間隔でセッション時間が計測されているケースを確認できました。
ただし、同様のパターンのセッションでセッション時間0秒だったケースも確認できました。この事象に関しては、①②のヒットが同時に発火する等が要因として考えられますが、詳細は掴めませんでした。
10:非インタラクションヒット「真」の後にページを閲覧したセッション
パターン9と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「真」を発生
- 別ページへ遷移してから離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
②の閲覧ページ | 100% | 計測される | 1 | 1 |
非インタラクションヒット「真」のイベントが最初のヒットとして記録された後、ページビューヒットが発生した場合、セッション時間が計測される直帰セッションとして記録されます。
例:①→②の間隔が27分以上あった直帰のセッション
11:非インタラクションヒット「真」を2回だけ発生したセッション
パターン10と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「真」を発生
- 同じページで非インタラクションヒット「真」をもう一度発生して離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
(not set) | 0% | 0秒 | 0 | 0 |
非インタラクションヒット「真」のイベントだけが複数発生したセッションでは、ランディングページが(not set)で、ユーザーがイベントを発生させたと判定されました。パターン8と同じ結果ですね。
12:非インタラクションヒット「真」→非インタラクションヒット「偽」→ページ閲覧をしたセッション
パターン11と同様に、開きっぱなしのタブから復帰したセッションで別のアクションを検証してみましょう。
- セッションが切れてから開きっぱなしのタブで非インタラクションヒット「真」を発生
- 同じページで非インタラクションヒット「偽」を発生
- 別ページへ遷移して離脱
このようなセッションは下記のように記録されます。
ランディングページ | 直帰率 | セッション時間 | セッション | ページビュー数 |
③の閲覧ページ | 0% | 計測される | 1 | 1 |
非インタラクションヒットの設定に関わらず、最初のヒットがイベントで次にページビューヒットが発生した場合はランディングページが(not set)にならず、ページビューヒットが発生したページで計測されることが確認できました。
まとめ
ユーザーがサイトを訪問して、ページを閲覧したヒットから始まるセッションは非常にわかりやすい結果でした。
一方で、イベントヒットから始まる計測は非常に複雑な仕様で各指標が記録されていることが伺い知れました。
今回の検証結果から言えることは色々ありますが、「GAの直帰とセッション時間の正しい捉え方」という記事のまとめとしては
直帰とは、ユーザーのサイト内の行動を、非インタラクションヒットが「真」ではないヒットで1つだけ記録したセッションのことを指す。ただし、「ページ」リクエストではないインタラクションヒットだけで記録されたセッションの場合は直帰とは判定しない。
セッション時間とは、1セッションで複数ヒットが計測された場合に最初と最後のヒットの発生間隔をカウントするものである。非インタラクションヒットが「真」であるイベントヒットを含むセッションの場合、発生順序や非インタラクションヒットが「真」ではないイベントヒットを含んでいるかなど複雑な条件で「セッション時間」を計測するかしないか決定されている。
といったところでしょうか。
これらの仕様は非常に厄介なので、もし本稿の解説に不備があればご指摘頂ければ幸いです。そして、多くの場合はここまで踏み込んだ仕様理解を前提にKPIの設計や評価をしなくて良いと思います。
細かすぎる仕様の定義をチームや組織、ステークホルダーに浸透させて共通の見解を持って事業貢献の為にアクションするというのはハードルが高すぎますし、あまり意味がないと考えているためです。
本稿でご紹介したような仕様は、分析を担当する方が目的や仮説を持って検証する場面でのみ、理解が必要なのではないかと思います。
事業成果を出す為にGAと向き合うことが必要な方にとって、お役に立てれば嬉しいです。
また、今回触れていないパターンももちろんあります。例えば直帰率が100%を超えるセッションが存在するとは知っているのですが、残念ながら僕が普段利用している幾つかのビューでは見つからず検証ができませんでした。
権限のあるビューすべてを対象に、検索をする機能がGAにあれば探し回るのですが…。
ここまで執筆した時点で体力と気力と自由時間を使い果たしてしまいましたw
もしアドバイスやデータ提供にご協力頂ける方がいらっしゃいましたら、TwitterのDMなどでご連絡頂ければとても嬉しいです。
長文乱文をここまで読んでくださりありがとうございました。
少しでもお役に立てれば幸いです。