※本ページにはプロモーション(広告)が含まれています
Google Tag Manager(GTM)で同意モードv2(Consent Mode v2)を実装しようとしたとき、「タグが発火しない」「consent_update が記録されない」「GA4のデータが消えた」といったエラーに直面したことはありませんか?
2024年3月からEU向けサービスでは同意モードv2への対応が必須となり、2026年現在も多くのサイト運営者が実装トラブルに悩んでいます。本記事では、GTM同意モードv2の実装エラーの原因を体系的に解説し、確実に動作させるための対処法を完全網羅します。

この記事でわかること
- 同意モードv2の仕組みと必須パラメータ
- よくある実装エラー5パターンとその原因
- GTMでの正しい設定手順(ステップ別)
- CMP連携時のトラブル対処法
- デバッグツールを使った確認方法
同意モードv2の基礎知識
同意モードv2とは何か
同意モードv2(Consent Mode v2)は、Googleが提供するプライバシー保護フレームワークです。ユーザーがCookie利用に同意しない場合でも、同意なしの集計データ(モデリングデータ)を使ってコンバージョン計測を補完する仕組みです。
v1からv2への主な変更点は、ad_user_dataとad_personalizationという2つの新しいパラメータが追加されたことです。これらはGoogleの広告パーソナライズと広告データ活用の同意を個別に制御します。
同意モードv2の6つのパラメータ
| パラメータ名 | 役割 | v2新規 |
|---|---|---|
analytics_storage |
GA4などの分析Cookie利用 | v1から継続 |
ad_storage |
広告Cookie利用 | v1から継続 |
functionality_storage |
機能Cookie(ログイン保持等) | v1から継続 |
personalization_storage |
パーソナライズCookie | v1から継続 |
ad_user_data |
広告目的のユーザーデータ送信 | v2新規 |
ad_personalization |
リターゲティング広告 | v2新規 |
同意モードv2の実装フロー
同意モードv2の実装は大きく3段階に分かれます。まず「デフォルト同意状態の設定」で、ページ読み込み時に全パラメータをdeniedに設定します。次に「CMPバナーの表示」でユーザーに同意を求め、最後に「同意更新」でユーザーの選択に応じてgtag('consent', 'update', {...})を呼び出します。
よくある実装エラーと原因
エラー1: デフォルト同意設定がGTMより遅れて実行される
最も多いエラーが「初期化順序の問題」です。GTMのスクリプトが読み込まれた後にgtag('consent', 'default', {...})が実行されると、GTMはすでにデフォルト状態(パラメータ未設定=許可扱い)でタグを発火してしまいます。
症状: プレビューモードで consent_default イベントが記録されない、または analytics_storage が常に “granted” になっている。
原因: HTMLの<head>内でGTMスクリプトより後にCMPのJSが読み込まれている。
エラー2: ad_user_data / ad_personalization が未設定
v1時代の実装をv2に移行する際、古い2パラメータのみを設定して新しい2パラメータを追加し忘れるケースが非常に多いです。
症状: Googleタグ診断ツールで「同意モードv2未対応」と警告が出る。Google広告のコンバージョンデータが減少している。
原因: デフォルト同意設定にad_user_dataまたはad_personalizationが含まれていない。
エラー3: CMPのコールバック関数が正しく呼ばれない
Cookiebot、OneTrust、TrustArcなどのCMP(同意管理プラットフォーム)を使用している場合、CMP固有のイベントフックに合わせてconsent updateを呼び出す必要があります。CMPのバージョンアップでAPIが変わることもあります。
症状: ユーザーが同意してもconsent_updateイベントが発火しない。GTMのデバッガーで consent update が表示されない。
エラー4: GTMのビルトイン同意変数が未設定
GTM内で同意状態に基づいてタグを制御する場合、「ビルトイン変数」の「同意の状態」を有効化する必要があります。これを忘れると、同意に基づいたトリガー条件が機能しません。
エラー5: DataLayer の push タイミング問題
SPA(シングルページアプリケーション)やReact/Next.jsで構築されたサイトでは、コンポーネントのマウント後にDataLayerへpushされるケースがあり、GTMのファイアリング順序がずれることがあります。

