[対象: 上級]
Googleアナリティクスのイベントトラッキングを利用してGoogle検索からのトラフィックがあったキーワードの順位を計測する方法をこの記事では紹介します。
GoogleのAnalytics AdvocateであるJustin Cutroni氏がAJ Khon氏に教授した方法になります。
さっそく設定方法からいってみましょう。
以下のコードをheadセクションに挿入します。
<script type="text/javascript">
if (document.referrer.match(/google\.(com|co\.jp)/gi) && document.referrer.match(/cd/gi)) {
var myString = document.referrer;
var r = myString.match(/cd=(.*?)&/);
var rank = parseInt(r[1]);
var kw = myString.match(/q=(.*?)&/);
if (kw[1].length > 0) {
var keyWord = decodeURI(kw[1]);
} else {
keyWord = "(not provided)";
}
var p = document.location.pathname;
_gaq.push(['_trackEvent', 'RankTracker', keyWord, p, rank, true]);
}
</script>
計測が始まると、「RankTracker」という名前のイベントカテゴリでレポートに出てきます。
「平均値」に出ているのが検索順位です。
Googleのウェブ検索からトラフィックがあった対応するキーワードの平均の順位になります。
セカンダリディメンションに「ランディングページ」を指定してどのページが何位だったのかを調べるのもいいですね。
Googleウェブマスターツールでもランキングをチェックできますが、アクセス解析の専用ツールであるGoogleアナリティクスでできるというのが嬉しいですね。
ウェブマスターツールとは違って保存期間に制限がないので(厳密にはあるが事実上ない)設定した後は長期にわたって分析可能です。
また他の指標と組み合わせてフィルタリングできることも大きな強みです。
スキルのある人はExcelで加工したりAPIを利用して独自ツールに吐き出して利用したりしてもいいでしょう。
なお上級者向けの記事として書いたのでイベントトラッキングをはじめコードの細かな説明は省きます。
詳しくはCutroni氏とKhon氏の記事をご覧ください。
- A New Method to Track Keyword Ranking using Google Analytics
- New Ways To Track Keyword Rank (for Free)
とはいえ、簡単に補足しておきます。
もともとのコードでは、google.comからのトラフィックしか取得できません。
google.co.jpからのトラフィックも取得できるように改造してあります。
google.co.ukやgoogle.com.auなどすべてのGoogleドメインからのトラフィックを取得するようにもしたいところですが、正しくやろうとすると正規表現が面倒そうなのでやめました。
米Googleと日Googleを計測できれば十分ですよね。
他の国のGoogleも計測したければ自分の要望に合わせて変えてください。
この方法はリファラーに付いている「cd」パラメータの値を取得しています。
「cd」パラメータには検索順位が入っているからです。
ただしすべてのリファラーにcdパラメータが含まれているとは限らないようです。
僕が調べた限りではかなりの確率で含まれていそうですが、100%完全にすべてのトラフィックに対して計測できているわけではないことを理解しておく必要があります。
(not provided) は相変わらずそのままで、何のキーワードかは闇の中です。
これはもう諦めるよりほか仕方がありません。
ところで「cd」パラメータというのを聞いてピンときた人がいるかもしれません。
cdパラメータの値を取得して検索順位を調べる方法を実は以前にもこのブログで紹介しています。
このときは専用のフィルタを作りました。
フィルタは、作成がやや面倒だったり扱いにくかったりするのに対して今日紹介したイベントトラッキングを利用した方法はずっとお手軽です。
headセクションにコードを入れることさえできれば動きますから。(笑)
そうは言ってももちろん興味本位ではなくサイト改善に役立てるために利用できると確信したうえで導入してください。
最後にもう1つ補足しておきます。
イベントトラッキングの「non-interaction」に「true」をセットしてあるので直帰率の計測には影響を与えません。