滞在時間0のアクセスの本当のところが知りたい

このブログのように 1話完結でほとんどのトラフィックが検索エンジン経由というサイトは直帰が多いので、Google Analytics で見たとき滞在時間が0のアクセスばかりとなってしまいます。 この0は本当は0じゃない、と思いつつも、「じゃあ、本当のところはどれだけ記事が読まれているの?」というのは気になるところです。 というわけで、直帰の場合もページが開かれている時間が記録されるよう工夫してみました。 具体的には window.onbeforeunload を利用して、ページが閉じられるときに仮想ページにアクセスがあったものとして記録し、滞在時間を計測するのです。 この辺の記事を参考にしました。

以下手順です。

2つめのプロパティを準備する

この方法では仮想ページにアクセスがあったものとして計測するので、実際よりもページビュー数が多くなってしまいます。 そこで通常の計測も引き続き行うこととし、通常のものとは別に新たなプロパティ (トラッキング ID) を作成します。 以前のバージョンの Analytics では「ドメイン」と言っていたように思いますが、最近は「プロパティ」という用語が使用されていますね。 Analytics は「アカウント」-「プロパティ」-「プロファイル」という階層構造になっています。 プロファイルはいわゆるビューなので、複数の計測方法を使い分けるにはプロパティレベルで分けなければなりません。

トラッキングコードの変更

通常のトラッキングコードは、

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script');
    ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') 
      + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s);
  })();

となっていると思いますが、これを以下のように変更します。

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-1']);
  _gaq.push(['_trackPageview']);
  
  _gaq.push(['pageTrackerTime._setAccount', 'UA-1234567-2']);
  _gaq.push(['pageTrackerTime._trackPageview']);
  
  (function() {
    var ga = document.createElement('script');
    ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') 
      + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s);
  })();
  
  window.onbeforeunload = capturePageExit;
  function capturePageExit()
  {
    _gaq.push(['pageTrackerTime._trackPageview', '/page-exit?page=' 
      + document.location.pathname + document.location.search]);
  }

これで通常の計測方法に加えて、ページを閉じた際に仮想ページにアクセスしたものとして集計されたデータが収集されいます。

実際に計測してみて

自分の管理するブログでの例ですが、同じ期間で通常の計測では平均 2分弱の滞在時間だったものが、仮想ページアクセスを使った集計 (‘/page-exit*’ は除外) では 11分超の平均滞在時間が計測されました。 本当に記事を読まれているかはわからないので、この 11分超というのもあくまで目安でしかないのですが、思ったよりは読まれているのだと安心しました。

あくまで目安でしかないのですが、滞在時間が0なのが気になって仕方のない人はは試してみてもよいと思います。 ただ、ずっとやる必要はなくて、1カ月程度計測すれば十分でしょう。