GA4のユーザーIDとは何か、なぜ重要なのか
ユーザID(UserID) は企業が自前で発行する「ユーザーを一意に識別する値」です。
GA4のユーザーID機能は、複数のデバイスやセッションにまたがるユーザー行動を統合して計測するための仕組みです。ユーザーが自社サービスの登録アカウントにログインした場合などにユーザーIDを発番することで、異なるデバイスやプラットフォーム間でも同一ユーザーとして追跡できるようになります。
ユーザIDはデバイスやブラウザが変わると変化するクライアントID(GA4がWeb計測で使用するデフォルトの識別子)とは異なります。また、アプリの削除や再インストールによって変更される可能性があるアプリインスタンスID(Firebase / GA4がアプリ計測で使用するデフォルトの識別子)とも異なります。
ClientIDについてはこちら↓
いつ取得するか?
ユーザーIDは、ログインまたはサインアップ完了後、もしくは社内システムからユーザーを一意に識別できる値を取得できたタイミングで設定します。多くの場合、ユーザーIDは、ユーザーに紐づく他の永続的なユーザープロパティとあわせて設定されます。
アプリデータストリームの場合
アプリ(Firebase / GA4)では、Firebaseが提供する専用メソッドを使用することで、
アプリ インスタンス ID がリセットされない限り、再設定することなくデバイスに保持されるユーザーIDを設定できます。
ウェブデータストリームの場合
ウェブでは、ユーザーIDを dataLayer に追加し、Google タグマネージャー(GTM)の設定タグの「設定項目」として実装します。
ここで重要な注意点があります。ユーザーIDはカスタムディメンションではないためイベントプロパティとして設定しないことです。ユーザーIDをイベントパラメータとして送信すると、カーディナリティが極端に高くなり(データ量が多くなるというような意味です)、GA4 管理画面でのレポート表示速度の低下や集計パフォーマンスの悪化を招く可能性があります。
GTM を使う理由
GTM はタグの管理・配信を “コードを書かずに” 一元化できるツールです。UserID を GA4 に渡すためのパラメータは GTM の変数・タグの設定として実装できます。
実装の流れ
1)サイトで UserID を dataLayer に渡すコードを実装する
ログイン完了後など、ユーザー特定が確定したタイミングでサイト側が dataLayer に値を pushします。
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'user_id': 'ログインユーザーの一意ID'
});
※このコードはサイト側への開発実装が必要です。
※Google アナリティクスに送信するUser-IDは 256 文字未満で指定
※ユーザーIDには、メールアドレスや電話番号などの個人を特定できる情報(PII)を含めてはいけません。ユーザーIDは、匿名かつ一意であり、安全に管理された識別子である必要があります。
このコードは、「ログイン済みユーザーの一意IDを、GTM(Google Tag Manager)が読める場所に渡す」ためのものです。1行ずつ、意味をほどいて解説します。
コードの解説
window.dataLayer = window.dataLayer || [];
意味
「dataLayer がまだ存在しなければ、空の配列として作る」という初期化処理です。
なぜ必要?
- GTM は
dataLayerという配列を監視して動きます - もし
dataLayerが未定義のままpushすると JavaScriptエラーになります - そのため 「あればそれを使う/なければ新しく作る」という安全装置として、この1行を最初に書きます
dataLayer.push({
'user_id': 'ログインユーザーの一意ID'
});
意味
dataLayer に「user_id」という情報を追加(push)する、という処理です。
何が起きている?
dataLayerは「イベントや値を積み上げていく箱」push()は「箱に新しい情報を入れる」操作- ここでは次のオブジェクトを入れています:
{
user_id: 'ログインユーザーの一意ID'
}
つまり、
「このユーザーの user_id は ○○です」
という情報を GTM に通知している、ということです。
「ログインユーザーの一意ID」とは?
ここは 文字どおりの固定文字列ではありません。
実際は例えば:
dataLayer.push({
user_id: 'u_123456'
});
や
dataLayer.push({
user_id: '8f3a9c21'
});
のように、あなたのシステム側で管理しているユーザーIDが入ります。
重要なルール
- ×メールアドレス
- ×氏名
- ×電話番号
個人を直接特定できる情報はNG
OKなのは:
- システム内部のID
- ハッシュ化されたID
- 意味を持たないランダムID
2)GTM 側で dataLayer 変数を作成
GTM の「変数」から データレイヤー変数(Data Layer Variable) を作り、名前に user_id を指定します。これで GTM が dataLayer 内の UserID を取り扱えるようになります。
→GTM側での画面操作手順は下記記事を参考にしてください。
https://webtan.impress.co.jp/e/2024/05/09/46960(写真つき)
https://developers.google.com/analytics/devguides/collection/ga4/user-id?hl=ja&client_type=gtm(解説つき-公式)
3)GTM のタグに user_id を送信する
GA4 の設定タグ(Google タグ)に user_id を追加
GTM 内の GA4 設定タグ(Google タグ)の [設定] で、次のパラメータを持つ新しい行を追加します。
- パラメータ名:
user_id - 値: 上記(2)で作成した dataLayer 変数
という形で指定します。これにより、以降送信される全てのイベントに UserID が付与されます。
4)動作確認(Preview / Debug)
GTM のプレビューモードで、UserID が実際に送られているか(DebugView など)を確認します。
UserID は GA4 側の DebugView にイベントパラメータ/ユーザー属性として出てくるはずです。
5)GA4側で活用する
活用前に:レポート用識別子を確認する
プロパティで、User-ID オプションを含むレポート用識別子が使用されていることを確認します。手順は次のとおりです。(公式から引用)
===============
- [管理] の [データの表示] で、[レポート用識別子] を選択します。注: 前のリンクをクリックすると、最後にアクセスしたアナリティクスのプロパティが開きます。プロパティを開くには、Google アカウントにログインする必要があります。プロパティ セレクタでプロパティを変更できます。User-ID オプションを含むレポート用識別子を変更するには、(プロパティ単位): 次の操作を行うには、編集者以上の権限が必要です。
- 次のいずれかを選択します。
- ハイブリッド: ユーザー ID、デバイス ID、モデル化データを評価します
- 計測データ: ユーザー ID、デバイス ID を評価します
- [保存] を選択します
===============
上記設定によってユーザIDが優先されます。
Google アナリティクス 4 には、ウェブサイトを訪問したユーザーを識別する 3 つの方法があります。デバイス、Google シグナル、ユーザIDです。
・「デバイス」とは、基本的にファーストパーティ Cookie を指します。訪問者が Cookie を消去しり、別のデバイスを使い始めたりした場合は、新しいデバイスとして扱われます。
・Googleシグナルは、Google アカウントを使用し、広告のパーソナライズを有効にしているユーザーのデータを使用します。
・訪問者を識別する最も正確な方法はユーザー ID です。
※ユーザーがウェブサイトにログインできる場合にのみ有効です。
ユーザーベースのデータの分析
UserIDのデータを操作したり分析したりする際には、以下の機能を使用できます。
GA4の探索レポートで扱えるようにするカスタムディメンションへの設定はベストプラクティスではNGになっていますこれはイベントのデータ量が増えOther行にデータが集約されるためです。
ユーザー ID のような高基数のカスタム ディメンションを不必要に作成すると、レポートとデータ探索に悪影響が及び、「(other)」行にデータが集約される原因となります。代わりに User-ID 機能を使用してください。(公式ヘルプより)
公式ユースケースは以下になります。
基本レポート、探索レポート、BigQueryそれぞれで活用できます。
| ユースケース | 機能 |
|---|---|
| ユーザー セグメントを探索し、個々のユーザーの利用状況を詳しく確認したい。 | ユーザーデータ探索 |
| ユーザー プロパティを収集してモニタリングし、問題の発生時にはトラブルシューティングを行いたい。また、ウェブサイトやアプリでのユーザーの行動を把握したい。 | DebugView |
| ユーザー ID に基づいて、レポートから重複を除去したい。 | レポート用識別子を確認するGA4 では、レポート用識別子に User-ID が含まれているため、すべてのレポートでユーザー ID の重複除去が可能です。 |
| ログインしているユーザーとログインしていないユーザーを比較したい。 | ログインしているユーザーとログインしていないユーザーを比較する |
| ユーザー ID に基づいて、リマーケティング オーディエンスを作成したい。 | User-ID データに基づいてリマーケティング オーディエンスを作成する |
| ユーザー ID に基づいて、ユーザー単位のデータを確認したい。 | BigQuery ExportGA4 の BigQuery Export では、スキーマにクライアント ID(user_pseudo_id)とユーザー ID(user_id)の両方が含まれます。 |
| アナリティクスのデータとファーストパーティ データ(CRM データなど)を結び付け、オフラインのキーイベントを測定できるようにしたい。 | BigQuery Export |
| GA4 のデータで詳細な分析(ML モデルの実行など)を行い、その結果を Google アナリティクスにインポートしたい。 | BigQuery Export とオフライン イベントデータのインポート |
まとめると・・・ GTM / GA4 側で実装方法は?
- サイトが
dataLayer.push()を実行 - GTM が
user_idを検知 - GTM の「データレイヤー変数」で
user_idを取得 - GA4 タグの
user_idとして送信 - GA4 (BigQuery)でクロスデバイス分析&ログインユーザー分析が可能になる
GA4は「データ蓄積」する装置として利用し、分析はBigQuery×BI環境でと役割分担しましょう。
参考記事
いまさら聞けない! GTMでGA4のUser-IDを設定するには?
User-IDを使用してプラットフォーム間のアクティビティを測定
[GA4] User-ID のベスト プラクティス
お問い合わせ
GTMの実装やサイト分析について相談を承っています。




コメント