2018/4/20追記:
この記事の内容は古いので、下記の新しい記事を見て下さい。
Google Tag Manager上でGoogle AnalyticsのclientIDを取得する:その2
こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。
今日はGoogle Tag Managerの話題です。
Google Tag Managerの中のGoogle AnalyticsでclientID(cid)をカスタムディメンションで取得しようとしてちょっと手間取ったので、そのメモ。
GAのcidが生成されるタイミングが、GAのページビュータグが発火してGTMがロード完了する直前なので、
何も考えずにページビュータグ内のカスタムJavascript変数で取得しようとしても動かなくてハマった。。
で、セッション中の最初のページビュー発火後に、ウィンドウ読み込みのタイミングでcidを計測するためのイベントトラッキングを1回動かす方法で回避。
手順は下記のとおり。
1. cidを取得するためのカスタムJavascript変数を作成する。
名前: cid
中身:
function() { try { var tracker = ga.getAll()[0]; return tracker.get("clientId"); } catch(e) {} }
2. セッション中に1回だけcidを計測するためのカスタムJavascript変数を作成する。
名前: session_start
中身:
function(){ var ret = "1"; if (document.cookie.indexOf("ga_start") > -1) { ret = "0"; } return ret; }
3. cidをイベントトラッキングで送信後に、送信済みフラグのクッキーを書き込むためのカスタムJavascript変数を作成する。
名前: cid_callback
中身:
function(){ return function(){ document.cookie = "ga_start=1; path=/;"; } }
4. cidをイベントトラッキングで送信するためのトリガーを作成する。
トリガーの名前: gtm_load
種類: ウィンドウの読み込み
トリガーの発生場所: session_start 等しい 1
5. cid計測用のユニバーサルアナリティクスのタグを作る。
直帰率計測に影響が出ないように、「非インタラクションヒット」を「真」にします。
トラッキングタイプ: イベント
非インタラクションヒット: 真
トリガー: gtm_load
詳細設定 > 設定するフィールド
フィールドの名前: hitCallback
値: {{cid_callback}}
カスタムディメンション > 「インデックス番号」を指定して、
ディメンションの値: {{cid}}
以上を追加
これで、GAイベントトラッキングによって最初のページビュー発生直後に1度だけclientIDの値が計測されます。
非インタラクションヒットなので、直帰率計測に影響はありません。
カスタムディメンションにclientIDをセットしたあとに、コールバックで送信済みフラグのクッキーを書き込むので、2ページ目以降はこのイベントは発生しません。
で、カスタムディメンションの有効期限をユーザーにしておけばOK。
セッションでもいいんだけど、セッション跨いでも変わる事ないのでユーザーにしました。
GTMはセッションの開始を判定する機能が今のところないので、上記の通りにcookieを使って判定しました。
弊社ではAdobeAnalytics以外にもGoogleAnalyticsやMouseflowなどのWeb解析ツールの導入支援を行なっております。
お問い合わせはこちらからどうぞ。
ブログへの記事リクエストはこちらまで