Google Analyticsのカスタム変数でABテストしてみる

UIの変更なんかをする時に使われるABテストがカスタム変数を使うと簡単に出来たのでメモ。

タイプの振り分け

まずはPHPでユーザーをAタイプ、Bタイプに振り分ける

<?php
if(isset($_COOKIE['type']) && $_COOKIE['type']){
	$type = $_COOKIE['type'];
}else{
	$type = (rand(0, 1) == 0) ? 'a' : 'b';
	setcookie('type', $type, strtotime('+7day'), '/');
}
?>

どっちのタイプに振り分けたかをCookieに保存することで途中で違うタイプに変わらないようにする。
あとは$typeの内容を見て表示を切り替えれば、ユーザーを振り分けることが出来る。

カスタム変数の定義

振り分けたタイプをGoogle Analytics側に通知するためにカスタム変数を使う。

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-xxxx");//自分のトラッキングコードを設定
pageTracker._setCustomVar(1, "user_type", "<?php echo $type ?>", 1);
pageTracker._trackPageview();
} catch(err) {}</script>

カスタム変数を定義してるのが_setCustomVarという部分。
一つ目の引数はカスタム変数のインデックスとして1〜5まで設定出来るのでとりあえず1を設定。
既に使われているならかぶらないようにした方が良いかも。

二つ目の引数は変数名なので今回はざっくりとuser_typeと設定してみた。

三つ目の引数は変数の値なので、ここにuser_typeがAタイプなのかBタイプなのかを設定する。

四つ目の引数はスコープ。
ちょっとわかりにくいけど、ABテストみたいにAタイプのユーザーが途中でBタイプになったりすると困るような場合はCookieに設定してくれるビジターレベルの1を設定した方が良いかも。
セッション単位で値が変わって良いものならセッションレベルの2を設定するみたい。


※参考:
Analytics 日本版 公式ブログ: カスタム変数 概要

結果をGoogle Analytics側で確認

メニューからアドバンスセグメントを選んで、アドバンスセグメントを新規作成する。
ディメンション>カスタム変数(キー1)を追加して値にuser_typeと入力。
「And」ステートメントを追加で、ディメンション>カスタム変数(値1)を追加して値にaと入力し、セグメント名をAタイプにして保存すると、Aタイプのユーザーだけ絞り込める。
同じようにカスタム変数(値1)にbと入力したセグメントを作ればBタイプのユーザーを絞り込める。


※_setCustomVarで設定したインデックスに対応しているため、インデックスを2にしてる場合はキー2、値2の組み合わせで作成する