メルマガからのトラフィックをGoogleAnalyticsで解析 -まとめ-

さて、まとめとしてメルマガからのアクセス情報を『ユーザー定義』として保存しておくスクリプトを掲載しておく。

 

if(location.search.length > 1) {
//パラメータが有った場合の処理
var get = new Object();
var r = new Array();
var ret = location.search.substr(1).split(“&”);//パラメータ毎に分ける
//各パラメータ用の変数を準備
get[‘utm_source’] = ”;
get[‘utm_medium’] = ”;
get[‘utm_campaign’] = ”;
//各パラメータの取得
for(var i = 0; i < ret.length; i++) { r = ret[i].split(“=”); get[r[0]] = r[1]; } if((get[‘utm_source’].length > 0) && (get[‘utm_medium’].length > 0) && (get[‘utm_campaign’].length > 0)){
//GoogleAnalytics用のパラメータが合った場合、クッキーに保存してGoogleAnalyticsのユーザー定義用の値も生成しておく
setCookie();
_user_var = get[‘utm_source’]+’/’+get[‘utm_medium’]+’/’+get[‘utm_campaign’];
}
else{
//GoogleAnalytics用のパラメータが無かった場合、保存済みのクッキーを読み込む
_loadcookie = loadCookie(“VizSeg”);
r = _loadcookie.split(“|”);
if((r[0].length > 0) && (r[1].length > 0) && (r[2].length > 0)){
//クッキーが合った場合GoogleAnalyticsのユーザー定義用の値を生成する
_user_var = r[0]+’/’+r[1]+’/’+r[2];
}
else{
//クッキーが無かった場合GoogleAnalytics用の値は空にしておく
_user_var = ”;
}
}
}
else {
//パラメータが無かった場合、保存済みのクッキーを読み込む
_loadcookie = loadCookie(“VizSeg”);
r = _loadcookie.split(“|”);
if((r[0].length > 0) && (r[1].length > 0) && (r[2].length > 0)){
//クッキーだった場合、GoogleAnalyticsのユーザー定義用の値を生成しておく
_user_var = r[0]+’/’+r[1]+’/’+r[2];
}
else{
//クッキーが無かった場合GoogleAnalytics用の値は空にしておく
_user_var = ”;
}
}
//クッキー保存用サブルーチン
function setCookie(){
if((get[‘utm_source’].length > 0) && (get[‘utm_medium’].length > 0) && (get[‘utm_campaign’].length > 0)){
//期限を計算:3ヶ月
_today = (new Date()).getTime(); //今日
_limit_day = new Date(3*30*24*60*60*1000 + (new Date()).getTime());//期限
_limit_day_string = _limit_day.toGMTString();
document.cookie = “VizSeg=” + escape(get[‘utm_source’]+”|”+get[‘utm_medium’]+”|”+get[‘utm_campaign’])+”;path=/;expires=”+_limit_day_string;
}
}
//クッキー読み込み用サブルーチン
function loadCookie(key){
var sCookie = document.cookie; // Cookie文字列
var aData = sCookie.split(“;”); // “;”で区切って”キー=値”の配列にする
var oExp = new RegExp(” “, “g”); // すべての半角スペースを表す正規表現
key = key.replace(oExp, “”); // 引数keyから半角スペースを除去
var i = 0;
while (aData[i]) { /* 語句ごとの処理 : マッチする要素を探す */
var aWord = aData[i].split(“=”); // さらに”=”で区切る
aWord[0] = aWord[0].replace(oExp, “”); // 半角スペース除去
if (key == aWord[0]) return unescape(aWord[1]); // マッチしたら値を返す
if (++i >= aData.length) break; // 要素数を超えたら抜ける
}
return “”; // 見つからない時は空文字を返す
}

そんなに難解なスクリプトではないので解説はスクリプト内のコメントで十分だと思う。

上記のスクリプトをに置いておくと、“_user_var”にメルマガからの情報が入っているので、トラッキングコードでそれを送信出来るようにしておく。

トラッキングコード(同期型)に、下記の太字の部分を追加するとユーザー定義が使用出来る。
引数は上記スクリプトで設定してる“_user_var”。

<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-9182972-1”);
pageTracker._setDomainName(“none”);
pageTracker._setAllowLinker(true);
pageTracker._setVar(_user_var);
pageTracker._trackPageview();
} catch(err) {}
//–>
</script>

後は前回までの話で、今回導入したサイトは複数ドメインの構成になっているので、ドメイン間のリンクに設定するトラッキングコード情報に加えてこのユーザーコードの情報も渡すようにしておいたが、これは通常の場合必要ない。

この方法で半年ぐらい運用していて、思った様なデータが出て来ているので問題無いと思う。

例えば、ユーザー定義は有るが、トラフィック上ではダイレクトとなるケースもあるようだ。
どうなるとこういった具合になるのかは不明だが、ユーザー定義が無いと、ただダイレクトというだけで、ブックマークかURLを手入力してアクセスされたのだろうと解釈するだけに終わってしまうが、これが有る事で過去メルマガを購読してアクセスした経緯が分かる。

GoogleAnalyticsでの解析方法は様々だが、コンバージョンを設定している場合は、ディメンション『ソース/メディア』指標を各コンバージョンにしたカスタムレポートを作っておいて、詳細レポートの『ソース/メディア』の隣のプルダウン項目で『ユーザー定義値』を選択して解析すると、『ソース/メディア』『ユーザー定義』の内容が一致しない物が次第に出てくるようになって、この作業のメリットが現れてくると思う。

そこまでの必要がない場合は、ディメンション『ユーザー定義』にしてカスタムレポートを色々作ってみると良い。

という事で、メルマガの効果を出来るだけ追跡して分析する為のGoogleAnalyticsを利用した方法は以上である。

コメント