新しいUniversal Analytics(analytics.js)を使用して追跡しているWebサイトがあります。次のコードスニペットを使用して、すべてがセットアップされ、動作しています(ページビュー、紹介など)。
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-39570713-1', 'site.com');
ga('send', 'pageview');
</script>
これは</head>
タグの前にあります。
JQueryを使用してイベントを発生させています。警告メッセージを使用してJQueryをテストしましたが、呼び出されるので、それは問題ではありません。ボタンがクリックされたときに起動するスニペットは次のとおりです。
$('#submitButton').on('click', function() {
ga('send', 'event', 'button', 'click', 'contact form');
});
Analyticsの[イベント]セクションには何も表示されません。 IPアドレスが除外されないようにするために、別のコンピューターからでもボタンをクリックし続けます。 Googleが提供している Analytics doc があまり説明を提供していないので、私はここで途方に暮れています。
Googleタグマネージャーを使用しており、コードを介していくつかのイベントをトリガーする場合、ga('send'...)
では十分ではないようです。最初に適切な分析オブジェクトを取得する必要があります。
if ("ga" in window) {
tracker = ga.getAll()[0];
if (tracker)
tracker.send("event", "Test", "Test GA");
}
これは、サイトで1つのGoogleアナリティクストラッキングコードのみを使用していることを前提としています。複数を使用している場合は、名前またはインデックスで適切なものを取得する必要があります。
テストのために、hitCallbackメソッドを使用することもできます。
ga('send', {
'hitType': 'event',
'eventCategory': 'button',
'eventAction': 'click',
'eventLabel': 'contact form',
'hitCallback' : function () {
alert("Event received");
}
});
更新:コンマが欠落していました。
私はまったく同じ問題を抱えていました。新しいプロパティを作成し、「クラシック分析」ではなく「ユニバーサル分析」を選択する必要がありました(「ベータ」というラベルが付いています)。イベントが適切にキャプチャされるようになりました。
私の場合、問題は分析スクリプトのロードをブロックしていたuBlock Originでした。
私はこれと同じ問題を抱えていて、解決策を見つけたと思いますが、ユニバーサルアナリティクスについては口に悪い味が残ります。
私がしなければならなかったことは、明示的にsynchronous分析APIを使用することでした。したがって、通常のスニペットを<head>
タグ、次のコードを使用します。
<script src="//www.google-analytics.com/analytics.js"></script>
<script>
tracker = ga.create('UA-XXXXXXX-1', 'example.com');
tracker.send('pageview');
</script>
次に、次のようなイベントトラッキングコードを呼び出します。
tracker.send('event', 'Category', 'Action', 'Label');
これにより、ユーザーがナビゲートしたページがロードを開始する前に、追跡ビーコンがGoogleに送信されますおよび承認済み。
これは、ユニバーサルアナリティクスが古いga.js
分析コードが必要です。そのため、ユーザーを別のページに移動するクリックにイベントを添付すると、ブラウザーがページを離れ、現在のjavascript実行スタックをドロップしたため、その確認応答を送信できません。
たぶん、この問題は特定の実行環境に固有のものです(OSX Mountain LionでChrome 34を使用しています)。これは、多くの開発者がこの問題に気付かない理由を説明するかもしれません。
今日、初めて分析をセットアップする必要がありましたが、同じトラブルに直面しました。
getAll()
を回避するために複数のトラッカーに対処するための最も強力な方法は次のとおりです。
_<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-xxxxxx-y', 'auto', 'tracker');
ga('tracker.send', 'pageview');
ga('tracker.send', 'event', 'test', 'click', 'automaticEvent')
_
Createメソッドに「名前」を渡し、ga([trackerName].send, ...)
でそのトラッカーにイベントを送信する必要があることに注意してください。
リファレンス: https://developers.google.com/analytics/devguides/collection/analyticsjs/accessing-trackers
コード自体に問題はありません。別のイベントトラッキングを使用してみましたか?
ga('send', {
'hitType': 'event', // Required.
'eventCategory': 'button', // Required.
'eventAction': 'click', // Required.
'eventLabel': 'contact form'
});
また、GA Debug Chromeアドオンを使用して、追跡ビーコンが送信されたかどうかを確認できるアドオンを使用してWebサイトをテストすることをお勧めします。
現時点では、ユニバーサルアナリティクスの「公式」デバッグドキュメントはまだありませんが、ga_debug.jsがアナリティクスの実装の問題点を見つけるための便利な方法を多数提供するので、すぐに追加されることを願っています...
アナリティクスの新しいバージョンには新しい構文があります。以下の行を置き換えます。
ga('send', 'event', 'button', 'click', 'contact form');
これとともに;
gtag('event', 'click', {'event_category' : 'button',
'event_label' : 'contact form'});
参照; https://developers.google.com/analytics/devguides/collection/gtagjs/events
私は同じ問題を抱えており、イベントが追跡されているように見えますが、GAダッシュボードはそれらを閲覧することを許可していません。これが、イベントを伴う訪問:1071 "but" Total events:0 "that GAダッシュボードが表示されます。
[〜#〜] upd [〜#〜]:GA Chromeデバッグ、問題を発見した;最初の方法は動作していません(データを添付せずにイベントを送信します)が、2番目のものは問題ありません。
また、submitイベントが発生した後、gaスクリプトが「send」メソッドを実行できるようになる前に、ページがリロードされる可能性が高いことも考慮する必要があります。これを回避するには、「hitCallback」メカニズムを使用します。つまり、送信を禁止し、ga send-methodを呼び出して、コールバックでフォームデータを送信します。
window.dataLayer.Push({ event: 'EVENT_NAME', ...data })
経由でGTMイベントを送信し、GTMでイベントをGoogleアナリティクスに送信するタグを起動するトリガーを作成することをお勧めします。 GTMプレビューで最高のデバッグエクスペリエンスが得られ、GTMがイベントをGTMからGAに確実に送信します。これはGTMが処理するためです。
私はそれを機能させました-私の例は新しいユニバーサルアナリティクスを使用しています。
<script type="text/javascript">
function sliderOnChange() {
var period = window.convertDays(($("#PeriodSlider").slider("value")));
var amount_of_credit = $("#AmountOfCreditSlider").slider("value");
var gaEventInput = "£" + amount_of_credit + " for " + period;
ga('send', 'event', 'slider', 'sliding', gaEventInput);
}
</script>