GTM同意モードv2の正しい実装手順
ステップ1: HTMLのheadタグ最上部にデフォルト同意を設定
GTMスクリプトより前に、以下のコードを<head>の最上部に配置します。
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// デフォルト同意: GTMより前に必ず実行
gtag('consent', 'default', {
'analytics_storage': 'denied',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'functionality_storage': 'denied',
'personalization_storage': 'denied',
'wait_for_update': 500
});
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){...})</script>
<!-- End Google Tag Manager -->
ステップ2: CMPのコールバックで consent update を呼び出す
Cookiebotを例にした実装です。
window.addEventListener('CookiebotOnAccept', function() {
gtag('consent', 'update', {
'analytics_storage': Cookiebot.consent.statistics ? 'granted' : 'denied',
'ad_storage': Cookiebot.consent.marketing ? 'granted' : 'denied',
'ad_user_data': Cookiebot.consent.marketing ? 'granted' : 'denied',
'ad_personalization': Cookiebot.consent.marketing ? 'granted' : 'denied',
'functionality_storage': Cookiebot.consent.preferences ? 'granted' : 'denied',
'personalization_storage': Cookiebot.consent.preferences ? 'granted' : 'denied'
});
});
window.addEventListener('CookiebotOnDecline', function() {
// 拒否時は全て denied のまま
gtag('consent', 'update', {
'analytics_storage': 'denied',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied'
});
});
ステップ3: GTMでビルトイン同意変数を有効化
GTM管理画面で「変数」→「組み込み変数の設定」を開き、「同意」セクションにある以下の変数をすべてチェックします。
- 広告ストレージ
- 分析ストレージ
- 広告ユーザーデータ
- 広告のパーソナライズ
ステップ4: タグの同意チェックを設定
GTMの各タグ設定画面で「同意の設定」タブを開き、そのタグが要求する同意タイプを指定します。GA4タグであれば「分析ストレージ」、Google広告タグであれば「広告ストレージ」「広告ユーザーデータ」を設定します。
ステップ5: GTMプレビューモードで動作確認
GTMの「プレビュー」ボタンでデバッグセッションを開始し、以下のイベントが正しい順序で記録されているか確認します。
- Consent Initialization – デフォルト同意が設定されること
- Page View – ページ読み込み
- consent_update – ユーザーが同意バナーを操作した後
CMPツール別の対処法比較
| CMPツール | GTM連携方法 | 注意点 |
|---|---|---|
| Cookiebot | CookiebotOnAccept イベント | GTMテンプレートギャラリーに公式テンプレートあり |
| OneTrust | OptanonWrapper 関数 | グループIDとパラメータのマッピングが必要 |
| TrustArc | truste.eu.bindMap | Enterprise契約が必要な場合あり |
| Usercentrics | UC_UI_INITIALIZED イベント | GTMテンプレートギャラリーに公式テンプレートあり |
| カスタムCMP | 独自イベント + dataLayer.push | 開発者と連携して実装が必要 |
デバッグツールの使い方
Google Tag Assistantによる確認
Chrome拡張機能「Google Tag Assistant」をインストールし、サイトを開くと同意モードの状態をリアルタイムで確認できます。各パラメータが「granted」または「denied」のどちらになっているかが一目でわかります。
Chrome開発者ツールのコンソールで確認
ブラウザのコンソールに以下を入力すると、現在の dataLayer の状態を確認できます。
// dataLayer全体を表示
console.log(window.dataLayer);
// 同意関連イベントのみフィルタ
window.dataLayer.filter(e => e.event && e.event.includes('consent'))
GA4のデバッグビューで確認
GA4の管理画面で「DebugView」を有効にし、Chrome拡張機能「GA Debugger」を使うと、consent_update イベントが GA4 に届いているかリアルタイムで確認できます。

