複数のドメインで運営しているサイトの計測、正しくできていますか?
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が含まれており、遷移先のドメインがこれを読み取ることで「同じユーザー」として認識できる仕組みです。

ただし、この仕組みが動作するには、GA4管理画面とGTMの両方で正しく設定する必要があります。片方だけでは不十分です。
GA4管理画面でのクロスドメイン設定手順
STEP 1: データストリームを開く
GA4の管理画面から、対象プロパティの「データストリーム」を開きます。
- GA4管理画面にログイン
- 左下の歯車アイコン(管理)をクリック
- 「データの収集と修正」>「データストリーム」を選択
- 対象のウェブストリームをクリック
ここで重要なのは、クロスドメイン対象のドメインごとにストリームを追加する必要はないということです。ストリームは1つで十分です。クロスドメインの設定は、次のステップで別途行います。
STEP 2: ドメインの設定で対象ドメインを登録
ストリームの詳細画面で、以下の手順で進めます。
- 「タグ設定を行う」をクリック
- 「ドメインの設定」を選択
- 「条件を追加」で対象ドメインを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 パラメータが付与されているか確認しましょう。
- ドメインAのページを開く
- ドメインBへのリンクをクリック
- 遷移先のURLに
?_gl=1*...が付いていれば成功
GA4のリアルタイムレポートでも確認できます。ドメイン間を遷移しても同じセッションとして表示されていれば、クロスドメイン計測は正常に動作しています。
GTMでのタグ設定手順
なぜGTMでの設定も必要なのか
「GA4の管理画面でドメインを登録したから大丈夫」と思いがちですが、それだけでは不十分です。
GA4のドメイン設定は「どのドメインをクロスドメイン対象とするか」を定義するものです。一方、GTMのタグは「そのドメインでGA4の計測コードを実際に動作させる」ためのものです。
つまり、GA4でドメインを登録しても、遷移先のドメインにGTMタグが入っていなければデータは送信されません。両方の設定が揃って初めてクロスドメイン計測が完成します。

Googleタグの追加手順
GTMコンテナ(例: GTM-XXXXXXX)を複数サイトで共有する場合の手順です。
- GTMにログインし、対象のコンテナを選択
- 「タグ」>「新規」をクリック
- タグタイプで「Googleタグ」を選択
- タグIDにGA4の測定ID(例:
G-XXXXXXXXXX)を入力 - トリガーに「Initialization - All Pages」を設定
- 分かりやすい名前を付けて保存
複数のサイトに同じGA4プロパティの計測を入れたい場合は、サイトごとにGoogleタグを追加します。すべて同じ測定IDでOKです。トリガーも「Initialization - All Pages」で統一します。
ポイント: トリガーは「All Pages」ではなく「Initialization - All Pages」を選びましょう。Initializationはページ読み込みの最初期に発火するため、他のタグよりも先にGA4が動作し、_glパラメータの受け渡しが確実になります。
プレビューで発火確認 → 公開
タグを追加したら、必ずプレビューモードで動作確認を行いましょう。
- GTMの「プレビュー」ボタンをクリック
- 対象サイトのURLを入力
- Tag Assistantが開くので、追加したタグが「Tags Fired」に表示されているか確認
- 問題なければ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フィールドを追加します。
- Jotformのフォームビルダーを開く
- 「フォーム要素を追加」>「Hidden Field」をドラッグ
- フィールド名を
gclidに設定 - 同様に
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フィールドで取得した gclid と ga_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つあります。
- 電話番号の正規化: ハイフンやスペースを除去してから比較します。「090-1234-5678」と「09012345678」を同一として扱うためです。
- メールアドレスの正規化: 小文字変換とトリムを行います。大文字・小文字の違いや前後のスペースによる不一致を防ぎます。
- ROW_NUMBERによる重複排除: 同じユーザーが複数回フォーム送信した場合、最新の送信データのGCLIDを使用します。
「どの広告 → どの問い合わせ」を一気通貫で追える

このビューを作成すると、以下のようなデータの流れを1つのテーブルで確認できるようになります。
Google広告クリック(GCLID発行)
↓
LP到達(hiddenフィールドにGCLID保存)
↓
フォーム送信(GCLID + メール + 電話番号を記録)
↓
BigQueryで突合(電話問い合わせにもGCLIDを紐付け)
↓
「広告キャンペーンX → 問い合わせID-123」が判明GA4だけではコンバージョン数の集計しかできませんが、GCLIDを使えば「どのキーワード、どの広告文が、具体的にどの問い合わせを生んだか」まで追跡できます。オフラインコンバージョンのインポートにも活用でき、Google広告の自動入札の精度向上にもつながります。
まとめ
GA4のクロスドメイン計測は、複数ドメインでサイトを運営しているなら必須の設定です。本記事で解説した内容を整理します。
- GA4管理画面: データストリームの「ドメインの設定」で対象ドメインをすべて登録する
- GTM: 対象ドメインにGoogleタグを設置し、Initialization - All Pagesで発火させる
- 落とし穴に注意: GA4設定だけで安心しない、データストリームとの混同、複数プロパティの設定漏れ、自ドメインの登録忘れ
- GCLID連携: Jotformのhiddenフィールドで広告クリックIDを取得し、問い合わせと紐づける
- BigQuery活用: メール・電話番号で突合するビューを作成し、広告から問い合わせまでを一気通貫で追跡する
特に、GCLID連携とBigQuery活用は多くの解説記事では触れられていない領域です。クロスドメイン計測と組み合わせることで、広告投資の判断精度が大きく向上します。
設定は一度やってしまえば終わりです。まずはGA4のドメイン設定から始めてみてください。

