※「アナる人の日記」からの移行エントリー
GAでクリック数を計測する時の一般的な手法
Google Analyticsでリンクのクリック数を計測する際は、onClickイベントハンドラから_trackEvent() メソッドを呼び出す手法が一般的です。
[参考]Google アナリティクスのイベントトラッキングとそのトラッキングコード
ですが、このやり方のちょっと「ん〜」と思うところは、クリック後、GAへデータ送信する前にリンク先が表示されてしまった場合、クリックデータ取得されない=カウントされないということです。
救世主?「onMouseDown」を使った手法
ではイベントが発生するタイミングがもっと早ければ、GAへデータを送信するタイミングも早くなり、結果、リンク先が表示されることが少なくなる=より精緻なカウントが可能になる?
ということで、登場するのが「onMouseDown」というイベントハンドラ。
イベント発生のタイミングは文字通り「マウスが対象物にオンしてマウスのボタンを押した時」なので、クリックした瞬間となります。
比較すると、
onClick:マウスのボタンを押して、離した時
onMouseDown:マウスのボタンを押した時
となり、離した瞬間か押した瞬間か、若干ですがタイミングが異なります。
そしてこのやり方にも「ん〜」と思うところがあり、それは、「押した瞬間」なので、例えば、あんまりないと思いますが、押したんだけどそのままマウスをリンク先から移動させ、結果的にリンクをクリックしていない場合も1クリックとカウントされてしまう、ということです。
え、じゃあ結局どっちで計測したらいいん?
これは感覚値ですが、実際のクリック数に対し、onClickでデータ取得できなかった数と、onMouseDownでデータ取得し過ぎてしまった数では、後者のほうが数が少ない=実際のクリック数に近しい数が取得できるのではないか、と思っています。
ということで、とりあえずonMouseDownのほうでやってみました。
(すみません、キャプチャとか実数値とか無いです、というか撮り忘れました)
結果、やはりonMouseDownのほうがonClickに比べ、より実際のクリック数に近しい数が取得できそうでした。
[参考]GoogleAnalytics イベントトラッキング: onClick vs onMouseDown
了解、じゃあこれからはonMouseDownを使うってことで。
が、これだけではダメでした。。。
そう、もう時代はスマートフォンなので、スマートフォン用サイトのことも考えなければいけません。
スマートフォンではonMouseDownではなく、タッチに対するイベントハンドラを使う必要があり、onMouseDownに対応するのはonTouchStartになります。
[参考]スマートフォンのタッチとPCのマウスのJavascriptのイベントの対比
ん?で?つまり結論は?
ということで、今のところの結論は、
PCサイトではonMouseDown、スマートフォンサイトではonTouchStartを用いて計測することで、より確からしい数値が取得できる
です。
※これがベストかどうかはまだ完全に検証しきれていないので、実装の際は自己責任でお願いします。Googleさんが推奨していないのには理由があると思うので。環境による不具合など。
ちなみにもっと他に良い方法無いの?
他にもsetTimeoutを使ってクリックからリンク先表示までの時間を遅らせることで計測漏れを防ぐ方法や、hitCallbackを使いデータ送信を待ってからリンク先を表示させることで確実にデータ取得する方法もありますが、いずれも問題があり、あまり推奨できないのであえて書きません。
※前者は当然表示まで少し遅くなる、後者はGAサーバーに不具合があった場合リンク先が表示されないリスクがある、両方ともblank表示がうまくいかず同じタブで開いてしまう、など。
[参考]Googleアナリティクスでの外部リンククリック計測3つの手法の利点と欠点を整理してみた
ではでは。
コメント