ウェブサイトで同意モードを設定する

このページは、ウェブサイトで独自の同意ソリューションを管理し、同意モードを統合したいデベロッパーを対象としています。同意モードについては、同意モードの概要をご覧ください。同意管理プラットフォーム(CMP)を使用してユーザーの同意を取得する場合は、CMP を使用して同意モードを設定する方法をご覧ください。

同意モードは、基本の実装方法または高度な実装方法で導入できます。実装方法と設定するデフォルトを選択するには、会社のガイドラインを確認してください。詳しくは、基本の同意モードと高度な同意モードをご覧ください。

始める前に

同意モードを実装する前に、次の点を考慮してください。

  • タグ マネージャーを使用していて、独自のバナーを維持したい場合は、タグ マネージャー コンテナからバナーを読み込むことをおすすめします。これを行うには、同意モードのテンプレートを作成する必要があります。また、コミュニティ テンプレート ギャラリーの同意モード テンプレートを使用することもできます。

  • gtag.js を使用している場合は、ウェブサイトのすべてのページに Google タグが設定されていることを確認してください。同意モードのコードは、ウェブサイトの各ページに追加されます。

同意モードを設定するには、次の操作を行う必要があります。
  1. ユーザーが同意する前に、デフォルトの同意ステータスを設定します。
  2. 同意設定に対するユーザー インタラクションに基づき、同意ステータスを更新する

使用する同意タイプごとにデフォルト値を設定します。同意モードの値はデフォルトでは設定されていません。

サイト訪問者に同意モードのバナーを表示する地域に対して、デフォルトの同意設定を適用することをおすすめします。これにより、同意モードのバナーを必要とする地域での測定を維持し、Google タグが各地域に基づいて動作を調整できるようになります。また、同意モードのバナーがない、または適用されていないために測定されなくなる事態を防ぐこともできます。地域別の動作をご覧ください。

gtag.js

デフォルトの測定機能を調整するには、サイトのすべてのページで、測定データを送信するコマンド(configevent など)よりも前に gtag('consent', 'default', ...) コマンドを呼び出します。

たとえば、デフォルトですべてのパラメータに同意ステータスを拒否する方法は次のとおりです。

gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});

省略可: 非同期型の同意管理プラットフォームとの統合

非同期で読み込まれるバナーは、Google タグの前に実行されない場合があります。このような状況に対処するには、wait_for_update にミリ秒単位の値を指定して、データ送信までの待機時間を調整します。

たとえば、あるページでデフォルトでは ad_storage を拒否したうえで、CMP が同意ステータスを更新することを許可するには、wait_for_update を使用します。次のコードでは、デフォルトで ad_storagedenied に設定され、タグが配信される前に gtag('consent', 'update', ...) を呼び出すために、同意ツールに 500 ミリ秒の待機時間が与えられています。

  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'wait_for_update': 500
  });

タグ マネージャー

Google タグ マネージャーを使用する場合は、タグ マネージャーの同意に関する API を使用して独自のテンプレートを作成します。次のを出発点として参考にしてください。

同意ステータスの管理に、タグ マネージャー専用の API(setDefaultConsentState および updateConsentState)を使用します。必要に応じて、gtagSet API を使用して ads_data_redaction と URL パススルーを設定できます。

gtag.js

ユーザーの同意ステータスを送信するには、update コマンドを使用します。同意モードでは同意の選択内容が保持されないため、ユーザーが同意管理ソリューションを操作したらすぐに同意ステータスを更新します。ユーザーの同意が得られたら、その選択内容を保持して、後続のページで適切に更新コマンドを呼び出します。

すべての同意タイプに適切な値が設定されているかどうかは、デベロッパーが確認する必要があります。サポートされているタイプについて詳しくは、API リファレンスをご覧ください。

次のコード例は、ユーザーがすべてのオプションに同意するときに同意ステータスを granted に更新する方法を示しています。

