コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Google Tag Manager で Google Analytics 4のユーザスコープのカスタムディメンションを設定する場合は変数を使わないとできない

Googleタグになってからの設定方法がわかりにくいものが多かったのでメモとして。

ユーザスコープのカスタムディメンションとは

GoogleAnalytics4(以下GA4)ではユーザの属性情報などを設定できる「ユーザスコープのディメンション」があるが、独自でディメンションを設定したいときにユーザスコープのカスタムディメンションを使うことができる。 イベントのディメンションなどと異なるのは、ユーザそのものの属性なので、逐一イベント情報としてセットしなくても、ユーザ単位で情報を整理することができる。 たとえばユーザディメンションとして性別などの情報をもっているので、わざわざ毎イベントに性別情報をイベントディメンションとしてセットしなくてもユーザに一度付与するだけで探索に扱うことができる。

なお性別などは従来のディメンションとして用意されているので、公式のヘルプに入れたいものがないかを確認すると良いです。

Google Tag Manager(GTM)でのカスタムディメンションの設定方法

Google Tag Manager(以下GTM)でユーザーのカスタムディメンションを送付するには大きく3つのステップを踏みます。

  1. 送りたいユーザーの情報をGTMで取得できるようにDataLayerにpushする記述を追加する
  2. DataLayerの情報を拾い上げて変数として取得できるようにする
  3. GA4を実行するタグ(Googleタグ)の設定値として「Googleタグ:イベントの設定」変数で設定値を作る
  4. 送信の動作確認をする
  5. GA4側のユーザカスタムディメンションの設定を追加する

今回は udemae_rank というユーザスコープのカスタムディメンションをGA4で設定することを想定して例示を付記します。

1. 送りたいユーザーの情報をGTMで取得できるようにDataLayerにpushする記述を追加する

GTMに読み取る情報を設定する仕組みとして「DataLayer」という仕組みが存在している。DataLayerの情報設定は今回の本筋ではないので割愛するが、詳しくは公式のドキュメント を参照していただきたいです。

GTMで読み込む値として datalayer_udemae_rank という値をDataLayerの値として設定する場合、以下の内容を計測したいページに書き込みます。(細かい位置や制約などは公式ドキュメント参照のこと)

dataLayer.push({'datalayer_udemae_rank': 'B+'});

2. DataLayerの情報を拾い上げて変数として取得できるようにする

GTMではdataLayerの値をGTM上の変数として取り扱う設定があります。こちらも本筋ではないので詳しい説明は割愛しますが、「変数」→「ユーザ定義変数」の新規ボタン→鉛筆マークから「データレイヤーの変数」で設定を作ることができます。このとき読み込みたいデータレイヤー変数の名前を設定して取得できるようにします。

先程の例を踏襲すると、データレイヤーの変数名として datalayer_udemae_rank を記述します。名前は自由につけて問題ないのですが、例では「送信用データレイヤ変数」としています。

GTM上でdataLayerから取得した値を「送信用データレイヤ変数」として定義

3.GA4を実行するタグ(Googleタグ)の設定値として「Googleタグ:イベントの設定」タグで設定値を作る

計測をするためのGA4のタグと連動させます。前提としてGTMでGA4のタグを設定しておく必要があります。

従来GTMを使う場合は、GA4のタグの埋め込み自体はページ事に行うのではなくGTM側から埋め込みます。もし、GA4のタグをGA4で発行できるスニペットを使って埋め込んでいる場合はできないためGTM側にGA4の設定をする記述に変更してください。

2024年6月現在、GTMでGA4の設定をする場合は「Googleタグ」を作って設定します。

Google タグを選んで設定を作成する

このGoogleタグはGA4のタグを設定することができる設定情報になります。こちらも本筋ではないので割愛しますが、公式のドキュメントが非常に分かりづらいのでアユダンテさんの「[GTM] 新しいGA4のタグ設定の仕方 | アユダンテ株式会社」を参照にしてみてください。

このGoogleタグを設定すると、GA4の基本的な動作がするようになります。上記の参照ドキュメントにも記載はあるのですが、この「Googleタグ」の設定項目を調整するとユーザースコープのカスタムディメンションが送信されるようになります。

ユーザースコープのカスタムディメンションの設定方法

Googleタグには共通して送信するイベントの設定をする項目があります、それが「共有イベントの設定」です。そこに「イベントの設定変数」という項目があります。 ここにはGTM側の変数として「Googleタグ:イベントの設定」の変数が設定することができます。

Googleタグ:イベントの設定」には通常のイベント送信情報である「イベントパラメータ」の欄もあるのですが、ユーザスコープの内容を設定したい場合は Google Analytics User Properties の欄の方の設定を追記します。

今回は udemae_rank を送信したいので先ほど設定した「送信用データレイヤ変数」を値にセットし、プロパティ名を送信したいパラメータ名である udemae_rank に設定します。

GA4側で受け取ってほしいパラメータ名を記述して設定する

変数を作成したら、先程設定したGoogleタグ側の設定にも以下のように設定します。

Googleタグ側の「イベントの設定変数」に先程の設定を追加する

これでdataLayer.pushから拾い上げた値をGA4側へ送信できます。

4.送信の動作確認をする

動作確認をする場合は、「タグマネージャーのプレビュー」と「GA4のDebugView」を使うことで、ユーザープロパティの値として設定されているかを確認できます。事例ベースでの説明は割愛しますが、使い方の説明などは以下のアユダンテさんのサイト参照のこと。

5.GA4側のユーザカスタムディメンションの設定を追加する

GTM側で送信するだけしかしていないので、GA4側で利用できるようにカスタムディメンションの設定を追加してあげる必要がある。詳しくはこちらもアユダンテさんのサイト参照のこと。

Google アナリティクス 4 プロパティ(GA4)にカスタムディメンション / カスタム指標が登場! | アユダンテ株式会社

今回の場合は udemae_rank を追加してあげたいので、以下のスクショのような設定を追記してあげる。

範囲をユーザーにして作成する

なお、このカスタムディメンション設定前に到達したイベントは記録されないのでお気をつけください。

関連リンク