注意:此开发者网站正在向 developers.google.com/tag-platform 迁移,2021 年 9 月 30 日起系统会将您重定向到新的网址

根据用户意见调整代码行为

根据配置的产品和功能,Google 衡量产品会使用读取和写入 Cookie 等机制,或发送 HTTP 请求来为分析、转化衡量和再营销提供支持。

这些机制可以配置为仅以知晓意见的方式使用。例如,您可以对 Google 代码进行配置,使其在征得用户同意之前不读取或写入 Cookie。如果采用知晓意见的方式,那么在征得用户同意之前,代码的功能将受到限制。征得用户同意后,系统会根据您所选的行为更新方式恢复相关功能。

以下产品支持根据用户的同意情况调整代码行为:

  • Google Ads
  • Floodlight
  • Google Analytics(分析)
  • 转化链接器

使用页内代码配置意见征求方式

必须在网站的每个网页上配置知晓意见的代码行为。在每个网页上,通常有两个时间点可以配置代码行为:

  1. 网页加载时

    网页加载时,您只应使用符合用户预期的衡量功能。这可以通过 gtag('consent', 'default', ...) 命令进行配置。

  2. 访问者表示同意后或在用户意见状态已知的情况下

    访问者表示同意后(或者保留了上次网页加载时的用户意见状态),请通过 gtag('consent', 'update', ...) 命令启用他们已同意接受的衡量功能(例如,读取/写入 Cookie)。

配置默认行为

要调整默认的衡量功能,您需要在代码触发前,在网站的每个网页上执行以下操作:

  1. 确保已定义 dataLayer 变量。
  2. 确保已定义 gtag 函数。
  3. 使用 gtag('consent', ...) 命令设置衡量功能。
  4. 使用 dataLayer.push 发送 default_consent 事件。

例如,要在默认情况下拒绝 ad_storageanalytics_storage,请运行以下代码:

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

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

dataLayer.push({
  'event': 'default_consent'
});

这会将 'ad_storage''analytics_storage' 的默认值设为 'denied'。如需了解与支持的键有关的全部详情,请参阅 API 参考文档中的意见征求

更新行为

当您的用户表示同意(通常是通过与意见征求横幅互动表明),或通过上次网页加载得知用户意见状态后,请使用 gtag('consent', 'update', ...) 命令更新您的代码行为。例如,对于已同意使用广告 Cookie 的用户,请运行以下代码:

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

只有向 update 调用提供的字段会更改。在上面的代码中,只有 'ad_storage' 的值发生了变化。如果将 'analytics_storage' 设置成了 'denied'(如配置默认行为中所示),则在此调用后它将被拒绝。您需确保为所有意见征求键设置了正确的值。如需了解与支持的键有关的全部详情,请参阅 API 参考文档中的意见征求

应尽快在每个网页上调用此命令。在用户表示同意后,您应保留他们的选择,并据此在后续网页上调用更新命令。

实现示例

默认情况下,以下示例会将 'ad_storage' 设置为 'denied'。在用户同意 'ad_storage' 后台的功能后,它会更新为 'granted'

此处代码的顺序非常重要。如果不按顺序调用意见征求代码,您的意见征求默认值将不起作用。代码运行的具体顺序会因业务需求而异,但一般来说,您的代码应按以下顺序运行:

  1. 加载您的代码段。您应更新默认代码段(见下文),以定义 window.dataLayer(一个名为 gtag 的函数)以及一项调用 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'.
  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-XXXX');</script>
<!-- End Google Tag Manager -->

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

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

区域特有的行为

如需针对来自特定区域的用户更改默认代码行为,请在意见征求命令中指定 ISO 3166-2 区域。通过提供该值,您可以根据用户的地理位置微调默认值。例如,要针对来自西班牙和阿拉斯加的用户将 ad_storage 设置为 'denied',并针对所有用户将 analytics_storage 设置为 'denied',请运行以下代码:

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

