google-consent-mode-v2 について
ユーザーの同意状態に応じて Google タグを調整する広告主や実装担当者向けに、Google Consent Mode v2 の設定方法を解説します。パラメータの対応付け、GTM の設定、地域別ルール、検証を扱います。
主な機能
- 01同意状態の初期値と更新の設定
- 02CMP の同意カテゴリとの対応付け
- 03GTM の同意トリガー設定
- 04地域別の初期値の適用
- 05タグとネットワークリクエストの確認
- 06モデリング要件の確認
活用シーン
- 01EEA ユーザー向け Consent Mode v2 の導入
- 02CMP の選択肢と Google タグの対応付け
- 03同意状態とタグ動作のデバッグ
- 04GA4 と Ads の測定設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ privacy-data-protection-skills --skill google-consent-mode-v2インストール後、Claude Code で/google-consent-mode-v2を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/consent_mode_gtag.htmlconsent_mode_gtm.htmlconsent_parameters.mdtemplate.mdreferences/standards.mdworkflows.mdscripts/process.py詳細
Google Consent Mode v2 の設定
概要
Google Consent Mode v2 は、ユーザーの同意状況に応じて Google タグ(Analytics、Ads、Floodlight)の動作を調整するフレームワークです。2023 年 11 月に発表され、2024 年 3 月から適用が開始された Consent Mode v2 では、既存の analytics_storage および ad_storage パラメーターに加えて、ad_user_data と ad_personalization という 2 つの新しいパラメーターが導入されました。欧州経済領域(EEA)のユーザーにサービスを提供する広告主は、Google Ads および GA4 で測定機能とオーディエンス機能を維持するために、Consent Mode v2 の実装が必要です。実装しない場合、Google はリマーケティングリストやコンバージョン測定のために EEA ユーザーのデータを処理しません。
Consent Mode v2 のパラメーター
パラメーターの定義
| パラメーター | 制御対象 | デフォルト | 説明 |
|---|---|---|---|
ad_storage | 広告 Cookie | denied | 広告関連の Cookie(gcl*、IDE)の読み書きを制御します |
ad_user_data | 広告用ユーザーデータ | denied | 広告目的でユーザーデータを Google に送信できるかどうかを制御します |
ad_personalization | 広告のパーソナライズ | denied | リマーケティングやパーソナライズド広告にデータを使用できるかどうかを制御します |
analytics_storage | アナリティクス Cookie | denied | アナリティクス Cookie(_ga、_gid)の読み書きを制御します |
functionality_storage | 機能性 Cookie | granted | 機能性 Cookie(言語設定)を制御します |
personalization_storage | パーソナライズ Cookie | denied | パーソナライズ Cookie(レコメンデーション)を制御します |
security_storage | セキュリティ Cookie | granted | セキュリティ関連の Cookie(認証、不正行為の防止)を制御します |
Pinnacle E-Commerce Ltd の同意状態のマッピング
CMP の同意カテゴリを Consent Mode のパラメーターにマッピングします。
| CMP カテゴリ | ad_storage | ad_user_data | ad_personalization | analytics_storage |
|---|---|---|---|---|
| すべて拒否(デフォルト) | denied | denied | denied | denied |
| アナリティクスのみ | denied | denied | denied | granted |
| アナリティクス+広告 | granted | granted | granted | granted |
| アナリティクス+広告(パーソナライズなし) | granted | granted | denied | granted |
| すべて許可 | granted | granted | granted | granted |
実装
基本的な実装(Google Tag/gtag.js)
ステップ 1:Google タグを読み込む前にデフォルトを設定する
このスクリプトを Google タグより前の <head> に配置します。
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Set default consent state — deny all non-essential before user interaction
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'functionality_storage': 'granted',
'personalization_storage': 'denied',
'security_storage': 'granted',
'wait_for_update': 500 // Wait 500ms for CMP to load
});
// Enable URL passthrough for conversion measurement without cookies
gtag('set', 'url_passthrough', true);
// Enable ads data redaction when ad_storage is denied
gtag('set', 'ads_data_redaction', true);
</script>
ステップ 2:Google タグを読み込む
<script async src="https://www.googletagmanager.com/gtag/js?id=G-PINNACLE123"></script>
<script>
gtag('js', new Date());
gtag('config', 'G-PINNACLE123');
</script>
ステップ 3:ユーザーが CMP を操作したときに同意状態を更新する
// Called by the CMP when user makes a consent choice
function updateGoogleConsent(consentState) {
gtag('consent', 'update', {
'ad_storage': consentState.advertising ? 'granted' : 'denied',
'ad_user_data': consentState.advertising ? 'granted' : 'denied',
'ad_personalization': consentState.personalization ? 'granted' : 'denied',
'analytics_storage': consentState.analytics ? 'granted' : 'denied'
});
}
Google Tag Manager の実装
ステップ 1:Consent Initialization トリガーを設定する
GTM で、デフォルトの同意タグには「Consent Initialization — All Pages」トリガータイプを使用します。このトリガーは、ほかのすべてのトリガーより先に発火します。
デフォルトの同意タグ(Consent Initialization トリガー):
| 設定 | 値 |
|---|---|
| タグタイプ | Google tag: Consent configuration |
| アクション | Default |
| ad_storage | Denied |
| ad_user_data | Denied |
| ad_personalization | Denied |
| analytics_storage | Denied |
| 更新を待機 | 500 ms |
| URL パススルー | Enabled |
| 広告データの編集 | Enabled |
ステップ 2:同意更新タグを設定する
同意変更時に発火するカスタム HTML タグを作成するか、CMP 固有のテンプレートを使用します。
同意更新タグ(カスタムイベントトリガー:consent_update):
| 設定 | 値 |
|---|---|
| タグタイプ | Google tag: Consent configuration |
| アクション | Update |
| ad_storage | {{CMP - Ad Storage Consent}} |
| ad_user_data | {{CMP - Ad User Data Consent}} |
| ad_personalization | {{CMP - Ad Personalization Consent}} |
| analytics_storage | {{CMP - Analytics Storage Consent}} |
ステップ 3:タグの同意設定を構成する
GTM の各 Google タグで、組み込みの同意チェックを設定します。
| タグ | 必須の同意 | 追加の同意 |
|---|---|---|
| GA4 Configuration | analytics_storage | — |
| GA4 Event | analytics_storage | — |
| Google Ads Conversion | ad_storage | ad_user_data |
| Google Ads Remarketing | ad_storage | ad_user_data, ad_personalization |
| Floodlight Counter | ad_storage | ad_user_data |
| Floodlight Sales | ad_storage | ad_user_data |
地域別の設定
ユーザーの地域に応じて異なるデフォルト設定を適用します。
// Strict defaults for EEA users
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'region': ['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR',
'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL',
'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'IS', 'LI', 'NO']
});
// Less restrictive defaults for US users (adjust per state law)
gtag('consent', 'default', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted',
'region': ['US']
});
コンバージョン モデリングと Cookie を使用しない ping
Consent Mode による測定の維持
同意が拒否された場合でも、Google タグは Cookie を使用しない ping を送信します。ping には次の情報が含まれます。
- ページ URL(ads_data_redaction が適用されたもの)
- タイムスタンプ
- ユーザーエージェント
- リファラー(ads_data_redaction が false の場合)
- 同意状態の集計情報
Google は、これらの ping と同意したユーザーのデータを組み合わせて、次の値を推定する機械学習モデルを構築します。
- コンバージョン モデリング:ad_storage に同意しなかったユーザーからのコンバージョン数を推定します
- GA4 の行動モデリング:同意しなかったユーザーの推定ユーザー数とセッション指標を算出します
コンバージョン モデリングの要件
Google がモデル化されたコンバージョンを生成するには、Pinnacle E-Commerce Ltd が次の要件を満たす必要があります。
| 要件 | しきい値 |
|---|---|
| 1 日あたりの同意済みコンバージョンの最小数 | コンバージョン アクションごとに 70 件以上 |
| 1 日あたりのコンバージョンの合計最小数 | コンバージョン アクションごとに 100 件以上 |
| Consent Mode の実装期間 | 7 日間以上連続 |
| タグのカバレッジ | コンバージョンに関係するすべてのページ |
GA4 の行動モデリング
GA4 の行動モデリングは、アナリティクスデータの不足部分を補います。
| 要件 | しきい値 |
|---|---|
| 1 日あたりの同意済みユーザーの最小数 | プロパティごとに 1,000 人以上 |
| データの最小日数 | 7 日間以上連続 |
| Consent Mode のカバレッジ | すべての GA4 ページビュータグとイベントタグ |
検証とデバッグ
Google Tag Assistant による検証
Google Tag Assistant(ブラウザー拡張機能)を使用して、次の点を確認します。
- デフォルトの同意がタグより先に発火する:Tag Assistant のタイムラインで、同意のデフォルト設定が Google タグの設定より先に表示されることを確認します
- CMP の操作時に同意更新が発火する:ユーザーが Cookie バナーを操作したときに、同意更新イベントが表示されることを確認します
- タグの動作が同意状態に一致する:同意状態に基づいて GA4 タグと Ads タグが発火(またはブロック)されることを確認します
リアルタイムデバッグ
GA4 DebugView では、同意の影響を受けるイベントに次の情報が表示されます。
- 現在の同意状態を示す「consent」バッジ
- analytics_storage が拒否された場合に欠落するユーザー ID/セッション ID
- Cookie を使用しない ping を示すインジケーター
ネットワークレベルでの検証
https://www.google-analytics.com/g/collect へのネットワークリクエストを監視します。
| パラメータ | 同意あり | 同意なし |
|---|---|---|
_p(ページ ID) | 存在 | 存在 |
cid(クライアント ID) | _ga cookie から取得 | ヒットごとにランダム生成 |
gcs(同意状態) | G111(すべて許可) | G100(すべて拒否) |
gcd(同意のデフォルト) | 存在 | 存在 |
| 設定される Cookie | _ga、_gid | なし |
EEA の要件(2024年3月)
Google のデジタル市場法(DMA)への準拠要件:
- Consent Mode v2 が必須:EEA のユーザーをターゲットとするすべての広告主は、リマーケティングリストとコンバージョン測定を維持するために Consent Mode v2 を実装する必要があります
- ad_user_data と ad_personalization が必須:新しい v2 パラメータの 2 つを設定する必要があります。省略した場合は「拒否」として扱われます
- 認定済み CMP を推奨:Google は、EU での同意取得に Google 認定の CMP パートナーを使用することを推奨しています
- 同意を得た Enhanced Conversions:Enhanced Conversions(ファーストパーティデータの照合)には、ad_user_data = granted が必要です
主な参考資料
- Google Consent Mode v2 Documentation — 公式の実装ガイド
- Google Tag Manager Consent Configuration — GTM 固有の設定手順
- Google Ads DMA Compliance Guide(2024年3月) — EEA 固有の要件
- EU Digital Markets Act(DMA)Regulation 2022/1925 — Google の同意要件の法的根拠
- ePrivacy Directive 2002/58/EC, Article 5(3) — Cookie 同意の法的根拠
- CJEU Case C-673/17(Planet49) — 同意モードのデフォルト状態に適用される積極的な同意の要件