aタグのクリックイベントをGoogleアナリティクスで正しく計測できない

めちゃくちゃ久しぶりに更新します。

さてさて、今回はGoogleアナリティクスについて。

弊社のサマーインターンシップ用ランディングページを作ることになって。
いままでのLPはPV数だけ取得するためにGoogleアナリティクス入れてたんですが、今回はクリックイベントだけでもしっかり目に計測しようと思い、前々から気になっていた表題の件について調べましたのでメモ。

イベント計測について

現状、Googleアナリティクスでは、2通りの書き方があるらしく、

  • クラシックアナリティクス

こちらが昔からある記法。ただ、どんどん下記のものに移行していくらしい。
※参考 http://analytics-ja.blogspot.jp/2013/10/blog-post.html

  • ユニバーサルアナリティクス

こちらが、去年の夏頃から使われている記法。上述したものよりもシンプルに書ける上に、APIと併用することでかなりカスタマイズして利用できるそう。
詳しくは以下記事に書いてあるので参考に。
公式レファレンス https://developers.google.com/analytics/devguides/collection/analyticsjs/events?hl=ja

って、ことで
なんか良さそうなのでユニバーサルアナリティクスを使ってます。

aタグのクリックイベント計測漏れについて

このへんの記事をみると、どうやらアナリティクスのjavascriptの処理を待つ前にリンクしてしまうことが原因で起こるらしい。。
で、解決法。

いろいろ調べた結果、2つの方法があるとのこと。

hitCallback関数を利用する

こちらを使うとアナリティクスの計測後にイベント発生をさせることができるとのこと。

<a onclick="ga('send', 'event', 'カテゴリ名', 'アクション名', { hitCallback: function () { document.location.href = 'http://example.com/'; }}); return false;">サイトへのリンク</a>

実際にやってみましたが、
・なぜか、href属性をつけてると先にリンクに飛んでしまうようで、、、w外すとすんなりいきました。
・ただhref属性を外すとhoverしたときのポインターが効かなくなるようで、、wなのでcss側で改めて設定しました。
・hitCallback関数内のリンク先は相対パスでもOKです。

って感じで攻略できました。
ただ、ユーザーが「別タブで開く」の動作ができなくなるので、場合によってはまずいですね。

onClickでなくonMouseDownを利用する

こちらを使うと、リンクより前にアナリティクスの計測を実行してくれるそう。

<a href="http://example.com/" onMouseDown="ga('send', 'event', 'カテゴリ名', 'アクション名', true);">サイトへのリンク</a>

これはすんなりいきました。

ただ、mouse downなので右クリックでも計測されてしまうという欠点あり。
これもこれでちょっと悩ましいですね。。

まとめ

参考リンクそのままですが、、、
・前提として、イベントトラッキングは計測漏れが発生します。aタグは特に。
・hitCallback関数は別タブで開くが効かなくなるので、ユーザビリティが犠牲になる。
・onMouseDownは右クリックも計測してしまうので、正しい数値よりも少し上回って計測してしまう。

といったところでしょうか。
別タブで開かれる可能性の高い参考リンクなどは、絶対的にonMouseDownのほうが無難ですね。。。
それ以外の部分でも、onMouseDownのほうがユーザビリティを重視すると無難そう。