事前にjQueryを読み込んでいる前提でこんな感じのScriptを組んでみました。
var now; (function($) { $(document).ready(function() { var clientId = ga.getAll()[0].get('clientId'); //"User ID"があれば"Client ID"よりもそっちを使うべきかも。 // var clientId = "{{utma}}"; //ga.jsの場合は個を特定する値としてutmaをファーストパーティクッキー経由で取得する。 $(':input').focus(function () { now = new Date(); dataLayer.push({'event': 'form', 'eventAction': 'focus', 'eventLabel': $(this).attr('name') + ',' + clientId + ',' + now.getTime()}); }); $(':input').blur(function () { if($(this).val().length > 0) { now = new Date(); dataLayer.push({'event': 'form', 'eventAction': 'completed', 'eventLabel': $(this).attr('name') + ',' + clientId + ',' + now.getTime()}); } else { now = new Date(); dataLayer.push({'event': 'form', 'eventAction': 'skipped', 'eventLabel': $(this).attr('name') + ',' + clientId + ',' + now.getTime()}); } }); }, function newDate(){now = new Date();} ); } )(jQuery);
やっていることは、Google Analyticsで必ず発行される「clientid」を取得してきます。
あとは、フォームの入力ボックスにフォーカスしたタイミング、離れるタイミングのそれぞれでイベントを飛ばします。ユニバーサルアナリティクスの場合はUser Idを入れると完璧ですよね。
Submit時にもClient Idを入れたり、エラーを検知したり、もっとデータを追加してもイイかも。
<追記>
凡ミスでjavascriptの呼び出し部分を変更しました。
あと、時刻をnow.getTime()にしているのでミリ秒表示です。
【参考】
Google Tag Managerに関するまとめ
0 コメント:
コメントを投稿