给网站装上 Cookie 横幅之后,很多人会遇到同一个现象:GA4 的会话和转化掉了一截,Google Ads 的转化也变少。第一反应往往是"横幅把统计挡坏了",于是干脆把横幅关掉——这既不合规,也没有解决问题。真正的原因常常是:横幅收集到的用户选择,没有正确交给 Google 的代码。
先给可以做事的结论:Google 意见征求模式(Consent Mode)本身不弹横幅,它负责把用户的同意结果转成一套标准参数,告诉 GA4、Google Ads 等代码"现在能不能写 Cookie、能不能发送数据"。面向欧洲经济区(EEA)流量投放 Google Ads 的站点,自 2024 年 3 月起必须传 v2 新增的两个参数,否则个性化广告与转化衡量会受影响。下面按"谁负责什么 → 四个参数 → 两种模式 → GTM 怎么配 → 怎么验收"的顺序讲清楚。

横幅、CMP、意见征求模式各做什么
这三样经常被混为一谈,但职责完全不同:
- Cookie 横幅:显示给用户看,收集"同意 / 拒绝 / 自定义"。
- CMP(同意管理平台):记录用户的选择,并以标准格式把它提供给外部工具。
- 意见征求模式:接收选择,转换成四个标准参数,让 Google 的代码据此调整运行方式。
所以"装了横幅就等于合规了"是个错觉。如果横幅只是把统计代码整段挡掉、却没有把选择传给 Google,就等于它自作主张用了最严格也最省事的做法:同意前什么都不记,拒绝后也什么都不记,衡量缺口反而更大。

四个参数各管什么
意见征求模式用一组统一的参数描述用户的授权状态,最常打交道的是下面四个。把它们各自管什么分清楚,很多"数据少了一半"的困惑就解释清楚了。
| 参数 | 含义 | 影响谁 |
|---|---|---|
analytics_storage | 是否允许分析类存储(如 GA4 的客户端标识 Cookie) | GA4 的事件与会话识别 |
ad_storage | 是否允许广告类存储(再营销、转化相关的 Cookie) | Google Ads 再营销与转化识别 |
ad_user_data | 是否允许把与广告相关的用户数据发给 Google(v2 新增) | 受众、转化数据的上传与使用 |
ad_personalization | 是否允许个性化广告(v2 新增) | 再营销、个性化投放 |
另外还有几个隐私类参数(如 functionality_storage、personalization_storage、security_storage),用于站点自身功能,不代表广告或分析授权。最容易搞混的是 ad_user_data 和 ad_personalization:前者管"能不能把用户数据发出去",后者管"能不能用来做个性化投放";只补其中一个,另一个没传,Google 侧仍会按 v1 的老逻辑处理。
基本模式与高级模式:差别在"同意之前"
两种实现方式都合规,区别在于用户在做出选择之前、Google 的代码怎么运行。
| 基本模式(Basic) | 高级模式(Advanced) | |
|---|---|---|
| 同意之前 | 完全不加载追踪代码,Google 拿不到任何数据 | 代码照常加载,发送不含 Cookie 的 ping |
| 能否做转化建模 | 不能 | 可以,用于部分还原拒绝用户的转化 |
| 实现难度 | 简单直接 | 需要正确处理默认状态与更新 |
| 常见代价 | 拒绝同意的流量基本等于数据缺口 | 配置错误时反而可能违规 |
选择哪一种是业务与隐私政策的决定:有 EEA、英国流量,又希望在"拒绝"状态下尽量还原转化与再营销效果的站点,通常用高级模式;只服务不强制意见征求地区的站点,用基本模式也能接受。关键是别在同一个容器里把两者混用,导致部分代码只加载一半。

