お悩み相談を頂きました。「Googleアナリティクスで会員・非会員を記録するには?」です
Googleアナリティクスで「会員か非会員か」の情報を格納したい場合があると思います。
しかし一体どうやって格納するのがベストなのでしょうか?
Contents
カスタムディメンションに格納します
標準で準備されていない項目に関してはカスタムディメンションかカスタム指標を作成します。
まずはこの違いを理解することが大事。
指標(メトリック)は数値で表現されます。PV=10やUU=20やセッション=30など。
一方、ディメンションは文字列で表されます。地域=東京/大阪や言語=日本語/英語やブラウザ=Chrome/safariや時間帯など。
このように考えると簡単ですね。
会員は?
もちろん会員/非会員で表されるのでディメンションです。なのでカスタムディメンションを作成します。
カスタムディメンションの作成方法
左メニューの管理をクリックし、プロパティの下にある「カスタム定義」から「カスタムディメンション」をクリックします。
「新しいカスタムディメンション」をクリックし、
カスタムディメンションを追加します。名前は何でも大丈夫です。日本語もOK。
範囲(スコープ)は迷いどころです。ここでは4つのスコープが定義されています。Googleのヘルプによると、それぞれの違いは下記のように定義されています。
- ヒット – 値は、設定された 1 つのヒットにのみ適用されます。
- セッション – 1 回のセッションのすべてのヒットに値が適用されます。
- ユーザー – 現在と将来のセッションのすべてのヒットに値が適用されます(値が変わるか、カスタム ディメンションがアクティブでなくなるまで適用されます)。
- 商品 – 値は、設定されている商品(拡張 e コマースのみ)に適用されます。
では会員であるか否か、のスコープは何が良いでしょうか?
一度でもログインしたら、そのユーザはセッションが変わっても「会員として記録する」ならば、スコープはユーザにします。これが一般的だと思います。
もしくは同一セッション内でもログインするまでは非会員、ログインしたら会員として分析したい場合もあるかもしれません。この場合はスコープをセッションにすると良いと思います。
作成ボタンを押して完成します。
実際に会員か非会員かのデータを飛ばしてみます
新規で実装する場合、やり方は2つ。一つはgtag.jsをサイトに貼り、その下にカスタムディメンションにデータを飛ばすコードを書く方法。
もう一つはGoogle tag managerを用いてgaのタグおよびカスタムディメンションの値を飛ばす方法です。
ここでは一つずつ解説します。
gtag.jsをサイトに直貼りする方法
まずheadタグの開始直後に下記のようなgtag.jsを貼り付けます。このコードは管理>プロパティ>トラッキング情報>トラッキングコードから取得してください
1 2 3 4 5 6 7 8 | <script async src="https://www.googletagmanager.com/gtag/js?id=UA-45576507-4"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-45576507-4'); </script> |
その後、カスタムディメンションの値を飛ばすタイミングで、下記のようなコードを出力します。
スコープがユーザなのであれば、ログインした直後に一度だけ飛ばせばOKです。
一度「会員」としてセットされれば、その人がその後何回訪問しても「会員」として記録され続けます。
1 2 3 4 5 6 7 8 | <script> gtag('config', 'UA-45576507-4', { 'custom_map': {'dimension1': 'is_member'} }); // Sends the custom dimension to Google Analytics. gtag('event', 'member_dimention', {'is_member': true, 'non_interaction': true}); </script> |
ちなみに、このコード。
googleアナリティクスの開発者向け資料を読みながら書いているのですが、若干修正した方が良い箇所が。
それはnon_interactionの箇所。サンプルではnon_interactionに対してtrueの値を飛ばしていませんが、これは飛ばした方が良いでしょう。
詳しくは別の会で触れますが、これを飛ばさないと「1ページしか見ていないのに非直帰ユーザとして記録される」ということが起きるかもしれません。
こちらにGoogleの説明があります。
Googleタグマネージャーを利用してカスタムディメンションを飛ばす場合
Googleタグマネージャーを利用してGAタグを発火させる方法はこちらを参照ください。
基本的な設定ができている前提で、カスタムディメンションの追加方法を説明します。
やり方・考え方としては
- Googleタグマネージャーにデータレイヤーのカスタム変数を作成
- 既存のGAタグに上記カスタム変数をカスタムディメンションに渡すよう設定
- サイト上でログイン後にデータレイヤーで値を出力
という順番になります。一つずつ見ていきましょう。
まずGoogleタグマネージャー上でカスタム変数を作成します。
左メニューから「変数」をクリックし、ユーザ定義変数の新規作成をクリック。
変数の名前は何でも良いのですが、ここではis_memberにしました。変数タイプは「データレイヤーの変数」 。
こんな感じで設定します。
次に左メニューのタグから、すでに発火させているGAのタグを開きます。
詳細設定を開くとカスタムディメンションがあるので、こちらのインデックスとディメンションの値を設定します。
ディメンションの値は先ほどカスタム変数で設定した値にします。
インデックスに1となっているのは、Googleアナリティクス上でカスタムディメンションを作成した際に、インデックスが1になっていたからです。
最後にサイト上でデータレイヤーの設定をします。このデータレイヤーの設定はGoogleタグマネージャのJSより前に呼ばれる必要があります。なるべくhead内の頭の方に記載してください。
1 2 3 4 5 6 | <script> window.dataLayer = window.dataLayer || []; dataLayer.push({ 'is_member': 'true' }); </script> |
会員がログインした直後に一回だけ、このコードを出力してください。そうすればこのユーザは今後メンバーとしてトラッキングされ続けます。
では問題ないか確認しましょう
オススメのデバッグ方法はこちらで解説しているGoogle Analytics Debuggerです。
やり方は色々ありますが、これが一番間違いありません。
さて、下記キャプチャ。上から5行目に”dimenstion1″:”true”とあります。また、下の方でもdimensions1の値がtrueになっています。これで間違いなくカスタムディメンション1にtrueが飛んでいます。
ちなみに会員・非会員のトラッキングをする場合、このデータレイヤーを通して値を飛ばすのはログイン直後の1回のみ。他の時はデータレイヤーの値を空にするなどすれば良いと思います。こんな感じで。
1 2 3 4 5 | <script> window.dataLayer = window.dataLayer || []; dataLayer.push({ }); </script> |
その場合、上の方でdimension1がundefinedになります。そして実際にgoogleに送られるbeaconにはdimension1の値は何も送られていないことがわかります。(clientIdの下にあったdimension1が無くなっています。項目自体が送られていないことがわかります。)
実際にGoogleアナリティクス上で見てみましょう
一番簡単なのはセカンダリディメンションで見るパターン。例えば行動>すべてのページのセカンダリディメンションを開いていくと「カスタムディメンション」の中に「会員」というものがあると思います。
これをクリックすると、会員がどのコンテンツをよく見ているのか、などが分かります。
また、カスタムレポートを作っても良いかもしれません。
下記のような設定にすれば、会員・非会員別にページビュー数とユーザー数を簡単に確認することができるレポートができます。