<script>
function allConsentGranted() {
  gtag('consent', 'update', {
    'ad_user_data': 'granted',
    'ad_personalization': 'granted',
    'ad_storage': 'granted',
    'analytics_storage': 'granted'
  });
}
</script>
<!-- Invoke your consent function when a user interacts with your banner -->
<body>
  ...
  <button onclick="allConsentGranted()">Yes</button>
  ...
</body>

タグ マネージャー

同意モードのテンプレートを使用すると、ユーザーがバナーを操作したときにユーザーの同意が自動的に更新されます。

同意モードのテンプレートを自分で作成する場合は、同意ステータスの管理にタグ マネージャー専用の API(setDefaultConsentState および updateConsentState)を使用します。必要に応じて、gtagSet API を使用して ads_data_redaction と URL パススルーを設定できます。

実装例

次の例では、同意モードの複数のパラメータがデフォルトで denied に設定されています。ユーザーが同意に関する選択を表明すると、関連するパラメータが granted に更新されます。

gtag.js

ここでは、コードの順序が重要です。同意コードを不適切な順序で呼び出すと、同意のデフォルト設定が機能しなくなります。詳細はビジネスの要件によって異なる可能性がありますが、基本的にはコードは次の順序で実行する必要があります。

  1. Google タグを読み込みます。これがデフォルトのスニペット コードになります。デフォルトのスニペットを更新(下を参照)して、gtag('consent', 'default', ...) への呼び出しを含めます。

  2. 同意取得ソリューションを読み込みます。非同期で読み込まれる同意取得ソリューションをご利用の場合は、非同期型の同意管理プラットフォームとの統合を参照して、適切な順序で処理を行う方法を確認してください。

  3. 同意取得ソリューションで処理されない場合は、ユーザーが同意を示した後で gtag('consent', 'update', ...) を呼び出します。

<script>
// Define dataLayer and the gtag function.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

// Set default consent to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID">
</script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  gtag('js', new Date());
  gtag('config', 'TAG_ID');
</script>

<!-- Create one update function for each consent parameter -->
<script>
  function consentGrantedAdStorage() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage">Yes</button>
  ...
</body>

タグ マネージャー

タグ マネージャーを使用しているサイトでは、CMP を使用してユーザーの同意内容の更新を処理することをおすすめします。CMP では、同意モードを管理するタグを作成するためのコミュニティ テンプレート ギャラリーのテンプレートが用意されています。

テンプレートを使用できない場合は、次のようにページのコードを更新できます。ここでは、コードの順序が重要です。同意コードを不適切な順序で呼び出すと、同意のデフォルト設定が機能しなくなります。

<script>
  // Define dataLayer and the gtag function.
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // Set default consent to 'denied' as a placeholder
  // Determine actual values based on your own requirements
  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'analytics_storage': 'denied'
  });
</script>

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

<!-- Create one update function for each consent parameter -->
<script>
  function consentGrantedAdStorage() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage()">Yes</button>
  ...
</body>

Google は、プライバシーを重視したデジタル広告エコシステムへの継続的な取り組みの一環として、EU ユーザーの同意ポリシーの適用を強化しています。

詳しくは、欧州経済領域(EEA)内のトラフィックに使用する同意モードの更新をご覧ください。

同意モードをご使用の場合は、ad_storageanalytics_storage に加えて 2 つの新しいパラメータを送信する必要があります。

フィールド名 使用できる値 説明
ad_user_data 'granted' | 'denied' 広告に関連するユーザーデータを Google に送信するための同意を設定します。
ad_personalization 'granted' | 'denied' パーソナライズド広告への同意を設定します。

高度な同意機能に含まれるのは次のような機能です。

  • Google タグ マネージャーの管理画面で、データを共有する Google サービスを設定する。
  • 特定の地域での動作を設定する。
  • ユーザーが Cookie の使用に同意しなかった場合に、広告クリック、クライアント ID、セッション ID の情報を URL で受け渡す。
  • ユーザーが広告 Cookie に同意しなかった場合に、広告の情報を完全に編集(削除)する。