よくあるエラーメッセージと対処法
| エラー / 症状 | 原因 | 対処法 |
|---|---|---|
| Consent Initializationが表示されない | GTM前にデフォルト設定がない | headの最上部に移動 |
| タグが発火しない | 同意チェックが blocked になっている | タグの「同意の設定」を確認 |
| GA4のセッション数が激減 | analytics_storage が常時 denied | consent update が呼ばれているか確認 |
| 広告のコンバージョンが計測されない | ad_user_data が未設定 | v2の新パラメータを追加 |
| SPA でページ遷移後に計測が止まる | ルート変更で dataLayer がリセット | 各ルート遷移後に consent default を再設定 |
この記事に関連するおすすめ商品
Webアナリティクス 実践ガイド本
約2,500円〜
GA4・GTMの設定から分析まで網羅
プライバシー対応 Webサービス解説書
約3,000円〜
GDPRと同意管理の実務対応
GTM・GA4 タグ管理 実務本
約2,800円〜
タグ設計から運用まで現場で使えるノウハウ
※ 価格は変動します。最新価格はリンク先でご確認ください
よくある質問(FAQ)
Q: 日本のサイトでも同意モードv2は必要ですか?
A: EU居住者にサービスを提供している場合は必須です。日本国内のみのサービスでも、Google広告のコンバージョンモデリング精度向上のために実装を推奨します。2026年現在、Google広告の最大限のパフォーマンスを発揮するには同意モードv2が実質必須となっています。
Q: 同意モードを実装するとGA4のデータが減りますか?
A: 短期的にはユーザーが「拒否」を選んだ場合のデータは取得できなくなります。ただし、Googleのモデリング機能により、拒否したユーザーの推定データが補完されるため、長期的には精度の高い分析が可能になります。
Q: wait_for_update の値はいくつが適切ですか?
A: 一般的には500〜2000(ミリ秒)が推奨されます。CMPの読み込みが遅い場合は値を大きくしますが、大きすぎるとページパフォーマンスに影響します。500から試して、プレビューモードで consent update が捕捉されているか確認してください。
Q: GTMテンプレートギャラリーのCMPテンプレートを使うべきですか?
A: 対応するCMPの公式テンプレートがギャラリーにある場合は積極的に活用してください。実装の複雑さが大幅に軽減され、CMP側のアップデートにも追随しやすくなります。
Q: consent mode の設定は公開環境に適用されるのですか?テスト環境では?
A: GTMのプレビューモードは本番公開とは独立しているため、テスト環境でもプレビュー機能を使えば確認できます。ただし、GTMコンテナを公開(Publish)するまで本番環境には反映されません。
Q: WordPress サイトの場合、どのプラグインが対応していますか?
A: 「Cookiebot」「Cookie Notice」「GDPR Cookie Consent」などのプラグインが同意モードv2に対応しています。GTM連携機能を持つプラグインを選ぶと、カスタムコードなしで設定できる場合があります。
まとめ
Google Tag Manager 同意モードv2の実装エラーの多くは、初期化順序の問題とv2新パラメータの追加漏れが原因です。本記事のポイントをまとめます。
- GTMスクリプトより前に
gtag('consent', 'default', {...})を配置する ad_user_dataとad_personalizationの2つのv2新パラメータを必ず含める- CMPのコールバック関数内で
gtag('consent', 'update', {...})を呼び出す - GTMのビルトイン同意変数を有効化し、各タグに同意チェックを設定する
- GTMプレビューモードで Consent Initialization → consent_update の順序を確認する
正しく実装すれば、プライバシーを守りながらデータ品質を最大化できます。ぜひ本記事の手順を参考に、同意モードv2の導入を完了させてください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!