QA@IT

Google Analyticsで、新規訪問の日を記録するには?

2789 PV

Google Analyticsで、ユーザーごとにその新規訪問の日を記録して、その期間によってユーザーをグルーピングして数値などを見たいです(いわゆるコホート分析)。
Google Analyticsには最初から「新規とリピーター」という項目は用意されているのですが、これは新規の訪問について、滞在時間や直帰率などのふるまいを見るためのもので、ユーザーに紐づけた分類には使えないようです。

なので、 How to do Cohort Analysis in Google Analytics | Jonathon Balogh を参考にして、カスタム変数に新規訪問の日を記録しようと思いました。
しかし、いつが新規訪問なのかというのがよくわかりません。Analytics側ではデータに出ているのだから判別できているはずなのに。

苦し紛れに、Analyticsのcookieがなければ新規訪問なのだという仮定で、このようなコードを書いてみました。

var utma = document.cookie.split(';').filter(function (s) {
  return s.trim().indexOf('__utma=') == 0;
});
if (utma.length == 0) {
  // First Visit Cohort
  var date = new Date();
  date = new Date(date.getTime() + (date.getTimezoneOffset() + 540) * 60000);
  var y = String(date.getFullYear());
  var m = String(date.getMonth()+1); m = (m.length == 1 ? '0'+m : m);
  var d = String(date.getDate()); d = (d.length == 1 ? '0'+d : d);
  _gaq.push(['_setCustomVar', 3, 'First Visit', y+m+d, 1]);
}

この仮定は合っているのでしょうか?それとも、もっといい方法があるでしょうか。

回答

_getVisitorCustomVar()
というGAのJavaScript用APIがあります。
これを使って値がセットされているかどうか調べ、セットされていないときだけ
新たにその日の日付を使ってカスタム変数に値をセットするのが簡単だと思います。

編集 履歴 (0)
  • ありがとうございます!
    うまくいきそうなのでその方法でやってみます。
    -
  • うまくいきそうだと思ったのですが、やっぱりその方法ではまずそうです。
    というのは、リピーター(新規訪問ではない)で、日付がセットされていないユーザーには、新たに日付をセットしてはいけないからです。
    そのユーザーは、「日付なし」ということで、「データを取り始めるより過去に新規訪問したグループ(コホート)」として扱わなければなりません。
    -
  • なるほど、それをちゃんと分けるのですね。

    では、もっと真面目に解決するとすると
    __utma クッキーをピリオドで分解して、3つ目がFirst Visitの日付なので、それをTimestampとすればいいかと思います。
    -
  • 例えば__utmaの値が
    81042955.1806959453.1311638935.1342775221.1343382570.104
    だったら
    1311638935
    がfirst visitで2011/07/26 09:08:55になります。
    -
  • これはすごい!これで2年までなら今までデータとってないユーザーの新規訪問も完璧にわかりますね。
    そこまでAnalyticsの内部仕様に依存していいのかという気もしますが、これでやってみます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。