本页面中的内容面向在网站上维护 Google 代码并希望集成意见征求模式的开发者。如需了解关于意见征求模式的基本信息,请参阅意见征求模式概览。
如何启用和使用意见征求模式取决于您实现用户意见征求解决方案的具体方式,以及您所用的代码植入平台是 Google 跟踪代码管理器 (GTM) 还是 Google 代码:
- 支持 Google 意见征求模式的意见征求管理平台 (CMP) 具有以下特征:
- 通过社区模板库提供跟踪代码管理器模板,供您创建用于管理用户意见的代码。
- 提供 JavaScript 代码,供使用 gtag.js 的网站管理用户意见。
- 对于自定义实现和不支持意见征求模式的 CMP:
- 如果您使用 GTM,我们建议您使用 Tag Manager Consent API 自行创建模板。开始时不妨参考下面的示例。
- 如果您使用 gtag.js,则必须以直接命令或自定义 HTML 代码段的形式,手动在网站的每个网页上添加意见征求代码。
本文简要介绍了最佳做法,并提供了 API 示例。如需了解详情,请参阅相关链接。
准备工作
在实现意见征求模式之前,不妨考虑以下事项:
最佳做法是将默认的意见征求设置的范围设定为您向访问者展示意见征求横幅的区域。这有助于在需要意见征求横幅的区域内保留衡量功能,并且 Google 代码会相应地调整自身行为。您还可以防止在没有意见征求横幅或意见征求横幅不适用的情况下,衡量结果出现任何偏差。请参阅针对特定区域的行为。
如果您使用了 CMP,则必须对同意情况更新命令进行配置,使其面向默认的意见征求命令中所指定的那些区域的访问者。只有这样,用户才能在同意情况默认设置为拒绝时对其进行更新。
在编写您自己的模板或自定义 HTML 标记时,任何在回调中执行的命令或使用
gtag()
的命令均无法保证在下一个触发器触发之前可用。为确保尽快获得用户意见征求信息,请使用(或创建)利用 Tag Manager Consent API 来设置同意情况的代码模板。
跟踪同意情况
默认的同意情况应根据贵组织要求的默认值在页面加载时立即设置。然后,CMP 或自定义意见征求管理解决方案应提示访问者,让他们对适用的用户意见征求类型表示同意或拒绝。由于意见征求模式不存储用户的意见选择,因此在用户给出意见后,意见征求管理解决方案还必须在每个页面上,根据用户做出的意见选择尽早发出意见征求模式更新命令。
gtag.js
以下部分提供了有关如何使用 gtag.js 执行下列操作的示例:
设置同意情况默认值
建议为您所用的每种意见征求类型分别设置一个默认值。本文中的同意情况值只是示例。您有责任确保为每个衡量产品设置默认意见征求模式,使其符合贵组织的政策。
如要调整默认的衡量功能,请先在网站的每个网页上调用 gtag('consent',
'default', ...)
命令,然后再调用发送衡量数据的命令(例如 config
或 event
)。例如,如要在默认情况下拒绝多种意见征求类型,请指定以下 consent
参数:
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
更新同意情况
在用户指定同意情况后或更改意见选项后,应使用 update
命令更新同意情况。意见征求模式不保存用户意见选择,因此当用户与您的意见征求管理解决方案互动时,请立即更新同意情况。在用户表示同意后,应保留他们的选择,并据此在后续网页上调用更新命令。
在下面的示例中,只有 ad_storage
值发生了变化。如果将 analytics_storage
设置成了 denied
,则该字段在此调用后的状态将仍为已拒绝。您需确保为所有意见征求类型设置正确的值。如需了解与支持的类型有关的全部详情,请参阅 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_storage
默认为 denied
,且系统在触发代码之前为用户意见征求工具留出了 500 毫秒的时间来调用 gtag('consent', 'update', ...)
:
gtag('consent', 'default', {
'ad_storage': 'denied',
'wait_for_update': 500
});
跟踪代码管理器
如果是跟踪代码管理器实现方案,我们建议使用社区模板库中的意见征求模式模板来管理用户意见。如需了解如何使用 Tag Manager Consent API 自行创建模板,请参阅创建意见征求模式模板。
注意事项:
在利用 GTM 进行代码植入的网站上实现意见征求模式时,应使用 GTM 专用 API(
setDefaultConsentState
和updateConsentState
)来管理同意情况。gtagSet
API 可以酌情用来选择性地设置ads_data_redaction
和网址传递设置。gtag('consent','update',...)
方法不应用来替代updateConsentState
,因为前者会在所有其他待处理消息之后排入队列,并且在下一事件开始之前可能得不到处理。如需了解详情,请参阅数据层信息的处理方式。
实现示例
下面的示例将多个意见征求模式参数默认设置为 denied
。当用户针对意见征求做出选择之后,相关参数会更新为 granted
。
gtag.js
在该示例中,代码的顺序至关重要。如果不按顺序调用意见征求代码,意见征求默认值将不起作用。具体情况可能会因业务需要而有所不同,但代码通常应按以下顺序运行:
加载 Google 代码。这是您的默认代码段。您应更新默认代码段(见下文),以添加对
gtag('consent', 'default', ...)
的调用。加载您的意见征求解决方案。如果您的意见征求解决方案以异步方式加载,请参阅与异步意见征求管理平台集成,了解如何确保按正确的顺序进行加载。
如果未通过您的意见征求解决方案进行处理,请在用户表示同意后调用
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>
升级到意见征求模式 v2
Google 始终致力于打造注重隐私保护的数字广告生态系统,在这一过程中,我们正在加强对《欧盟地区用户意见征求政策》的执行力度。除了 ad_storage
和 analytics_storage
之外,意见征求模式用户还需要发送两个新参数:
字段名称 | 允许的值 | 说明 |
---|---|---|
ad_user_data
|
'granted' | 'denied'
|
设置有关向 Google 发送与广告相关的用户数据的用户同意情况。 |
ad_personalization
|
'granted' | 'denied'
|
设置有关个性化广告的用户同意情况。 |
高级意见征求功能
高级意见征求功能包括:
- 设置针对某个地理区域的行为。
- 在用户未表示同意使用 Cookie 的情况下,在网址中传递广告点击、客户端 ID 和会话 ID 方面的信息。
- 在用户拒绝使用广告 Cookie 时,完全隐去(移除)广告信息。
针对特定区域的行为
若要针对来自特定区域的用户更改默认代码行为,请在意见征求命令中指定区域。通过提供区域值,您可以根据用户的地理位置来微调默认值。如需详细了解如何识别区域,请参阅地理位置 ID。
gtag.js
对于来自西班牙和阿拉斯加州的访问者,以下示例会将 analytics_storage
设置为 denied
;而对于来自所有其他区域的访问者,则将 ad_storage
设置为 denied
。
gtag('consent', 'default', { 'analytics_storage': 'denied', 'region': ['ES', 'US-AK'] }); gtag('consent', 'default', { 'ad_storage': 'denied' });
跟踪代码管理器
如果您使用模板来创建代码,它可能会提供一些控件,用于设置针对特定区域的行为。如果您要自行创建模板代码,请参阅创建意见征求模式模板,详细了解如何设置针对特定区域的行为。
最具体的参数优先
如果同一个网页上出现了两个分别包含区域值和子区域值的默认意见征求命令,则更具体的那个区域所对应的命令会生效。例如,如果您针对区域“美国”将 ad_storage
设置为 granted
,针对区域“美国加利福尼亚州”将 ad_storage
设置为 denied
,则对于来自加利福尼亚州的访问者而言,更具体的“美国加利福尼亚州”设置将会生效。这意味着,在此示例中会针对来自美国加利福尼亚洲的访问者将 ad_storage
设置为 denied
。
区域 | ad_storage |
行为 |
---|---|---|
美国 | 'granted' |
适用于加利福尼亚州以外的美国境内用户 |
美国加利福利亚州 | 'denied' |
适用于美国加利福尼亚洲的用户 |
未指定 | 'granted' |
使用 'granted' 的默认值。在这个示例中,适用于既不在美国境内,又不在美国加利福利亚州的访问者
|
在网址中传递广告点击、客户端 ID 和会话 ID 方面的信息
如果用户在点击某个广告后访问您的网站,则与该广告相关的信息可能会以查询参数的形式附加到着陆页网址末尾。为了提高转化计数的准确性,此类信息通常会存储在您网域上的第一方 Cookie 中。
不过,如果将 ad_storage
设置为 denied
,此类信息就不会保存在本地。若要在 ad_storage
为 denied
的情况下提高衡量广告点击时的准确性,您可以选择使用网址传递功能,在所有网页中通过网址参数传递广告点击相关信息。
同样,如果将 analytics_storage
设置为 denied
,网址传递功能将可用于在不采用 Cookie 的情况下,在所有网页中发送基于事件和会话的分析数据(包括转化数据)。
若要使用网址传递功能,必须满足以下条件:
- 您的 Google 代码能够知晓用户意见,并显示在网页上。
- 广告客户已启用网址传递功能。
- 在网页上实现了意见征求模式。
- 出站链接所指向的网域与当前网页的网域相同。
网址中存在 GCLID/DCLID(仅限 Google Ads 代码和 Floodlight 代码)
gtag.js
若要启用此功能,请将 url_passthrough
参数设置为 true
:
gtag('set', 'url_passthrough', true);
跟踪代码管理器
如果您使用模板来创建代码,它可能会提供一些控件,用于设置网址传递功能。如果您要自行创建模板代码,请参阅创建意见征求模式模板,详细了解如何使用 gtagSet
自定义模板 API 设置网址传递功能。
或者,您也可以使用下列选项在转化链接器代码和/或 Google Analytics(分析)代码中进行设置
对于 Google Ads 代码和 Floodlight 代码:
若要启用此功能,请创建(或使用现有的)转化链接器代码,并确保选中在所有页面网址上启用关联对应的复选框。如需了解如何创建转化链接器代码,请参阅基本设置。
对于 Google Analytics(分析)代码:
- 在跟踪代码管理器中,转到要设置的字段:
- 对于 Google Analytics(分析):GA4 配置代码,请依次选择代码配置 > 要设置的字段。
- 对于 Google Analytics(分析):Universal Analytics 代码,请使用 Google Analytics(分析)设置变量,然后依次选择变量配置 > 更多设置 > 要设置的字段。
- 展开“要设置的字段”部分后,点击添加行。
- 对于字段名称,请输入正确的值:
- 对于 Google Analytics(分析):GA4 配置代码,请输入
url_passthrough
。 - 对于使用 Google Analytics(分析)设置变量的 Google Analytics(分析):Universal Analytics 代码,请输入
urlPassthrough
。
- 对于 Google Analytics(分析):GA4 配置代码,请输入
- 对于值,请输入“true”。
- 保存代码并发布。
或者,您也可以先在网站的每个网页上将 url_passthrough
参数设为 true
,然后再添加 GTM 安装代码段。
window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('set', 'url_passthrough', true);
在使用网址传递功能的情况下,当用户浏览您网站上的网页时,一些查询参数可能会附加到链接中:
gclid
dclid
gclsrc
_gl
wbraid
为了达到最佳效果,请确保以下几点:
- 您网站上的重定向会传递上述所有查询参数。
- 您的分析工具会忽略网页网址中的这些参数。
- 这些参数不会干扰您的网站行为。
隐去广告数据
当 ad_storage
为 denied
时,系统不会出于广告目的设置新的 Cookie。此外,之前在 google.com 和 doubleclick.net 上设置的第三方 Cookie 将仅用于防范垃圾内容和欺诈。发送到 Google 的数据仍将包含完整网址,其中包括网址参数中的所有广告点击信息。
gtag.js
若要在 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 跟踪代码管理器的用户意见征求配置功能
跟踪代码管理器提供了多项功能,这些功能可协同发挥作用,帮助您根据用户意见征求设置来管理代码的运作方式。跟踪代码管理器提供了用户意见征求初始化触发器、适用于意见征求管理的代码设置和“用户意见征求概览”页面。一些第三方用户意见征求管理服务提供商已将意见征求模式集成到他们的产品中。详细了解跟踪代码管理器的用户意见征求功能。
验证用户意见征求设置
为验证和调试意见征求模式配置,我们建议使用 Tag Assistant。借助 Tag Assistant,您可以了解同意情况是否以及如何设置和更新。Tag Assistant 支持下列内容:
- gtag 用户意见征求命令
- 通过跟踪代码管理器意见征求模式模板创建的代码
- 透明度和用户意见征求框架 (TCF)
详细了解 Tag Assistant 意见征求模式调试。
如果您未使用意见征求模式模板,可以使用浏览器的开发者工具来分析意见征求设置。
如需分析意见征求设置,请执行下列操作:
在元素标签页的搜索栏中输入
dataLayer
。确认下列事宜:default
命令位于其他所有 Google 事件之前。- 同意情况是根据用户的互动,通过
update
命令来设置的。 - 只有在满足必需的意见征求设置时,代码才会触发。
ads_data_redaction
和url_passthrough
都是根据用户提供的设置来设置的。
- 在网络标签页中:
- 查看网址的
gcs=
参数,了解意见征求状态。gcs
参数采用以下格式:gcs=G1 [ad_storage][analytics_storage]
。 - 根据提供的意见查看正确的
gcs=
参数值。ad_storage
和analytics_storage
的值将是下列值之一:
值 含义 G100 对于 ad_storage
和analytics_storage
,用户均选择拒绝。G110 对于 ad_storage
,用户选择同意;对于analytics_storage
,用户选择拒绝。G101 对于 ad_storage
,用户选择拒绝;对于analytics_storage
,用户选择同意。G111 对于 ad_storage
和analytics_storage
,用户均选择同意。G1-- 对于 ad_storage
和analytics_storage
,网站不要求必须征得用户同意。- 如果
ads_data_redaction
设置为true
,请确认是否使用了无 Cookie 网域。 - 当
url_passthrough
设置为true
时,请确认传出网址是否附加了gclid
/dclid
,以及_gl
链接器参数是否存在(例如https://www.example.com/?_gl=1*abcde5*
)。
旧版代码控制
如果您使用的是旧版代码(例如 ga.js、analytics.js 或 conversion.js),则应更新为 gtag.js 或 Google 跟踪代码管理器。
如需详细了解其他旧版代码的隐私控制机制,请参阅以下文档: