GA4クロスドメイン計測の完全ガイド|設定手順からGCLID連携・BigQuery活用まで

Written by
John Doe
公開日
2026-03-24

目次

複数のドメインで運営しているサイトの計測、正しくできていますか?

GA4のクロスドメイン計測は、設定を間違えると「同じユーザーが別人として記録される」という深刻な問題を引き起こします。本記事では、実際に5つのドメインを持つクリニックサイトで設定した経験をもとに、GA4管理画面の設定からGTMのタグ設置、さらにはGCLID連携やBigQuery活用まで、一気通貫で解説します。

クロスドメイン計測とは?なぜ必要なのか

複数ドメインで起きる「別人扱い」問題

たとえば、広告のランディングページが lp.example-clinic.com、本サイトが clinic-tokyo.example.com という構成だったとしましょう。ユーザーがLPから本サイトに遷移すると、GA4はドメインが変わった時点で「別のセッション」として記録します。

つまり、広告LPを見てから本サイトで問い合わせた人がいても、GA4上では「LPを見ただけの人」と「いきなり本サイトに来て問い合わせた人」という2人に分かれてしまうのです。

これではコンバージョン経路の分析がまともにできません。広告の費用対効果も正しく評価できないでしょう。

_glパラメータの仕組み

GA4のクロスドメイン計測は _gl パラメータを使って解決します。ユーザーがドメインAからドメインBに遷移する際、リンクURLに _gl=1*xxxxx*_ga*yyyyy のようなパラメータが自動付与されます。

このパラメータにはGA4のクライアントIDが含まれており、遷移先のドメインがこれを読み取ることで「同じユーザー」として認識できる仕組みです。

クロスドメイン計測の概念図:5つのドメイン間で_glパラメータを使ってユーザーIDを引き継ぐ仕組み
クロスドメイン計測により、複数ドメイン間を移動しても同一ユーザーとして認識される

ただし、この仕組みが動作するには、GA4管理画面とGTMの両方で正しく設定する必要があります。片方だけでは不十分です。

GA4管理画面でのクロスドメイン設定手順

STEP 1: データストリームを開く

GA4の管理画面から、対象プロパティの「データストリーム」を開きます。

  1. GA4管理画面にログイン
  2. 左下の歯車アイコン(管理)をクリック
  3. 「データの収集と修正」>「データストリーム」を選択
  4. 対象のウェブストリームをクリック

ここで重要なのは、クロスドメイン対象のドメインごとにストリームを追加する必要はないということです。ストリームは1つで十分です。クロスドメインの設定は、次のステップで別途行います。

STEP 2: ドメインの設定で対象ドメインを登録

ストリームの詳細画面で、以下の手順で進めます。

  1. 「タグ設定を行う」をクリック
  2. 「ドメインの設定」を選択
  3. 「条件を追加」で対象ドメインを1つずつ登録

たとえば、5ドメイン構成のサイトであれば、以下のように登録します。

マッチタイプ: 含む | 値: lp.example-clinic.com
マッチタイプ: 含む | 値: clinic-tokyo.example.com
マッチタイプ: 含む | 値: clinic-osaka.example.com
マッチタイプ: 含む | 値: seminar.example-clinic.com
マッチタイプ: 含む | 値: www.example-clinic.com

注意: 複数のGA4プロパティがある場合は、すべてのプロパティに同じドメインリストを登録する必要があります。1つでも漏れがあると、そのプロパティではクロスドメイン計測が機能しません。

STEP 3: 動作確認(_glパラメータの確認)

設定後、実際にドメイン間を遷移してURLに _gl パラメータが付与されているか確認しましょう。

  1. ドメインAのページを開く
  2. ドメインBへのリンクをクリック
  3. 遷移先のURLに ?_gl=1*... が付いていれば成功

GA4のリアルタイムレポートでも確認できます。ドメイン間を遷移しても同じセッションとして表示されていれば、クロスドメイン計測は正常に動作しています。

GTMでのタグ設定手順

なぜGTMでの設定も必要なのか

