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

このページは、ウェブサイト上で独自の同意取得ソリューションを管理し、同意モードを統合したいデベロッパーを対象としています。同意モードについては、 同意モードの概要をご覧ください。同意管理プラットフォーム(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(setDefaultConsentStateupdateConsentState)を使用します。必要に応じて、gtagSet API を使用して ads_data_redaction と URL パススルーを設定できます。

gtag.js

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

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

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

<!-- Send consent updates when users interact with your consent banner -->
<script>
function allConsentGranted() {
  gtag('consent', 'update', {
    'ad_user_data': 'granted',
    'ad_personalization': 'granted',
    'ad_storage'<: '>g<ranted',
    'analytics_storage': 'granted'
  });
}
/s>c<ript>
!-- Invo<ke your consent function when a user> interacts< with y>our ban<ner ->-
body
  ...
  button onclick="allConsentGranted()"Accept all/button
  ...
/body

タグ マネージャー

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

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

ユーザーは、最初の操作後に同意設定を変更できます。たとえば、最初に同意したユーザーが、後でウェブサイトの設定パネルから同意を取り消すこともあります。

gtag.js

同意ステータスをいつでも更新するには、update コマンドを使用します。この コマンドは、同意ステータスの変更( 'granted' から 'denied' への変更など)に使用されます。

例: 同意を取り消す

ユーザーが以前に analytics_storagead_storage に同意していたが、同意を拒否したい場合は、新しい選択を反映した update 呼び出しを送信します。

// User updates their settings to deny consent
gtag('consent', 'update', {
  'analytics_storage': 'denied',
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied'
});

タグ マネージャー

同意モードのテンプレートを使用している場合、ユーザーがバナーまたは設定パネルを操作すると、ユーザーの同意が自動的に更新されます。

同意モードのテンプレートを自分で作成する場合は、ユーザーが新しい設定を確認したときに updateConsentState API を使用して同意ステータスを更新します。

実装に関する注意事項:

  1. 永続性: ユーザーが更新した同意の選択内容が、ファーストパーティ Cookie やローカル ストレージなどに保持され、後続のページ読み込みで正しいステータスが設定されるようにします。
  2. タイミング: サイトの同意設定インターフェースでユーザーが新しい設定を確認したら、すぐに更新コマンドを呼び出します。

実装例

次の例では、同意モードの複数のパラメータがデフォルトで 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_pers<onaliza>t<ion': 'denied',>
<  'analytics_storage': 'denied'
});
/script
!-- Googl>e< tag (g>t<ag.js)> --
script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"
/script
script
  window.dataLayer = window.dataLayer || [];
  f<unction> g<tag(){dataLayer.push(arguments);}

  gtag('js', new Date());
  g>t<ag(>9;config', 'TAG_ID');
/script

!-- Send consent updates when users interact with your consent banner --
script
  function allConsentGranted() {
    gtag('consent', 'update', {
      'ad_<user_da>t<a': 'granted',
      'ad_personalization': 'grante>d<'>;,
      <'ad_storage': 'granted&#>39;,
     < 'a>nalytic<s_sto>rage': 'granted'
    });
  }
/script
!-- Invoke your consent function when a user interacts with your banner --
body
  ...
  button onclick="allConsentGranted()"Accept all/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_personal<ization>&#<39;: '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=
'http<s://www>.<googletagmanager.com/gtm.js?i>d=<'+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'scrip>t<',>'dataLayer','GTM-XXXXXX');/script
!-- End Google Tag Manager --

!-- Send consent updates when users interact with your consent banner --
script
  function allConsentGranted() {
    gtag('consent<9;, >9<;update', {
      'ad_user_data': 'granted',
      >9<;ad_>personali<zation': 'granted',
    >  'ad_<storage>': <'>granted',
      'analytics_storage': 'granted'
    });
  }
/script
!-- Invoke your consent function when a user interacts with your banner --
body
  ...
  button onclick="allConsentGranted()"Accept all/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 に準拠)。リージョン値を使用すると、地域の規制を遵守できます。

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

gtag.js

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

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

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

タグ マネージャー

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

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

地域ごとのデフォルト同意ステータスを設定するコマンドが同じページ内に複数ある場合、該当する中で最も具体的な(狭い)地域指定が優先されます。たとえば、地域 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-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 パススルーを設定するためのコントロールが含まれていることがあります。独自のテンプレート タグを作成している場合、 同意モードのテンプレートを作成するをご覧ください。URL パススルーの設定方法の詳細については、gtagSetカスタム テンプレート API を使用してください。

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

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 は削除されます。また、ネットワーク リクエストも、pagead2.googlesyndication.com などのサードパーティ Cookie を使用しないドメインを介して送信されます。

タグ マネージャー

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

一般的な問題

実装時に発生する一般的な問題について、以下でご確認ください。

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

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

たとえば、Google アナリティクスでは、同意を得ている多くのセッションで session_start イベントが欠落している可能性があります。

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

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

可能であれば、ページのアンロードのかなり前に更新コマンドが記録されるようにしてください。

次のステップ

以前のタグの管理

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

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