地域別の動作

特定の地域からの訪問者に適用されるデフォルト同意ステータスを設定するには、gtag 同意デフォルト コマンドで地域(ISO 3166-2 に準拠)を指定します。地域(region)値を使用することで、地域ごとの規則を遵守することができます。

特定の地域にデフォルトを設定し、他のすべての地域に別のデフォルトを設定できます。地域パラメータのない gtag 同意ステータスのデフォルト コマンドは、別の地域固有のコマンドで指定されていないすべてのサイト訪問者のデフォルトを設定します。

gtag.js

次の例では、スペインとアラスカのユーザーに対して analytics_storagedeniedに設定し、すべてのユーザーに対して ad_storagedenied に設定します。

  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'region': ['ES', 'US-AK']
  });

  gtag('consent', 'default', {
    'ad_storage': 'denied'
  });

タグ マネージャー

テンプレートを使用してタグを作成している場合は、地域固有の動作を設定する機能を利用できる場合があります。独自のテンプレート タグを作成している場合、地域固有の動作を設定する方法の詳細については、同意モードのテンプレートを作成するをご覧ください。

最も具体的なパラメータが優先

デフォルトの同意コマンドが同じページに 2 つ存在し、それぞれのコマンドで特定の地域とそれよりも狭い地域に対する値が設定されている場合は、より狭い地域の値が優先されます。たとえば、地域 US の ad_storagegranted に設定し、地域 US-CA の ad_storagedenied に設定している場合、カリフォルニア州からのユーザーにはより具体的な US-CA の設定が適用されます。この例では、US-CA からアクセスするユーザーに対して ad_storagedenied に設定されます。

地域 ad_storage 動作
US 'granted' カリフォルニア州以外の米国のユーザーに適用されます
US-CA 'denied' US-CA(米国カリフォルニア州)のユーザーに適用されます
指定なし 'granted' デフォルト値の 'granted' が使用されます。この例は、US および US-CA 以外からのユーザーに適用されます

広告クリック、クライアント ID、セッション ID の情報を URL で受け渡す

ユーザーが広告をクリックしてウェブサイトにアクセスしたときに、その広告に関する情報をクエリ パラメータとしてランディング ページ URL に追加できます。キーイベント データの精度を高めるために、この情報は通常、ドメインのファーストパーティ Cookie に保存されます。

ただし、ad_storagedenied に設定されている場合、この情報はローカルには保存されません。ad_storagedenied に設定されているときの広告クリックの測定品質を向上させるには、URL パススルーを使って、広告クリックに関する情報を URL パラメータを介してページ間で受け渡すことも可能です。

同様に、analytics_storagedenied に設定されている場合、URL パススルーを使うことで、イベントやセッションに基づく分析データ(キーイベントなど)を、Cookie を使わずにページ間で受け渡すことができます。

URL パススルーを使用するには、次の条件を満たしている必要があります。

  • 同意ステータスに応じた動作が可能な Google タグがページに設置されている。
  • 広告主が URL パススルー機能を有効にしている。
  • ページに同意モードが実装されている。
  • リンク先のドメインが現在のページのドメインと同じである。
  • URL に GCLID ないし DCLID が含まれている(Google 広告および Floodlight のタグのみ)

gtag.js

この機能を有効にするには、url_passthrough パラメータを true に設定します。デフォルト スニペットの中で、すべての config コマンドよりも前に次のコマンドを追加します。

gtag('set', 'url_passthrough', true);

タグ マネージャー

テンプレートを使用してタグを作成している場合は、URL パススルーを設定するためのコントロールが含まれていることがあります。独自のテンプレート タグを作成している場合、gtagSet カスタム テンプレート API を使用して URL パススルーを設定する方法の詳細については、同意モードのテンプレートを作成するをご覧ください。

