はじめに

「UAからGA4に移行したはずなのに、セッション数が半分以下になっている」 「カスタムイベントがGA4のレポートに一切表示されない」 「コンバージョンの数値がUAのときと全然合わない」

GA4への移行後、こうした”データが取れていない問題”に直面しているWeb担当者は少なくありません。原因はGA4の仕様変更だけでなく、GTM(Googleタグマネージャー)の設定ミスやフィルタの影響など多岐にわたります。

本記事では、GA4移行後のデータ欠損を特定・解決するためのデバッグ手順を、チェックリスト形式で解説します。

チェック1:GA4設定タグが全ページで発火しているか

最も基本的かつ見落としやすいポイントです。

GTMのプレビューモードを使って確認します。

  1. GTM管理画面で「プレビュー」をクリック
  2. 対象サイトのURLを入力してデバッグを開始
  3. Tag Assistantで「Google Analytics: GA4 Configuration」タグが Tags Fired に表示されているか確認
  4. トップページだけでなく、下層ページ・商品詳細ページ・カートページなど複数のページで発火を確認

💡 補足

トリガーが「All Pages」になっていても、GTMコンテナのスニペット自体がページに埋め込まれていなければタグは発火しません。CMSのテンプレート変更やテーマ更新で消えていないか、HTMLソースも確認しましょう。

チェック2:測定ID(Measurement ID)が正しいか

GA4の測定IDは G-XXXXXXXXXX の形式です。UAのトラッキングID(UA-XXXXXXX-X)と混同していないかを確認します。

GTMのGA4設定タグを開き、測定IDフィールドの値を確認してください。

// GA4設定タグのフィールド例
// 正しい: G-ABC123DEF4
// 間違い: UA-12345678-1(これはUA用のID)

GA4の管理画面 → データストリーム → ウェブストリームの詳細で、正しい測定IDを確認できます。

⚠️ 注意

測定IDがGTM変数で動的に設定されている場合、プレビューモードで実際に展開される値を確認してください。変数の参照先が空になっているケースがあります。

チェック3:カスタムイベントがUAから正しく移行されているか

UAとGA4ではイベントの構造が根本的に異なります。UAの「カテゴリ・アクション・ラベル」はGA4には存在しません。

UA(旧)GA4(新)
Category: “video” / Action: “play” / Label: “intro”Event name: “video_play” / Parameters: video_title=“intro”
Category: “form” / Action: “submit”Event name: “form_submit”
Category: “download” / Action: “click”Event name: “file_download”

GTMでUA用に作成していたイベントタグをそのまま残していても、GA4にはデータが送信されません。GA4用のイベントタグを別途作成する必要があります。

// GA4イベントタグの設定例(GTM)
// タグの種類: Google Analytics: GA4 イベント
// 設定タグ: GA4設定タグを選択
// イベント名: video_play
// イベントパラメータ:
//   video_title = {{Click Text}}
//   video_url = {{Click URL}}

チェック4:クロスドメイントラッキングの設定

複数ドメインをまたぐサイト構成(例:メインサイト → カートシステム → 決済ページ)の場合、クロスドメイン設定が必須です。

GA4の管理画面で設定します。

  1. 管理 → データストリーム → 対象のウェブストリームを選択
  2. 「タグ設定を行う」→「ドメインの設定」
  3. 対象ドメインを追加

💡 補足

GA4ではクロスドメイントラッキングの設定方法がUAと異なり、GTM側ではなくGA4の管理画面側で行います。GTMのリンカータグ(UA用)は不要です。

チェック5:GA4のフィルタ設定

GA4にはデフォルトで「内部トラフィック」フィルタが存在します。これがテスト中のまま有効になっていると、社内からのアクセスが除外されます。

確認手順:

  1. GA4管理 → データ設定 → データフィルタ
  2. 「Internal Traffic」フィルタのステータスを確認
  3. 「テスト」状態であれば本番データには影響しないが、「有効」になっていれば除外される

⚠️ 注意

開発者トラフィックフィルタも確認してください。debug_mode パラメータが付与されたヒットが除外される設定になっている場合があります。

チェック6:データストリームの拡張計測機能

