同意設定を管理する(ウェブ)

このページは、ウェブサイト上で Google タグを管理し、同意モードの統合を検討しているデベロッパーを対象としています。同意モードについては、同意モードの概要をご覧ください。

同意モードを有効にして使用する方法は、同意取得の実装と、使用するタグ設定プラットフォーム(Google タグ マネージャー(GTM)または Google タグ)によって異なります。

  • Google の同意モードに対応している同意管理プラットフォーム(CMP)では、以下を利用可能です。
    • 同意を管理するためのタグの作成に使用する、コミュニティ テンプレート ギャラリーのタグ マネージャー テンプレート。
    • gtag.js を使用して同意を管理するサイト用の JavaScript コード。
  • 同意モードに対応していないカスタム実装と CMP の場合:
    • GTM を使用している場合は、タグ マネージャーの同意に関する API を使用して独自のテンプレートを作成することをおすすめします。こちらのを出発点として参考にしてください。
    • gtag.js を使用する場合は、同意コードを手動でサイトの各ページに直接コマンドとして追加するか、カスタム HTML スニペットに追加する必要があります。

この記事ではベスト プラクティスの概略、および API の例をご紹介します。詳しくは、関連リンクをご覧ください。

始める前に

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

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

  • CMP を使用している場合、同意の更新コマンドは、デフォルトの同意コマンドで指定されているのと同じ地域のユーザーをターゲットとするよう設定する必要があります。 これにより、デフォルトで「拒否」に設定されている同意ステータスをユーザーが更新できるようになります。

  • 独自のテンプレートまたはカスタム HTML タグを作成する場合、コールバックで実行されるコマンドや gtag() を使用するコマンドは、後続のトリガーの配信前に使用可能になるとは限りません。同意に関する情報を可能な限り早く収集できるよう、同意ステータスの設定に Tag Manager Consent API を使うタグ テンプレートを使用または作成してください。

デフォルトの同意ステータスは、組織が必要とするデフォルトに応じて、ページの読み込み時にすぐに設定する必要があります。CMP またはカスタムの同意管理ソリューションでは、該当する同意タイプの同意または拒否をサイト訪問者に促す必要があります。同意モードでは同意内容が保存されないため、同意が指定された後にすべてのページで、なるべく早い段階でユーザーの同意内容に基づいて同意モードの更新コマンドを発行する必要があります。

gtag.js

次のセクションでは、gtag.js を使った例を示します。

使用する同意タイプごとにデフォルト値を設定することをおすすめします。この記事で説明する同意ステータスの値は一例にすぎません。各測定サービスについて、組織のポリシーに沿ったデフォルト同意モードが設定されているかどうか、ご自身の責任でご確認ください。

デフォルトの測定機能を調整するには、サイトのすべてのページで、測定データを送信するコマンド(configevent など)よりも前に gtag('consent', 'default', ...) コマンドを呼び出します。たとえば、複数の同意タイプをデフォルトで拒否するには、次の consent パラメータで指定します。

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

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

以下の例では、ad_storage 値のみが変更されました。analytics_storagedenied に設定されていた場合は、この呼び出しの後も引き続き拒否されます。すべての同意タイプに適切な値が設定されているかどうかは、デベロッパーが確認する必要があります。サポートされているタイプについて詳しくは、API リファレンスをご覧ください。

次のコード例は、ユーザーが広告 Cookie の使用に同意するときに同意ステータスを granted に更新する方法を示しています。

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

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

非同期で読み込まれる CMP をご利用の場合、必ずしも 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
});

タグ マネージャー

タグ マネージャーを実装する場合は、コミュニティ テンプレート ギャラリーの同意モード テンプレートを使用して同意を管理することをおすすめします。タグ マネージャーの同意に関する API を使用して独自のテンプレートを作成する方法については、同意モードのテンプレートを作成するをご覧ください。

注:

  • タグ設定に GTM を利用するサイトでの同意モードの実装では、同意ステータスの管理に GTM 専用の API(setDefaultConsentState および updateConsentState)を使用する必要があります。必要に応じて、gtagSet API を使用して ads_data_redaction と URL パススルーを設定できます。

  • updateConsentState の代わりに gtag('consent','update',...) メソッドを使用するのはやめましょう。処理順が他の保留中のメッセージの後になってしまうため、後続のイベントの開始までに処理できない可能性があります。詳しくは、データレイヤー情報の処理方法をご覧ください。

