web-dev-qa-db-ja.com

新しいGoogleアナリティクス(analytics.js)のセットアップでイベントが追跡されない

新しい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 があまり説明を提供していないので、私はここで途方に暮れています。

27
squeezemylime

Googleタグマネージャーを使用しており、コードを介していくつかのイベントをトリガーする場合、ga('send'...)では十分ではないようです。最初に適切な分析オブジェクトを取得する必要があります。

if ("ga" in window) {
    tracker = ga.getAll()[0];
    if (tracker)
        tracker.send("event", "Test", "Test GA");
}

これは、サイトで1つのGoogleアナリティクストラッキングコードのみを使用していることを前提としています。複数を使用している場合は、名前またはインデックスで適切なものを取得する必要があります。

96
Sanjay Vamja

テストのために、hitCallbackメソッドを使用することもできます。

ga('send', {
  'hitType': 'event',         
  'eventCategory': 'button', 
  'eventAction': 'click',     
  'eventLabel': 'contact form',
  'hitCallback' : function () {
      alert("Event received");
   }
});

更新:コンマが欠落していました。

6
Dom

私はまったく同じ問題を抱えていました。新しいプロパティを作成し、「クラシック分析」ではなく「ユニバーサル分析」を選択する必要がありました(「ベータ」というラベルが付いています)。イベントが適切にキャプチャされるようになりました。

4
extrabacon

私の場合、問題は分析スクリプトのロードをブロックしていたuBlock Originでした。

3
user1139733

私はこれと同じ問題を抱えていて、解決策を見つけたと思いますが、ユニバーサルアナリティクスについては口に悪い味が残ります。

私がしなければならなかったことは、明示的に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を使用しています)。これは、多くの開発者がこの問題に気付かない理由を説明するかもしれません。

3
CoreDumpError

今日、初めて分析をセットアップする必要がありましたが、同じトラブルに直面しました。

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がアナリティクスの実装の問題点を見つけるための便利な方法を多数提供するので、すぐに追加されることを願っています...

1
Petr Havlik

アナリティクスの新しいバージョンには新しい構文があります。以下の行を置き換えます。

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

1
afelaho

私は同じ問題を抱えており、イベントが追跡されているように見えますが、GAダッシュボードはそれらを閲覧することを許可していません。これが、イベントを伴う訪問:1071 "but" Total events:0 "that GAダッシュボードが表示されます。

[〜#〜] upd [〜#〜]:GA Chromeデバッグ、問題を発見した;最初の方法は動作していません(データを添付せずにイベントを送信します)が、2番目のものは問題ありません。

0

また、submitイベントが発生した後、gaスクリプトが「send」メソッドを実行できるようになる前に、ページがリロードされる可能性が高いことも考慮する必要があります。これを回避するには、「hitCallback」メカニズムを使用します。つまり、送信を禁止し、ga send-methodを呼び出して、コールバックでフォームデータを送信します。

0
Nicolas Zimmer

window.dataLayer.Push({ event: 'EVENT_NAME', ...data })経由でGTMイベントを送信し、GTMでイベントをGoogleアナリティクスに送信するタグを起動するトリガーを作成することをお勧めします。 GTMプレビューで最高のデバッグエクスペリエンスが得られ、GTMがイベントをGTMからGAに確実に送信します。これはGTMが処理するためです。

0
Daniel Kmak

私はそれを機能させました-私の例は新しいユニバーサルアナリティクスを使用しています。

<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>
  1. Google Analytics/Google Tag Managerフィルターが異なるドメインからのトラフィックを除外していないことを確認してください。 (おそらく、異なるドメインを使用してこれを機能させるためにテストしています)
  2. GA idとga( 'create'、 'UA-39570713-1'、 'site.com')のドメインを確認してください。
  3. テスト目的でGoogleアナリティクス(GA)で新しいプロファイルを作成し、GAで定義したのと同じドメインでhtmlをデバッグします。
  4. GA-GAに表示されるまでしばらく待つ必要がある場合があります
0
Kristjan Kure