用 GTM 落地的大致顺序
- 开启"同意声明总览":在 GTM 容器的"管理 → 容器设置"里打开,之后代码列表上方会出现一个盾牌图标,可以集中查看每个代码的同意设置。
- 用 CMP 模板设置默认状态:从社区模板库找到你所用横幅工具的模板,触发条件选"同意声明初始化 - 所有网页"。这个触发器会比其他所有代码都早执行,确保默认状态在任何数据发送前就绪。若横幅是异步加载,还需要设置
wait_for_update(毫秒),给横幅一点时间回传用户此前的选择。 - 先设默认值,再更新:默认值按"最保守"设置;用户与横幅互动后,由 CMP 调用更新把状态改成已同意。同意模式不保存选择,所以每次页面进入都要重新设默认值,再按用户之前的记录恢复。
- 逐个核对代码的同意设置:GA4 与 Google Ads 代码内置同意检查,会自动读取状态;Meta 像素、LinkedIn 等第三方代码没有内置检查,需要手动设为"需要额外同意",指定它依赖哪个参数,否则拒绝的用户仍会被追踪。
用 gtag.js 的站点也可以直接在代码里实现:先在每个页面、任何发送数据的命令之前调用 gtag('consent', 'default', ...),用户作出选择后再调用 gtag('consent', 'update', ...)。如果自己写 GTM 模板,则应使用 Tag Manager 专用的 setDefaultConsentState 与 updateConsentState API,而不是把 gtag('consent','update',...) 硬塞进模板。
按地区设默认值,别把欧洲规则套到全世界
意见征求模式支持按地区分别设置默认状态。常见的做法是:EEA 与英国默认全部拒绝,其余地区按自身隐私政策与业务判断设置默认值。在 gtag 的默认命令里加上 region 即可,例如按 ISO 3166-2 指定西班牙或美国某个州。多条默认命令同时存在时,更具体的地区会覆盖更宽的范围——这正是把地区规则和安全默认值写在同一页时的预期行为。
把欧洲的严格规则无差别套给全球访客,是另一个常见错误:那会让本来不强制意见征求地区的衡量数据也被"自愿"砍掉。区分地区后,既守住合规底线,也尽量保住应有的数据。
上线前怎么验收
设置完不等于生效。建议按下面的顺序验收:
- Tag Assistant 的"同意"分页:分别测试"接受"和"拒绝"两条路径,确认默认状态显示为 denied、互动后更新为 granted(或按你的设置)。
- 浏览器控制台看 dataLayer:在无痕窗口里输入
dataLayer,应能看到 consent default 与 update 两条记录。看不到或只有一条,说明顺序或触发有问题。 - Network 里看同意信号:发往 Google 的请求中一般会带上同意信号参数(常见为 gcd/ gcs 一类的字段),可用来确认状态确实随请求发出。具体字段名随产品与版本变化,以实际请求为准。
- GA4 的同意模式诊断:在媒体资源的"数据收集与修改"下有针对意见征求的设置与诊断入口,可核对是否按预期工作。
几个最常见的错配
- 横幅把代码整段挡掉:退化成"永远不记录",还不能按地区区分。正确做法是让代码加载、由同意信号控制行为。
- 第三方像素没加同意检查:GA4、Ads 会自动读状态,但社交平台像素不会,必须手动设置。
- 更新发生在页面卸载时:用户在点击"接受"后马上跳转,浏览器可能来不及把更新发出去,导致后续报告缺 session_start 等早期事件。应确保更新在跳转前完成。
- 异步横幅没有配 wait_for_update:横幅还没跑起来,Google 代码就已经按默认状态离开,回访用户的旧选择恢复不了。
最后提醒一点:意见征求模式不是排名因素,它影响的是衡量与广告投放。如果它上线后 GA4 数据变少,先区分"真实的流量变化"和"衡量口径的变化",再决定要不要动内容或投放,不要把它们混为一谈。相关阅读:Shopify 客户数据与同意管理、Cookie 横幅出现时页面往下跳怎么办、跳转后 UTM 或 gclid 丢失,广告来源为什么变成 Direct。
参考来源
- Google Tag Platform 官方文档《在网站上设置意见征求模式》(含 consent 类型、基本与高级模式、区域设置、url_passthrough 与 ads_data_redaction)。
- Google 跟踪代码管理器帮助《Tag Manager consent mode support》(同意初始化触发器、逐代码同意设置、同意声明总览)。
- Google 关于欧洲经济区(EEA)流量意见征求模式更新的官方说明。
说明:本篇为编辑整理,用于理解与自查,不构成法律或合规意见。隐私法规、Google 政策与产品界面可能随时调整,地区规则与默认值请以你所在市场的法务意见和 Google 官方现行文档为准。