実装例

次の例では、同意モードの複数のパラメータがデフォルトで 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 ユーザーの同意ポリシーの適用を強化しています。 同意モードをご使用の場合は、ad_storageanalytics_storage に加えて 2 つの新しいパラメータを送信する必要があります。

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

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

  • 特定の地域での動作を設定する。
  • ユーザーが Cookie の使用に同意しなかった場合に、広告クリック、クライアント ID、セッション ID の情報を URL で受け渡す。
  • ユーザーが広告 Cookie に同意しなかった場合に、広告の情報を完全に編集(削除)する。

地域別の動作

特定の地域のユーザーに対するタグのデフォルトの動作を変更するには、同意コマンドで地域を指定します。地域の値を指定することで、ユーザーの地理的位置に基づいてデフォルト設定を微調整できます。地域の識別について詳しくは、地域 ID をご覧ください。

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 および 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 に設定します。

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

タグ マネージャー

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

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

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

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

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

  1. タグ マネージャーで、[設定フィールド] に移動します。
  2. [設定フィールド] が展開されたら、[行を追加] をクリックします。
  3. [フィールド名] に、次のように適切な値を入力します。
    • Google アナリティクス: GA4 設定タグの場合は、「url_passthrough」と入力します。
    • Google アナリティクス: ユニバーサル アナリティクス タグで Google アナリティクス設定変数を使用している場合は、「urlPassthrough」と入力します。
  4. [] に「true」と入力します。
  5. タグを保存して公開します。

または、サイト内のすべてのページで、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 を使わないドメインを介して送信されます。

タグ マネージャー

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

タグ マネージャーには、同意設定に応じたタグの動作を管理するための機能がいくつか用意されています。タグ マネージャーには、「同意の初期化」トリガー、同意管理のタグ設定、[同意の概要] ページがあります。複数の第三者同意管理プロバイダが、自社のサービスに同意モードとの統合を組み込んでいます。タグ マネージャーの同意機能の詳細

同意モードの設定を検証してデバッグするには、Tag Assistant の使用をおすすめします。Tag Assistant では、同意ステータスが設定および更新されているかや、それがどのように行われているかを確認できます。Tag Assistant では以下がサポートされています。

詳しくは、Tag Assistant での同意モードのデバッグをご覧ください。

同意モード テンプレートを使用しない場合は、ブラウザのデベロッパー ツールを使用して同意設定を分析することができます。

同意設定を分析するには:

  1. [要素] タブのバーに「dataLayer」と入力します。次のことを確認してください。

    • default コマンドが、他のすべての Google イベントよりも前に配置されている。
    • 同意ステータスが、ユーザーの操作に応じて設定され、update コマンドで設定されている。
    • タグが、必要な同意設定が満たされた場合にのみ配信される。
    • ads_data_redactionurl_passthrough はどちらも、ユーザーが指定した設定に基づいて設定されている。
    1. [ネットワーク] タブで次の操作を行います。
    • 同意ステータスの URL に gcs= パラメータがあるかどうかを確認します。gcs パラメータの形式は gcs=G1 [ad_storage][analytics_storage] です。
    • 提供された同意に基づいて適切な gcs= パラメータ値を確認します。ad_storageanalytics_storage の値は次のいずれかです。
    意味
    G100 ad_storageanalytics_storage の両方を拒否。
    G110 ad_storage を同意、analytics_storage を拒否。
    G101 ad_storage を拒否、analytics_storage を同意。
    G111 ad_storageanalytics_storage の両方を同意。
    G1-- サイトで ad_storageanalytics_storage の同意設定が必須でない。
    • ads_data_redactiontrue に設定されている場合に、Cookie のないドメイン(googlesyndication.com など)が使用されていることを確認します。
    • url_passthroughtrue に設定されていて、_gl リンカー パラメータが存在する場合(例: https://www.example.com/?_gl=1*abcde5*)、gclid / dclid が送信 URL に追加されていることを確認します。

以前のタグの管理

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

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