以最具体的区域为准

如果同一个网页上出现了两个分别包含区域和子区域值的默认意见征求命令,则更具体的区域对应的命令就会生效。例如,如果您针对区域 USad_storage 设置为 'granted',并针对区域 US-CAad_storage 设置为 'denied',则对于来自加利福尼亚州的访问者而言,更具体的 US-CA 设置将会生效。这意味着,在此示例中会针对来自 US-CA 的访问者将 ad_storage 设置为 'denied'

区域 ad_storage 行为
美国 'granted' 适用于美国境内而非加拿大境内的用户
美国-加拿大 'denied' 适用于美国-加拿大用户
未指定 'granted' 使用 'granted' 的默认值。适用于不在美国境内或不在美国-加拿大境内的用户

网址传递功能

ad_storage 设置为 'denied' 时,Google Ads、Floodlight 和 Google Analytics(分析)代码不会出于广告目的创建或保存 Cookie。当 analytics_storagedenied 时,Google Analytics(分析)代码不会创建或保存 Cookie。不过,您可以根据需要选择通过各个页面的网址参数传递信息,从而提高衡量质量。

要为 Google Ads 启用此功能,请创建(或使用现有的)转化链接器代码,并确保选中在所有页面网址上启用关联对应的复选框。有关创建转化链接器代码的说明,请参阅基本设置

Google Analytics(分析)

Google Analytics(分析)4

要为“Google Analytics(分析):GA4 配置”代码启用 url_passthrough,请按以下步骤操作:

  • 点击要设置的字段
  • 点击添加行
  • 对于字段名称,输入 url_passthrough
  • 对于,输入 true

Universal Analytics

设置变量

要启用 urlPassthrough,请按以下步骤操作:

  • 点击更多设置
  • 点击要设置的字段
  • 点击添加字段
  • 对于字段名称,输入 urlPassthrough
  • 对于,输入 true
  • 保存变量

Universal Analytics 代码

要启用 urlPassthrough,请按以下步骤操作:

  • 在此代码中启用覆盖设置设为选中状态
  • 点击更多设置
  • 点击要设置的字段
  • 点击添加字段
  • 对于字段名称,输入 urlPassthrough
  • 对于,输入 true
  • 保存代码

已添加的参数

使用网址传递功能时,一些查询参数可能会附加到您网站上的链接中:

  • gclid
  • dclid
  • gclsrc
  • _gl
  • wbraid

为了达到最佳效果,请确保以下几点:

  1. 您网站上的重定向会传递上述所有查询参数。
  2. 您的分析工具会忽略网页网址中的这些参数。
  3. 这些参数不会干扰您的网站行为。

隐去广告数据

'ad_storage''denied' 时,系统不会出于广告目的设置新的 Cookie。发送到 Google 的数据仍将包含完整网址,其中包括网址参数中的广告点击信息。

要在 'ad_storage''denied' 时进一步隐去广告数据,请将 'ads_data_redaction' 设置为 true

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

'ads_data_redaction'true'ad_storage''denied' 时,系统会隐去 Google Ads 代码和 Floodlight 代码在网络请求中发送的广告点击标识符。网络请求也将通过无 Cookie 的网域发送。

异步工具

如果您的用户意见征求工具是异步加载的,则它有时可能不会先于您的 Google 代码运行。为此,请指定 'wait_for_update' 和一个单位为毫秒的值,以控制在发送数据前等待的时间。

在以下示例中,'ad_storage' 默认为 'denied',这样可以在代码触发之前,为用户意见征求工具留出 500 毫秒的时间来调用 gtag('consent', 'update', ...)

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

旧版代码控制

如果您使用的是旧版 Google 代码(例如 ga.js、analytics.js 或 conversion.js),则应更新为 gtag.js 或 Google 跟踪代码管理器。

要详细了解其他旧版代码的隐私控制项,请参阅以下文档: