yumeです。
ユーザーベースの行動分析を行うために、Google Analyitcs(GA)のclientIDを取得して各システムに連携する…ということを試みました。
その中で、うまくclientIDを取得できない!というケースがあったので紹介します。
GA フォーラム | Googleアナリティクスの情報サイト | ユニバーサル アナリティクスでクライアント ID を表示して、個々人の行動分析をするには
(↑あたりの記事を読んで、試していました。)
流れ
- 申し込みフォームのページに「clientIDを取得する」処理を追加
- 上の記事や、公式のドキュメントと同じように実装しました
- 公式ドキュメントhttps://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id?hl=ja#getting_the_client_id_from_the_cookie
- 取得したclientIDの値をフォームのhiddenとしてjsでセット
- 「申し込む」ボタンを押すと、申込み情報と共にclientIDをDBに取り込む
clientIDが取得できない
trackerが複数あることが原因でした。
→修正したところ、clientIDが取得できるようになりました
それでもまだ一部のclientIDが取得できない
一応連携はできたのですが、clientIDが取得できず、空のケースが無視できないくらいありました。
他のデータを照らし合わせて見ても、Cookieの許可うんぬん以前の問題のように見えたので、調査。
対処法
取得できないケースの要因として自分の中で有力だったのが、「GAに問い合わせできていない」「GAに問い合わせできているが、clientIDを返せていない」でした。
なんとなく後者のような気がしたので、
「clientIDを取得する」処理を、clientIDが返るまで繰り返しました。
(上限10回、何msか置いて実行)
→単純な発想でしたが、取得精度が格段に向上しました。
考察
今回のケースでは、clientIDをGA側のランダムな生成に任せています。
初回訪問などで、Cookieに該当の情報を持っていないユーザーに対しては
- clientIDを生成
- Cookieに設定
を行った後でないと、tracker.get('clientId') の値が空になってしまうのでは?と推測しています。
(確証はありません)
「折角実装したのに、clientIDを取得できてなくて分析に使えない!!!!」ということがあればお試しください。