GA4のデータストリームには「拡張計測機能」があり、ページビュー・スクロール・離脱クリック・サイト内検索・動画エンゲージメント・ファイルダウンロードを自動で計測します。

この機能がオフになっていると、該当イベントが一切記録されません。

  1. GA4管理 → データストリーム → ウェブストリームを選択
  2. 「拡張計測機能」のトグルを確認
  3. 個別のイベント(スクロール、離脱クリックなど)のオン/オフも確認

GTMでこれらのイベントを独自に計測している場合は、拡張計測と重複しないように注意してください。

チェック7:同意モード(Consent Mode)とCookieバナー

GDPR対応やCookieバナーを導入している場合、同意モード(Consent Mode)の設定によってタグの発火がブロックされている可能性があります。

// Consent Modeの基本設定例(GTMカスタムHTML)
gtag('consent', 'default', {
  'analytics_storage': 'denied',
  'ad_storage': 'denied'
});

// ユーザーが同意した後
gtag('consent', 'update', {
  'analytics_storage': 'granted',
  'ad_storage': 'granted'
});

GTMのプレビューモードで「Consent」タブを確認し、GA4タグが analytics_storage: granted の状態で発火しているかを確認してください。

同意が取れていない状態では、GA4はCookieなしのモデリングデータのみを記録します。これにより、見かけ上のセッション数が大幅に減少することがあります。

GA4 DebugViewの活用

GA4には専用のリアルタイムデバッグツール「DebugView」があります。

  1. GTMプレビューモードでサイトにアクセス(自動的に debug_mode=true が付与される)
  2. GA4管理画面 → 管理 → DebugView を開く
  3. イベントがリアルタイムで表示される
  4. 各イベントをクリックすると、パラメータの詳細を確認できる

DebugViewで確認すべきポイント:

  • イベント名が想定通りか
  • パラメータの値が正しく送信されているか
  • page_view が各ページ遷移で発生しているか

Chrome DevToolsのNetworkタブで確認

より詳細なデバッグが必要な場合、Chrome DevToolsのNetworkタブでGA4のリクエストを直接確認できます。

  1. Chrome DevTools(F12)を開く
  2. Networkタブを選択
  3. フィルタに collect と入力
  4. google-analytics.com/g/collect へのリクエストを探す
  5. リクエストのQuery Stringパラメータを確認
// Networkタブで確認すべき主要パラメータ
// tid: 測定ID(G-XXXXXXXXXX)
// en: イベント名(page_view, click など)
// ep.XXX: イベントパラメータ
// _dbg: 1(デバッグモード有効時)

リクエストが一切飛んでいない場合は、GTMスニペットの読み込み自体に問題がある可能性があります。

BigQueryエクスポートとGA4 UIのデータ差異

GA4のレポート画面でデータが少なく見える場合、それがデータ処理の遅延によるものかどうかを切り分ける必要があります。

  • GA4リアルタイムレポート: 数秒〜数分の遅延
  • GA4標準レポート: 24〜48時間の処理遅延が発生することがある
  • BigQueryエクスポート: 日次エクスポートは翌日、ストリーミングエクスポートは数分〜数時間

💡 補足

「昨日のデータがレポートに反映されていない」と慌てる前に、48時間待ってから再度確認してください。特にトラフィックが少ないプロパティでは処理が遅れる傾向があります。

BigQueryにエクスポートしている場合は、以下のSQLで直接データの存在を確認できます。

-- BigQueryでイベント数を日別に確認
SELECT
  event_date,
  COUNT(*) AS event_count
FROM
  `your_project.analytics_XXXXXXXXX.events_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20260325' AND '20260329'
GROUP BY
  event_date
ORDER BY
  event_date

GA4 UIとBigQueryで大きな差異がある場合は、フィルタやサンプリングの影響を疑ってください。

まとめ

GA4移行後のデータ欠損は、単一の原因ではなく複数の設定ミスが重なっていることが多いです。本記事のチェックリストを上から順に確認することで、問題の切り分けと解決が可能です。

デバッグの優先順位:

  1. GTMプレビューでタグの発火を確認
  2. 測定IDとイベント設定の確認
  3. フィルタ・同意モードの確認
  4. DebugView・DevToolsでデータ送信の確認
  5. BigQueryで実データの存在を確認