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の既存のユーザーへの内部参照を取得する必要があるようです。
どんな助けでも大歓迎です-ありがとう!
整数または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'});
_
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
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