「GA4の管理画面でドメインを登録したから大丈夫」と思いがちですが、それだけでは不十分です。

GA4のドメイン設定は「どのドメインをクロスドメイン対象とするか」を定義するものです。一方、GTMのタグは「そのドメインでGA4の計測コードを実際に動作させる」ためのものです。

つまり、GA4でドメインを登録しても、遷移先のドメインにGTMタグが入っていなければデータは送信されません。両方の設定が揃って初めてクロスドメイン計測が完成します。

GA4とGTMの設定の関係図:両方の設定が揃って初めてクロスドメイン計測が完成する
GA4のドメイン設定とGTMのタグ設置、両方が揃って初めて計測が完成する

Googleタグの追加手順

GTMコンテナ(例: GTM-XXXXXXX)を複数サイトで共有する場合の手順です。

  1. GTMにログインし、対象のコンテナを選択
  2. 「タグ」>「新規」をクリック
  3. タグタイプで「Googleタグ」を選択
  4. タグIDにGA4の測定ID(例: G-XXXXXXXXXX)を入力
  5. トリガーに「Initialization - All Pages」を設定
  6. 分かりやすい名前を付けて保存

複数のサイトに同じGA4プロパティの計測を入れたい場合は、サイトごとにGoogleタグを追加します。すべて同じ測定IDでOKです。トリガーも「Initialization - All Pages」で統一します。

ポイント: トリガーは「All Pages」ではなく「Initialization - All Pages」を選びましょう。Initializationはページ読み込みの最初期に発火するため、他のタグよりも先にGA4が動作し、_glパラメータの受け渡しが確実になります。

プレビューで発火確認 → 公開

タグを追加したら、必ずプレビューモードで動作確認を行いましょう。

  1. GTMの「プレビュー」ボタンをクリック
  2. 対象サイトのURLを入力
  3. Tag Assistantが開くので、追加したタグが「Tags Fired」に表示されているか確認
  4. 問題なければGTMコンテナを公開

すべての対象ドメインで発火確認ができたら、公開して完了です。

実務でハマりやすい4つの落とし穴

実際にクロスドメイン計測を設定した経験から、特にハマりやすいポイントを4つ紹介します。

落とし穴 1: GA4のドメイン設定だけで安心してしまう

GA4の管理画面でドメインを登録して「設定完了」と思ってしまうケースです。前述のとおり、GTMにもタグを設置しなければデータは送信されません。GA4のドメイン設定とGTMのタグ設置はセットで行いましょう。

落とし穴 2: データストリームとクロスドメイン設定を混同する

「クロスドメインだからドメインごとにデータストリームを作る必要があるのでは?」という誤解です。

データストリームはデータの入口の定義です。クロスドメイン設定は「どのドメイン間でユーザーIDを引き継ぐか」の定義です。この2つはまったく別の概念です。

クロスドメイン対象が5ドメインあっても、データストリームは1プロパティにつき1つで問題ありません。

落とし穴 3: 複数プロパティの設定漏れ

運用の都合上、サイトごとにGA4プロパティを分けているケースがあります。この場合、すべてのプロパティにクロスドメイン設定が必要です。

今回の事例では5つのプロパティがあり、そのすべてに同じ5ドメインのリストを登録しました。1つでも漏れがあると、そのプロパティからの遷移時に _gl パラメータが付与されません。

落とし穴 4: 自分自身のドメインをリストに入れ忘れる

意外と見落としがちなのがこれです。

たとえば clinic-tokyo.example.com のプロパティで、クロスドメイン対象として他の4ドメインだけを登録し、clinic-tokyo.example.com 自身を入れ忘れるケースです。自分自身のドメインもリストに含めないと、正しく動作しません。

JotformのhiddenフィールドでGCLIDを取得する方法

なぜフォームでGCLIDの取得が重要なのか

クロスドメイン計測で「どのページを経由したか」は分かるようになりました。しかし、もう一歩踏み込んで「どの広告クリックが、どの問い合わせにつながったか」を個別に追跡したい場合はどうすればよいでしょうか。