または、次のオプションを使用して、コンバージョン リンカーまたはアナリティクス タグ(あるいはその両方)で設定することもできます。

Google 広告タグと Floodlight タグの場合:

この機能を有効にするには、コンバージョン リンカー タグを作成(または既存のものを使用)して、[すべてのページ URL でリンクを有効化] をオンにします。コンバージョン リンカー タグを作成する手順については、基本設定をご覧ください。

Google アナリティクス タグの場合:

  1. タグ マネージャーで、[設定するフィールド] に移動し、[**タグの設定

    設定するフィールド**。

    1. [設定フィールド] が展開されたら、[行を追加] をクリックします。
    2. [フィールド名] に「url_passthrough」と入力します。
    3. [] に「true」と入力します。
    4. タグを保存して公開します。

    または、サイト内のすべてのページで、GTM インストール スニペットよりも前に url_passthrough パラメータを true に設定します。

    window.dataLayer = window.dataLayer || [];
    function gtag(){window.dataLayer.push(arguments);}
    gtag('set', 'url_passthrough', true);
    

    URL パススルーを使用している場合は、ユーザーがウェブサイト上のページを移動していくにつれ、リンクに次のようなクエリ パラメータが付加される場合があります。

    • gclid
    • dclid
    • gclsrc
    • _gl
    • wbraid

    最善の結果を引き出すには、次の項目を実施するようにしてください。

    1. サイト上でリダイレクトする際は、上記のクエリ パラメータをすべて渡します。
    2. ご利用の分析ツールで、ページの URL に含まれるこれらのパラメータが無視されるようにします。
    3. これらのパラメータがサイトの動作を妨げないようにします。

広告データを削除する

ad_storagedenied の場合、広告を掲載する目的で新しい Cookie が設定されることはありません。また、すでに google.com と doubleclick.net で設定されていたサードパーティ Cookie が、スパムや不正行為の対策以外の目的で使用されることもありません。ただし、Google にはページの完全な URL が送信され、これには URL パラメータ内の広告クリック情報が含まれます。

gtag.js

ad_storagedenied の場合に広告データをさらに削除するには、ads_data_redactiontrue に設定します。

gtag('set', 'ads_data_redaction', true);

ads_data_redactiontruead_storagedenied が設定されている場合、Google 広告タグと Floodlight タグのネットワーク リクエストで送信される広告クリック ID は削除されます。また、ネットワーク リクエストも Cookie を使わないドメインを介して送信されます。

タグ マネージャー

テンプレートを使用してタグを作成している場合は、広告データをさらに削除するコントロールを使用することもできます。独自のテンプレート タグを作成している場合、広告データを削除する方法の詳細については、同意モードのテンプレートを作成するをご覧ください。

一般的な問題

高度な同意モードを実装する場合は、ユーザーが同意したページで更新コマンドを呼び出す必要があります。

同意が拒否された状態でページが読み込まれ、同意の変更後に同意が許可された状態でページが再読み込みされると、Google タグで元のページの重要なデータポイントが失われる可能性があります。以降のレポートは不完全になる可能性があります。

たとえば、Google アナリティクスでは、同意済みのセッションの多くに session_start イベントが含まれていない可能性があります。

この問題を回避するには、ユーザーの同意ステータスが変更されるたびに update コマンドを呼び出します。

同意タイプが拒否から許可に更新された場合、Google タグはこの更新に基づいて測定値を送信することがあります。ページがアンロードされるときに更新コマンドが呼び出されると、ブラウザは完了前にこのネットワーク トラフィックをキャンセルする可能性があります。以降のレポートは不完全になる可能性があります。

可能であれば、ページがアンロードされる前に更新コマンドが適切に記録されるようにします。

次のステップ

以前のタグの管理

以前のタグ(ga.js、analytics.js、conversion.js など)を使用している場合は、gtag.js または Google タグ マネージャーに更新します。

以前のタグのプライバシー管理の詳細については、次のドキュメントをご覧ください。