web-dev-qa-db-ja.com

測定プロトコルを介してGoogle Analyticsに追跡データを送信するときのクライアントIDは何ですか?

JavaScriptの代わりにサーバーから追跡イベントを送信するために、Googleの新しい測定プロトコルを使用します。

このページには、クライアントIDが必要であることが示されています: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#required

そして、このページはオプションだと言っています: https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor

さらに、これらのドキュメントで定義されている形式は異なります。最初のページでは例として整数を指定し、「一意の値」とだけ言っていますが、2番目のリンクはUUIDである必要があると言っています。

バックエンドでユーザーIDまたは生成されたUUIDを送信する場合、Googleはその訪問者を既存の訪問者セッションにリンクすることをどのように知るのですか? GAの既存のユーザーへの内部参照を取得する必要があるようです。

どんな助けでも大歓迎です-ありがとう!

55
Alan Illing

整数またはUUID

cidは、javascriptトラッキングを使用する場合の__utma_ Cookieの2番目の値に相当します。 jsトラッキングでは、ランダムな整数です(Math.round(2147483647 * Math.random())によって生成されます)。しかし、文字列として保存され送信されるため、両方の形式(整数またはUUID)を使用できます。

必須/オプション

Js追跡では、欠落しているユーザーIDで送信されたリクエストは、Analyticsサーバーによって無視されます。それが必要だと仮定します。

測定プロトコルアクションとWebビジターをリンク

以前にAnalytics javascript _ga.js_で追跡された訪問者にバックエンドユーザーをリンクする場合、__utma_ Cookieからcid値を取得できます。しかし、私はそれをお勧めしません。端末またはブラウザの変更、Cookieのクリーニングなどが変更されるたびに、顧客の以前のアクションとのリンクが失われます。

更新

質問されたときに_analytics.js_は存在しませんでした。 cidはCookie __ga_に保存されるようになりました。 javascriptでそれを取得できます:

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

これを書いている時点では、上記のコードのようにトラッカーからclientIdを取得すると、UUIDではなく、「X.Y」の形式の2つのランダムな32ビット整数が得られます。この実装は、将来的にUUIDに変更される可能性があります。

または、独自の値(バックエンドで生成されたUUIDなど)で設定します。

_ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'});
_
53
greg

Railsの場合:

  def save_google_analytics_client_id
    if current_user && cookies["_ga"]
      client_id = cookies["_ga"].split(".").last(2).join(".")
      if current_user.google_analytics_client_id != client_id
        current_user.google_analytics_client_id = client_id
        current_user.save
      end
    end
  end
6
Jason

ExpressおよびUniversal-Analyticsモジュールでノードを使用しており、独自のcidサーバー側を生成するのではなく、_ga cookieに埋め込まれたcidを使用することを選択しました。

私のserver.jsはこのように見えます...

app.use(function(req, res, next) {
  if(req.session && (!req.session.cid) && req.cookies._ga){
    //Use the cid already embedded in the _ga cookie and save to session so I can access from socket routes
    var gaSplit = req.cookies._ga.split('.');
    req.session.cid = gaSplit[2] + "." + gaSplit[3];
  };
  next();
});  

その後、これを行うことができます。

ua = require('universal-analytics')
var visitor = ua('UAXXX', req.session.cid)

HTH

3