ここで必要になるのがGCLID(Google Click Identifier)です。GCLIDはGoogle広告のクリックごとに付与される一意のIDで、これをフォーム送信時に一緒に保存しておけば、問い合わせと広告クリックを1対1で紐づけられます。

hiddenフィールドの設定手順

Jotformの場合、以下の手順でhiddenフィールドを追加します。

  1. Jotformのフォームビルダーを開く
  2. 「フォーム要素を追加」>「Hidden Field」をドラッグ
  3. フィールド名を gclid に設定
  4. 同様に ga_client_id 用のhiddenフィールドも追加

hiddenフィールドはフォーム上に表示されないため、ユーザー体験を損ないません。

JavaScriptでGCLIDをフォームに渡す実装例

広告経由でLPに到達した際のURLには ?gclid=xxxxx というパラメータが付いています。このパラメータをJavaScriptで取得し、hiddenフィールドにセットします。

// URLからGCLIDを取得してhiddenフィールドにセット
(function() {
  var params = new URLSearchParams(window.location.search);
  var gclid = params.get('gclid');

  if (gclid) {
    // Cookieに保存(ドメイン遷移後も保持するため)
    document.cookie = '_gclid=' + gclid
      + ';max-age=2592000;path=/;SameSite=Lax';
  }

  // フォーム送信時にhiddenフィールドへセット
  window.addEventListener('load', function() {
    var savedGclid = gclid
      || getCookie('_gclid');
    var gclidField = document.querySelector(
      'input[name="gclid"]'
    );
    if (gclidField && savedGclid) {
      gclidField.value = savedGclid;
    }
  });

  function getCookie(name) {
    var match = document.cookie.match(
      new RegExp('(^| )' + name + '=([^;]+)')
    );
    return match ? match[2] : null;
  }
})();

ポイント: GCLIDはCookieにも保存しておくことをお勧めします。ユーザーがLP到達後すぐにフォーム送信するとは限りません。Cookieに保存しておけば、別のページに遷移した後でもGCLIDを引き継げます。

GA4のクライアントIDも同様に取得できます。

// GA4クライアントIDを取得
gtag('get', 'G-XXXXXXXXXX', 'client_id', function(clientId) {
  var field = document.querySelector(
    'input[name="ga_client_id"]'
  );
  if (field) {
    field.value = clientId;
  }
});

BigQueryでGCLIDを問い合わせデータに紐づける

テーブル構成

フォームで取得したGCLIDを実際の問い合わせデータと結びつけるために、BigQueryに以下のテーブルを用意します。

jotform_submissions テーブル

Jotformからの送信データを格納します。メールアドレス、電話番号に加え、hiddenフィールドで取得した gclidga_client_id を含みます。

inquiries テーブル

電話問い合わせなど、フォーム経由ではない問い合わせデータを格納します。こちらにはGCLIDが直接含まれないため、突合が必要になります。

メール・電話番号で突合するSQLビュー

Jotformで取得したGCLIDを、電話問い合わせにも紐づけるSQLビューの例です。メールアドレスまたは電話番号で突合します。

SELECT
  i.*,
  j.gclid,
  j.ga_client_id
FROM inquiries i
LEFT JOIN (
  SELECT *,
    REGEXP_REPLACE(phone, r"[-\s]", "")
      AS phone_normalized,
    LOWER(TRIM(email))
      AS email_normalized,
    ROW_NUMBER() OVER (
      PARTITION BY
        LOWER(TRIM(email)),
        REGEXP_REPLACE(phone, r"[-\s]", "")
      ORDER BY submitted_at DESC
    ) AS rn
  FROM jotform_submissions
  WHERE gclid IS NOT NULL
    OR ga_client_id IS NOT NULL
) j
ON (
  (
    LOWER(TRIM(i.email)) = j.email_normalized
    AND j.email_normalized != ""
  )
  OR
  (
    REGEXP_REPLACE(i.phone, r"[-\s]", "")
      = j.phone_normalized
    AND j.phone_normalized != ""
  )
)
AND j.rn = 1

