長くて汚いutm_*パラメータ付きURLをキレイにするGoogle Analytics用の少しマニアックなスクリプト
今日は、SEOにも効くGoogle Analytics用の便利なスクリプトを紹介します。少しマニア向けですが、「utm_medium」や「utm_source」などのトラッキングパラメータが付いた長くて汚いURLを、パラメータどおりにちゃんと解析しつつ、ユーザーに対してはキレイなURLで見せられるというものです。
この記事のタイトルは長いですが、これでURLは短くキレイになります。
ダウンロード&使い方
Web担特製のカスタムJavaScriptを以下のURLからダウンロードします。
・特製トラッキングコードのダウンロード
→ http://web-tan.forum.impressrd.jp/files/images/nakanohito/bancho_ga_canonicals.js(または、ここをクリックしてこの下にコードを表示)
ダウンロードしたJavaScriptをテキストエディタで開き、冒頭の「UA-xxxxxx-x」の部分を、あなたのGoogle Analytics用のウェブ プロパティ IDに書き換えます。
_gaq.push(['_setAccount', 'UA-xxxxxx-x']);
既存のGoogle Analytics用トラッキングコードをサイトから削除します。
ダウンロードしてIDを書き換えたJavaScriptをサーバーにアップロードして、ページの<head>部分で読み込むようにします(</body>直前でも動作しますが、リダイレクトをスムーズにするために<head>部分に入れることをお勧めします)。
<script type="text/javascript" src="アップロードしたJSの場所"></script>
サイトのURLに「?utm_medium=mail」などのトラッキングパラメータを付けアクセスしてみて、トラッキングパラメータなしのURLにリダイレクトされることを確認します。
利用上の注意を確認のうえ、お使いください。
このスクリプトの導入後も、あなたはメルマガや広告には、引き続きutm_mediumやutm_sourceなどのトラッキングパラメータ付きURLを使います。そのURLをクリックしたユーザーは、一瞬だけパラメータ付きのURLにアクセスして、すぐにパラメータなしのURLにリダイレクトされます。これで、ユーザーが目にするURLはトラッキングパラメータのないシンプルなものになり、それでいてパラメータで設定した解析内容はGoogle Analyticsのデータに反映されるようになります。
なぜutm_xxx付きの長いURLはダメなのか
あなたのサイトではGoogle Analyticsのトラッキングパラメータを使っていますか? 広告やメルマガからのリンクに「utm_source」や「utm_medium」などのパラメータを付けることで、そのリンクが何回クリックされたかを調べる仕組みですね。
自分で使っていなくても、FeedBurnerで記事のクリックスルー集計を有効にしていると、フィードからサイトへのリンクにこうしたパラメータが付いている場合があります。
トラッキングパラメータ付きURLを使うと、どれくらいクリックされたをGoogle Analyticsで解析できて便利な反面、URLがとても長くなってしまいます。たとえばこんな感じですね。
http://example.com/?utm_source=webtan&utm_medium=mail&utm_campaign=ww0135
長いURLは、次のような点で問題があります。
- 見た目に悪い
- メールやTwitterでURLを伝えにくい
- 検索エンジンのリンク評価が分散される
- ソーシャルブックマークなどが分散される
長くて使いにくい点は短縮URLを使ってもらえば解決できますが、すべてのユーザーが短縮URLを使い慣れているとは限りません。そもそも長いURLはそれだけで鬱陶しいですよね。
また、流入元を解析するためのトラッキングパラメータが付いたままURLが流通してしまうと、「サイトA用のURLを作ったがサイトBに掲載されてそこからの流入が多かったためにサイトAの効果が高いと誤解する」ようなことも起きてしまうかもしれません。
検索エンジンのリンク評価分散に関しては、実際にはcanonical指定をしたりウェブマスターツールの[サイト設定]>[設定]>[パラメータ処理]で無視するように設定したりすれば問題にはなりません。
しかし、ソーシャルブックマークの分散は防ぎきれないため、損をしてしまいます。たとえばトラッキングパラメータなしのURL(通常のURL)に100ブクマ付き、トラッキングパラメータ付きのURLに50ブクマ付くと、本来ならまとめて150ブクマで人気エントリ入りしていたかもしれないのに、上に上がらないままになってしまうのです(canonical指定は必ずしも効くとは限らないので)。
Web担でもメルマガのリンクにトラッキングパラメータを使っているためブクマが分散していたことがあり、それを解決するために「utm_XXXのトラッキングパラメータ付きの長くて汚いURLを、トラッキングパラメータなしのきれいで短いURLにリダイレクトしつつも、ちゃんとアクセス解析ができる」トラッキングコードを作りました。
動作の解説
スクリプト全体の解説をすると長くなってしまいますので省略しますが、全体としては次の図のように動作します。
<head>で読み込まれたら、まずURLをチェックします。
URLにトラッキングパラメータが付いていたら、現在のURLで同期モードの動作で解析ビーコンを飛ばし、クッキーに「このURLにリダイレクトするよ」と記録したうえで、トラッキングパラメータなしのURLにリダイレクトします。
URLにトラッキングパラメータが付いていなかったら、クッキーをチェックします。リダイレクトされた処理の場合は特にビーコンを動作させず、イベントトラッキングの準備をするだけに留めます。リダイレクトされた処理でなければ(つまり通常のアクセス)、ふつうに解析ビーコンを動作させます。
利用上の注意
Web担ではこのスクリプトをもう半年以上動作させており特に問題はないようですが、Web担編集部ではすべての環境でこのスクリプトが正しく動作することを保証できるわけではありません。
不安ならばテストのうえ導入してください。特にWeb担ではテストできていないEコマース系の機能を使っている場合は、必ずテスト環境でいろいろ試してみてください(そのほかにも安田が気づいていない部分があるかもしれません)。
テストにあたっては、Chrome拡張のGoogle Analytics Tracking Code Debuggerを使うか、FirefoxのFireBugで「接続」パネルを使うといいでしょう。
・Google Analytics Tracking Code Debugger
→ https://chrome.google.com/extensions/detail/jnkmfdileelhofjcijamephohjechhna
このスクリプトを使うと、基本的には非同期モードで動作するようになります。そのため、すでにイベントトラッキングなどを利用している場合は非同期モード用の記述に変更する必要があります。
また、通常のトラッキング以外の処理を入れている場合は、スクリプト中ほどの「ここに追加のトラッキング処理を非同期形式で入れる」の部分に追加処理を記述してください(こちらも非同期モードで記述します)。
この仕組みを考えていたときに何人かのアクセス解析系の人に意見を聞いたのですが、すべて微妙な反応で、おそらくこうしたニーズを持っている人は少ないマニアックなスクリプトなのだろうと思います。
こうしたスクリプトが気になった方は、このスクリプトが狙うところやスクリプトの動作に関して、ご意見やご感想などいただければ幸いです。
コメント
皆さんどうされているんでしょう…
安田さん
こんにちは。
この問題、特にソーシャルブックマークの分散に微妙に影響を受け始めており、
ちょっと対応を考え始めています。
RTのボタンの中でも、ちゃんとカウントしてくれないボタンがあるなぁと思うと、パラメータの有無に関わらず、正確にカウントするものもあったりしますよね。ちゃんと調べていないのですが、backtweetというサービスは問題なく両方のURLでカウントしてくれていたりします。(backtweetは無料で使っていると一定期間でカウント数が消されるので乗り換えるかな…と思っていたりします。)
他のメディアや個人ブログを運用されている方はどうされているのかなと思ったので、コメントを入れてみました。
何か追加で情報をご存じでしたら教えてください。
よろしくお願いします。
他のサービスがどうでも大丈夫なように
こんにちは。
やはり「他のサービスがどういう処理をしていても問題がないように、サイト側で対処しておく」のが原則になると思います。
検索エンジンもいまはパラメータをうまく処理してくれますが、将来他の検索エンジンが主流になったときにも同じように処理されるとは限りません。
外部サービスによるcanonicalizationの処理に期待するよりも、やはりサイト側でURLを一意にしてしまうのが最善だと思います。
そういう意味では、この記事のような仕組みを実装するか、そうでなければ、同一ドメイン名内にリダイレクト用の仕組みを用意しておいて、そこで参照元をチェックしたうえでクッキーを喰わせるとかの処理をするのがいいと思われます。
たぶん。
こちらのjavascriptはクロスドメイントラッキングにも対応しているのでしょうか?
クロスドメイントラッキングの際についてしまうパラメータを省略して、
URLを綺麗に見せる方法を探していたらこちらに辿り着きました。
試しに使用してみると、複数ドメイン用の設定もこのjavascript内に追加して設定すると、
全てこれ一つで計測できました。
何か見落としている点があるのかもしれないのですが、
こちらはクロスドメイントラッキングにも使えるように作成されているのか
教えていただけますでしょうか。
だいじょうぶだと思いますよ
具体的には試していませんが、問題ないと思いますよ。
冒頭の「ウェブ プロパティ IDを設定」の部分で
_setDomainName()
を呼び出して適切に設定すれば問題ないのではないかと。
ただ、その場合に発生するクッキー引き継ぎ用のいろんなパラメータ名は
var utms = {
のなかで指定すれば追加で処理できるのではないかと。
とはいえ、こちらで細かく検証してサポートできるわけではないので、
GoogleアナリティクスのJavaScriptを扱える人に判断してもらってくださいませ。
早速のご回答、どうもありがとうございます! テストしてみた
早速のご回答、どうもありがとうございます!
テストしてみたところ、パラメータも綺麗に処理されており、
計測も正常にできておりました!
いろいろテストしながら使わせていただきます!
どうもありがとうございます。
よかったです
フィードバックありがとうございます。
念のために、データが問題ないか確認しながら利用を進めてくださいませ。