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

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

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

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

この記事では、ベスト プラクティスを概略し、API の例を挙げます。関連情報については、以下をご覧ください。

始める前に

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

  • デフォルトの同意設定は、サイト訪問者全員を対象に行うのではなく、特定の地域ごとに設定にすることをおすすめします。これにより、同意モードのデフォルトを「拒否」に設定している、同意モードのバナーが不要な地域のユーザーも逃さずに測定できます。詳しくは、地域別の動作をご覧ください。

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

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

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

gtag.js

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

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

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

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

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

更新は、すべてのページでできるだけ早く渡してください。ユーザーの同意が得られたら、その選択内容を保持して、後続のページで適切に更新コマンドを呼び出します。同意モードでは同意内容が保存されないため、同意が指定された後にすべてのページで、なるべく早い段階でユーザーの同意内容に基づいて同意モードの更新コマンドを発行する必要があります。

この例では、ハードコードされた「granted」または「denied」値を使用していますが、実際には、同意管理ソリューションによって収集されたユーザーの実際の同意に基づいて、実行時に値を決定する必要があります。ユーザーが広告 Cookie を許可した場合に同意を反映するコードは次のようになります。

gtag('consent', 'update', {
  'ad_storage': 'granted'
});

非同期で読み込まれる 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',...) メソッドを使用するのはやめましょう。処理順が他の保留中のメッセージの後になってしまうため、後続のイベントの開始までに処理できない可能性があります。詳しくは、データレイヤー情報の処理方法をご覧ください。

実装例

次の例では、デフォルトで ad_storagedenied に設定しています。ad_storage で提供される機能にユーザーが同意すると、その値が 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);}

// Default ad_storage to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag('consent', 'default', {
  'ad_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>

<!-- Update this section based on your business requirements. -->
<script>
  function consentGranted() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>

<body>
  ...
  <button onclick="consentGranted">Yes</button>
  ...
</body>

タグ マネージャー

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

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

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

  // Default ad_storage to 'denied'.
  gtag('consent', 'default', {
    'ad_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 -->

<!-- Update this section based on your business requirements -->
<script>
  function consentGranted() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>

<body>
  ...
  <button onclick="consentGranted">Yes</button>
  ...
</body>

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

  • 特定の地域での動作を設定する。
  • ユーザーが 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'
});
``` #### Most specific takes precedence

If two default consent commands occur on the same page with values for a
region and subregion, the one with a more specific region will take effect.
For example, if you have `ad_storage` set to `granted` for the region US and
`ad_storage` set to `denied` for the region US-CA, a visitor from California
will have the more specific US-CA setting take effect. For this example,
that would mean a visitor from US-CA would have `ad_storage` set to
`denied`.

<table>
<tr>
<th>Region</th>
<th><code>ad_storage</code></th>
<th>Behavior</th>
</tr>
<tr>
<td>US</td>
<td><code>'granted'</code></td>
<td>Applies to users in the US that are <em>not</em> in CA</td>
</tr>
<tr>
<td>US-CA</td>
<td><code>'denied'</code></td>
<td>Applies to users US-CA</td>
</tr>
<tr>
<td>Unspecified</td>
<td><code>'granted'</code></td>
<td>
  Uses the default value of <code>'granted'</code>. In the example, applies to visitors that aren't in the US or in US-CA
</td>
</tr>
</table>

タグ マネージャー

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

広告クリック、クライアント 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.  Redirects on your site pass all the above query parameters.
  1. ご利用の分析ツールで、ページの URL に含まれるこれらのパラメータが無視されるようにします。
  2. これらのパラメータがサイトの動作を妨げないようにします。

広告データを削除する

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 タグ マネージャーをご利用ください。

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