このSQLのポイントは3つあります。

  1. 電話番号の正規化: ハイフンやスペースを除去してから比較します。「090-1234-5678」と「09012345678」を同一として扱うためです。
  2. メールアドレスの正規化: 小文字変換とトリムを行います。大文字・小文字の違いや前後のスペースによる不一致を防ぎます。
  3. ROW_NUMBERによる重複排除: 同じユーザーが複数回フォーム送信した場合、最新の送信データのGCLIDを使用します。

「どの広告 → どの問い合わせ」を一気通貫で追える

GCLIDデータフロー図:Google広告クリックからBigQuery突合までの一連の流れ
広告クリックから問い合わせ紐付けまでの一気通貫のデータフロー

このビューを作成すると、以下のようなデータの流れを1つのテーブルで確認できるようになります。

Google広告クリック(GCLID発行)
  ↓
LP到達(hiddenフィールドにGCLID保存)
  ↓
フォーム送信(GCLID + メール + 電話番号を記録)
  ↓
BigQueryで突合(電話問い合わせにもGCLIDを紐付け)
  ↓
「広告キャンペーンX → 問い合わせID-123」が判明

GA4だけではコンバージョン数の集計しかできませんが、GCLIDを使えば「どのキーワード、どの広告文が、具体的にどの問い合わせを生んだか」まで追跡できます。オフラインコンバージョンのインポートにも活用でき、Google広告の自動入札の精度向上にもつながります。

まとめ

GA4のクロスドメイン計測は、複数ドメインでサイトを運営しているなら必須の設定です。本記事で解説した内容を整理します。

  1. GA4管理画面: データストリームの「ドメインの設定」で対象ドメインをすべて登録する
  2. GTM: 対象ドメインにGoogleタグを設置し、Initialization - All Pagesで発火させる
  3. 落とし穴に注意: GA4設定だけで安心しない、データストリームとの混同、複数プロパティの設定漏れ、自ドメインの登録忘れ
  4. GCLID連携: Jotformのhiddenフィールドで広告クリックIDを取得し、問い合わせと紐づける
  5. BigQuery活用: メール・電話番号で突合するビューを作成し、広告から問い合わせまでを一気通貫で追跡する

特に、GCLID連携とBigQuery活用は多くの解説記事では触れられていない領域です。クロスドメイン計測と組み合わせることで、広告投資の判断精度が大きく向上します。

設定は一度やってしまえば終わりです。まずはGA4のドメイン設定から始めてみてください。

Relation

関連記事

This is some text inside of a div block.

GA4クロスドメイン計測の完全ガイド|設定手順からGCLID連携・BigQuery活用まで

This is some text inside of a div block.
7 min read
Googleタグゲートウェイの解説記事のサムネイル
This is some text inside of a div block.

Googleタグゲートウェイとは?広告計測タグを自社ドメイン経由で配信する無料の仕組み

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

「自動化すべきか」の判断基準|KPIダッシュボードとSNS投稿で学んだ設計思想の違い

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

GA4クロスドメイントラッキングの設定と落とし穴|広告LPから本サイトへのCV計測

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

Lark Bitableを業務データベースとして外部連携する|API活用とNotionとの使い分け

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

サーチコンソールの数字だけでリライト優先順位を決める方法

This is some text inside of a div block.
7 min read

現在【毎月先着5社様】限定無料相談受付ます

大変申し訳ありません。私たちのリソースには限りがあり、一社一社に質の高いサービスを提供するため、現在【毎月先着5社様】限定で、この特別な条件(全額返金保証+無料相談)でのご案内とさせていただいております。

さらに、今このページをご覧のあなただけに、無料相談へお申し込みいただいた方限定で、通常5万円相当の【競合サイト分析&改善提案レポート】を無料でプレゼントいたします。

枠がすぐに埋まる可能性がありますので、お早めにお申し込みください。

プライバシーポリシーに同意し、まずは無料相談をおこないます
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.