根据配置的产品和功能,Google 衡量产品会使用读取和写入 Cookie 等机制,或发送 HTTP 请求来为分析、转化衡量和再营销提供支持。
这些机制可以配置为仅以知晓意见的方式使用。例如,您可以对 Google 代码进行配置,使其在征得用户同意之前不读取或写入 Cookie。如果采用知晓意见的方式,那么在征得用户同意之前,代码的功能将受到限制。征得用户同意后,系统会根据您所选的行为更新方式恢复相关功能。
以下产品支持根据用户的同意情况调整代码行为:
- Google Ads
- Floodlight
- Google Analytics(分析)
- 转化链接器
准备工作
在实施意见征求模式之前,您应当考虑以下事项:
- 最佳做法是将默认用户意见征求设置配置为针对特定区域,而不是针对所有访问者。这有助于避免在衡量时遗漏那些来自无需意见征求横幅且默认设置是“已拒绝”的区域的用户。请参阅针对特定区域的行为。
- 用户意见征求通常是通过意见征求管理平台 (CMP) 来管理的。如果您使用的是 CMP,请确认他们是否支持意见征求模式。
- 如果使用的是 CMP,必须将用户意见征求 update 命令配置为针对那些来自默认用户意见征求命令中指定的相同区域的访问者。这样一来,如果用户的同意情况默认设为“已拒绝”,那么用户便有机会对此进行更新。
- 在编写您自己的模板或自定义 HTML 标记时,在回调中执行的任何命令或使用
gtag()
的命令不能保证在下一个触发器触发之前可用。为确保尽快获得用户意见征求信息,请使用(或创建)利用 Tag Manager Consent API 的代码模板来设置用户同意情况。
调整代码行为
必须在网站的每个网页上配置知晓意见的代码行为。在每个网页上,通常有两个时间点可以配置代码行为:
网页加载时:网页加载时,您只应使用符合用户预期的衡量功能。这可以通过
gtag('consent', 'default', ...)
命令进行配置。访问者提供意见征求状态后或在用户意见征求状态已知的情况下:访问者提供意见征求状态后(或者保留了上次网页加载时的用户意见征求状态),请通过
gtag('consent', 'update', ...)
命令启用他们已同意接受的衡量功能(例如,读取/写入 Cookie)。
配置默认行为
gtag.js
若要调整默认的衡量功能,请在网站的每个网页上调用 gtag('consent',
'default', ...)
命令,然后再调用发送衡量数据的命令(例如 config 或 event)。例如,若要在默认情况下拒绝 ad_storage
和 analytics_storage
,请在 consent
参数中指定以下设置:
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied'
});
跟踪代码管理器
若要调整默认的衡量功能,请执行以下操作:
- 使用社区模板库中利用 Tag Manager Consent API 的模板代码来设置默认用户同意情况。
- 将代码设置为通过用户意见征求初始化触发器触发。请参阅用户意见征求配置。
或者,您需要在代码触发前在网站的每个网页上执行以下操作:
- 确保已定义
dataLayer
对象。 - 确保已定义
gtag()
函数。 - 使用
gtag('consent', ...)
命令设置衡量功能。 - 使用
dataLayer.push()
发送了default_consent
事件。
例如,要在默认情况下拒绝 ad_storage
和 analytics_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
。如需了解与支持的键有关的全部详情,请参阅 gtag.js API 参考文档中的意见征求。
更新行为
当您的用户表示同意(通常是通过与意见征求横幅互动表明),或通过上次网页加载得知用户意见状态后,请使用 gtag('consent', 'update', ...)
命令更新您的代码行为。例如,对于已同意使用广告 Cookie 的用户,请运行以下代码:
gtag('consent', 'update', {
'ad_storage': 'granted'
});
只有向 update 调用提供的字段会更改。在上面的代码中,只有 ad_storage
的值发生了变化。如果将 analytics_storage
设置成了 denied
,则在进行此调用以就 ad_storage
获得用户同意后,analytics_storage
仍会被拒绝。您需确保为所有意见征求键设置了正确的值。如需了解与支持的键有关的全部详情,请参阅 API 参考文档中的意见征求。
应尽快在每个网页上调用此命令。在用户表示同意后,您应保留他们的选择,并据此在后续网页上调用更新命令。
实现示例
默认情况下,以下示例会将 ad_storage
设置为 denied
。在用户同意 ad_storage
所代表的功能后,它会更新为 granted
。
此处代码的顺序非常重要。如果不按顺序调用意见征求代码,您的意见征求默认值将不起作用。代码运行的具体顺序会因业务需求而异,但一般来说,您的代码应按以下顺序运行:
- 加载全局网站代码。这是您的默认代码段。您应更新默认代码段(见下文),以添加对
gtag('consent', 'default', ...)
的调用。如果未设置默认值,系统将启用所有代码功能。 - 加载您的意见征求解决方案。如果您的意见征求解决方案是异步加载的,请参阅“异步工具”部分,了解如何确保代码运行顺序正确。
- 如果未通过您的意见征求解决方案进行处理,请在用户表示同意后调用
gtag('consent', 'update', ...)
。
gtag.js
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Default ad_storage to 'denied'.
gtag('consent', 'default', {
'ad_storage': 'denied'
});
gtag('js', new Date());
gtag('config', 'G-XXXXXX');
</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 处理 update 命令,请执行以下操作:
- 使用社区模板库中利用 Tag Manager Consent API 的模板代码来设置更新后的用户同意情况。
- 将代码设置为通过用户意见征求初始化触发器触发。请参阅用户意见征求配置。
或者,您也可以更新网页上的代码,如下所示:
<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>
```
高级意见征求功能
区域特有的行为
若要针对来自特定区域的用户更改默认代码行为,请在意见征求命令中指定区域。通过提供区域值,您可以根据用户的地理位置微调默认值。例如,若要针对来自西班牙和阿拉斯加的用户将 ad_storage
设置为 denied
,并针对所有用户将 analytics_storage
设置为 denied
,请运行以下代码:
gtag('consent', 'default', {
'analytics_storage': 'denied',
'region': ['ES', 'US-AK']
});
gtag('consent', 'default', {
'ad_storage': 'denied'
});
最具体的区域优先
如果同一个网页上出现了两个分别包含区域和子区域值的默认意见征求命令,则更具体的区域对应的命令就会生效。例如,如果您针对区域 US
将 ad_storage
设置为 granted
,并针对区域 US-CA
将 ad_storage
设置为 denied
,则对于来自加利福尼亚州的访问者而言,更具体的 US-CA
设置将会生效。这意味着,在此示例中会针对来自 US-CA
的访问者将 ad_storage
设置为 denied
。
区域 | ad_storage |
行为 |
---|---|---|
美国 | 'granted' |
适用于美国境内而非加拿大境内的用户 |
美国-加拿大 | 'denied' |
适用于美国-加拿大用户 |
未指定 | 'granted' |
使用 'granted' 的默认值。适用于不在美国境内或不在美国-加拿大境内的用户
|
广告点击信息
如果用户点击某个广告后访问您的网站,则与该广告相关的信息可能会以查询参数的形式附加到着陆页网址中。为提高转化计数准确性,Google 代码通常会将此类信息存储在您网域上的第一方 Cookie 中。
但是,如果将 ad_storage
设置为 denied
,Google 代码就不会在本地保存此类信息。要在 ad_storage
为 denied
时提高广告点击衡量准确性,您可以选择通过网址参数传递所有网页中的广告点击信息。
gtag.js
若要启用此功能,请将 url_passthrough
参数设置为 true
:
gtag('set', 'url_passthrough', true);
跟踪代码管理器
若要启用此功能,请创建(或使用现有的)转化链接器代码,并确保选中在所有页面网址上启用关联对应的复选框。如需了解如何创建转化链接器代码,请参阅基本设置。
使用网址传递功能时,一些查询参数会附加到您网站上的链接中:
gclid
dclid
gclsrc
_gl
为了达到最佳效果,请确保以下几点:
- 您网站上的重定向会传递上述所有查询参数。
- 您的分析工具会忽略网页网址中的这些参数。
- 这些参数不会干扰您的网站行为。
隐去广告数据
当 ad_storage
为 denied
时,系统不会出于广告目的设置新的 Cookie。此外,之前在 google.com 和 doubleclick.net 上设置的第三方 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 跟踪代码管理器。
如需详细了解其他旧版代码的隐私控制项,请参阅以下文档: