web-dev-qa-db-ja.com

Googleアナリティクス送信イベントコールバック関数

ユーザーが登録され、beforeがリダイレクトされた後、Google Go Analyticsにイベントを送信しようとしています。 Googleタグマネージャーとuniverasl jsを使用しています。

まず、ここで説明するように、dataLayerオブジェクトを使用しようとしました: developers.google

それが私の機能のようです:

//Registering new user via ajax
$.ajax('/register/', {
    success: function() {

        //Pushing event to dataLayer
        dataLayer.Push({
                'Category': 'Registration Process',
                'event': 'Registration Submit Btn'
            });

        //Logging in new user and redirecting the page with a timeout
        setTimeout(function(){
            loginAction();
        }, 500)
    }
})

問題は、すべてのイベントの約25%しか受け取っていなかったことです、他のすべてのイベントは失われます。 dataLayerにオブジェクトを追加した後、イベントが実際にGoogleに送信されるかどうか、いつ送信されるかはわかりません。イベントの75%はまったく送信されなかったと思います。

今、私は別のアプローチを実装しようとしています:

//Registering new user via ajax
$.ajax('/register/', {
    success: function() {

        //Sending event through ga('send')
        parent.ga('send', 'event', 'Registration Process', 'Registration Submit Btn');

        //Logging in new user and redirecting the page with a timeout
        setTimeout(function(){
            loginAction();
        }, 500)
    }
})

しかし、ga( 'send')にはコールバック関数はありません!

dataLayerまたはga( 'send')を使用して、イベントが実際にGoogleに送信されたことを確認するにはどうすればよいですか?

25
Prosto Trader

やっと手に入れた。それはかなり複雑で、ドキュメントには記載されていません。私の場合、Googleタグマネージャーを使用しているため、イベントを正常に発生させてコールバックを取得するために回避する必要があるいくつかの回避策があります。

まず、 ClientId を取得する必要があります。これは、Googleサーバーに送信されるイベントで必要です。実際にはCookieに保存されますが、そこから直接取得することはお勧めしません。

Googleがどのように取得することをお勧めしますか。ただし、Googleタグマネージャーを使用している場合、このは機能しません

 ga(function(tracker) {
       var clientId = tracker.get('clientId');
 });

代わりに、getAllメソッドからClientIdを取得する必要があります。

 var clientId = ga.getAll()[0].get('clientId');

その後、新しいトラッカーを作成する必要があります

    ga('create', 'UA-XXX-YYY', {
        'clientId': clientId
    });

その後、イベントを送信できます。

 ga('send', 'event', {
   'eventCategory': 'YOUR Category Name', //required
   'eventAction': 'YOUR Action name', //required
   'eventLabel': 'YOUR Label',
   'eventValue': 1,
   'hitCallback': function() {
       console.log('Sent!!');
      //callback function
    },
   'hitCallbackFail' : function () {
      console.log("Unable to send Google Analytics data");
      //callback function
   }
});
32
Prosto Trader

Google Analytic docから https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallbackNews

// Alerts the user when a hit is sent.
ga('send', 'pageview', {
  'hitCallback': function() {
    alert('hit sent');
  }
});

hitCallback関数を自分用に編集できます。

OR

// Use a timeout to ensure the execution of critical application code.
ga('send', 'pageview', {'hitCallback': criticalCode});
setTimeout(criticalCode, 2000);

// Only run the critical code once.
var alreadyCalled = false;
function criticalCode() {
  if (alreadyCalled) return;
  alreadyCalled = true;

  // Run critical code here...
}

ここで、上記の例で関数(criticalCode)を定義して、データをGoogle Analyticに送信し、コードを処理できるようにすることができます。

アナリティクス、fyrのAPIをよく理解するには、 https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference

6
Bee Bee Dan

ドキュメントから: https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback

ga('send', 'pageview', {
  'page': '/my-new-page',
  'hitCallback': function() {
  alert('analytics.js done sending data');
}
});

この例では、フィールド名オブジェクトは、hitCallbackの設定と同様に、ページパラメーターの両方を構成します。トラッカーがデータの送信を完了すると、ユーザーに警告ボックスが表示されます。

イベント、ページビューなどにhitCallbackを使用できます。

2
Mike