如何在服务端 GTM 中使用 Google Consent Mode 的 GCS 状态值
How To Use Google Consent Mode GCS Values in Server-side Google Tag Manager (GTM)
作者开发了用于服务端 GTM 的 Basic GCS Consent State Reader 自定义变量模板,用于直接解析 GA4 请求中的 x-ga-gcs 同意状态字符串。
文章提供了在服务端解析 Google 同意状态字符串的实用方案,便于为 Meta CAPI 等非 Google 平台建立合规拦截规则。
将衡量方案迁移到服务端 Google Tag Manager(SGTM)之后,隐私与合规的工作并没有就此结束。

尽管通过自己的标签服务器分发数据能让你对数据采集与处理拥有更大控制权,但你依然必须确保每个事件都遵循用户的授权选择。如果你的网站有来自欧洲经济区(EEA)的访客,这一点尤为关键——当地的同意授权要求正不断演进,监管执行也日益严格。
对于 Google 旗下的产品(如 Google Analytics 和 Google Ads)来说,处理起来相对简单。Google Consent Mode 对这些平台提供了原生支持,会在向服务端容器发送请求的同时自动附带同意信号。
但如果要对接非 Google 平台,真正的挑战就来了。
比如以下这些集成场景:
- Meta Conversions API
- TikTok Events API
- Reddit Conversion API
- Pinterest Conversion API
- LinkedIn Conversions API
这些平台无法自动识别 Google 的同意信号,这意味着在将数据向下游转发之前,你需要一种可靠的方式来解析并应用用户的同意决定。
为了解决这个问题,我开发了一个名为 Basic GCS Consent State Reader 的服务端 GTM 自定义变量模板。
本文将详细介绍该模板的功能、工作原理,以及如何用它来搭建更符合隐私合规要求的服务端标签部署方案。
在开始之前需要说明的是,本文既不是 Google Consent Mode 本身的配置指南,也不是排查 Consent Mode 设置问题的教程,这些内容我已在其他文章中单独讲过。
本文主要聚焦于我为解决一个具体痛点而创建的服务端 GTM 自定义变量模板:让 Google Consent Mode 的 GCS 参数值在服务端 GTM 内部变得易读好用,从而确保数据采集流程符合合规要求。
什么是 Basic GCS Consent State Reader?
如果你在工作中经常接触服务端 Google Tag Manager 和 Google Consent Mode,很可能见过类似这样的取值:
- G100
- G101
- G110
- G111
出现在接收到的 GA4 请求中。

这些值被称为 GCS 信号(Google Consent State signals,即 Google 意见征求状态信号)。
每当启用意见征求模式(Consent Mode)时,Google 产品就会发送这类紧凑的意见征求字符串。其中的数值代表了用户针对广告与分析相关存储权限所做的授权选择。
但问题在于,Google 并未提供在服务端 GTM(Server-side GTM)中直接解析这些值的简便方法。
与 Web 端 GTM 容器不同,在服务端,你无法直接利用 Google Tag Manager 的原生预览界面或自定义变量模板来解码这些值,甚至无法自行编写自定义代码来处理。

Basic GCS Consent State Reader 模板正是为此而生。
该模板会读取传入 GA4 请求中的意见征求信号,评估所选的授权类别,并返回人类易读的结果:
- 已同意(granted)
- 已拒绝(denied)
- 未定义(undefined)
这大幅降低了使用意见征求信息的门槛,方便用于:
- 代码触发逻辑
- 事件数据扩充的合规安全护栏
- 第三方供应商数据分发路由决策
- 数据转换工作流
- 隐私与合规管控
我特别喜欢的一个功能,是能够自定义缺失意见征求值时的处理方式。
你可以配置该模板,将未定义的意见征求状态自动解析为:
- 已拒绝(denied)
- 已同意(granted)
这在以下两类场景中尤其有用:
一种场景是企业运营着多个网站或区域站点,其中部分域名部署了 Consent Mode(同意模式),而其他域名可能因当地没有合规要求而并未部署。
另一种场景则是为了执行严格的规则,防范因疏忽而遗漏 Consent Mode 配置的情况。
什么是 GCS 值?
这里暂且不展开讲解 Google Consent Mode 本身,我们先简要看看这些值究竟代表什么。
在启用 Consent Mode 的情况下,发送至服务端容器的 GA4 请求会包含一个名为:
x-ga-gcs
的参数,它包含一个精简的用户同意状态字符串:
G1AB
其中:
- A = 广告同意状态
- B = 分析同意状态
每个位置的取值可以是:
- 0 = 拒绝
- 1 = 允许
GCS 值映射关系
| GCS 值 | 广告 | 分析 |
| G100 | 拒绝 | 拒绝 |
| G101 | 拒绝 | 允许 |
| G110 | 允许 | 拒绝 |
| G111 | 允许 | 允许 |
例如:
x-ga-gcs=G101表示:
- 广告同意 = 拒绝
- 分析同意 = 允许
为什么这在服务端 GTM 中至关重要
数据一旦进入服务端容器,同意状态管理就变得更为关键。
在这一阶段,你可能需要:
- 阻止特定代码(Tag)触发
- 阻止向第三方平台转发数据
- 向事件中补充同意状态信息
- 按条件分流请求
- 移除广告标识符
- 维护以隐私为先的数据管道
挑战在于,服务端 GTM 目前并未提供用于解析 GCS 值的内置变量。未来这一现状或许会改变,但目前大多数实现方案仍依赖于:
- 手动读取原始事件数据键路径
- 创建对照表(Lookup Table)
- 使用基于正则表达式的逻辑
- 编写自定义模板
这些方法虽然可行,但随着项目规模扩大,往往会变得难以维护。
Basic GCS Consent State Reader 简化了这一流程,将同意状态解析封装为一个可复用的服务端 GTM 变量。
GCS Consent State Reader 的作用
该模板会从传入的事件数据中读取 GCS 值,并评估以下任一类别:
- 分析同意状态
- 广告同意状态
随后会返回:
granted或
denied具体取决于 GCS 值中编码的同意状态。
如果两类同意状态都需要,只需分别创建独立的变量实例即可。
Basic GCS Consent State Reader 服务端模板的核心特性
使用该模板时,有几点需要注意:
同时支持分析与广告同意状态
该模板可单独评估其中任意一类同意状态。
这样无需在多个变量中重复编写逻辑,就能轻松构建精准的触发条件。
兼容标准 GA4 同意信号
默认情况下,该模板会自动读取:
x-ga-gcs这是标记服务器将 GA4 请求处理为事件时,所包含同意参数的标准事件键路径。
对于大多数部署场景,无需进行任何额外配置。
支持自定义事件数据键
并非所有服务端 GTM 架构都完全依赖 GA4 请求。
如果你的基础架构会重新映射来自其他数据源的同意信息,也可以手动指定其他事件数据键路径。
这在以下场景中非常有用:
- 使用自定义收集器
- 代理网络请求
- 统一内部事件规范(Schema)
- 从其他端点转发数据
前提是这些数据已被重新映射为 GCS 格式。
可选的兜底(Fallback)处理
有时接收到的事件并不包含有效的 GCS 值。
常见原因包括:
- 未启用 Consent Mode
- 请求绕过了意见征求控制
- 事件来自非 GA4 数据源(或相关架构建构)
- 发送的值格式错误
该模板支持自定义回退(fallback)响应。
对于大多数部署场景,我的建议是:
Fallback = denied这样在拿不到意见征求信息时,也能默认遵循隐私优先原则。
不过,有些企业会在无需启用 Consent Mode 的地区运营独立的站点资产。这种情况下,将未定义的值默认视为“granted”(已同意)可能更为合理。
安装模板
截至本文撰写时,该模板仍在 GTM 社区模板库中等待审核。
在通过审核前,你需要直接从 GitHub 仓库下载并手动导入 .tpl 文件。

并下载其中的 template.tpl 文件。

模板过审后,你就可以直接在服务端 GTM 模板库中一键安装。

上架后,直接在模板库中搜索“Basic GCS Consent State Reader”即可。

以下配置步骤适用于从 GitHub 仓库手动下载模板的情况。
第一步:导入模板

进入你的服务端 GTM 容器:
- 前往模板
- 在变量模板下方,点击新建
- 打开右上角的操作菜单(三点图标)
- 选择导入
- 上传刚才下载的 .tpl 文件


第二步:创建变量
接下来:

- 前往变量
- 点击新建
- 选择 Basic GCS Consent State Reader

配置以下内容:

Consent Category(意见征求类别)

选择该变量需要评估的权限类型:
- 分析类权限(Analytics Consent)
- 广告类权限(Advertising Consent)
Event Data Key Source(事件数据键来源)

| 选项 | 说明 |
| Automatic (GA4)(自动读取) | 读取标准的 x-ga-gcs 值。推荐大多数场景使用。 |
| Manual(手动指定) | 允许自定义事件数据键的路径。 |

Fallback Behaviour(回退行为)
(可选)配置当意见征求值缺失时的处理逻辑。

合理配置回退设置,既能确保合规,又能保障数据统计的连续性,具体取决于你的服务端代码部署方式。
一种典型场景是用作隐私保护的兜底方案。比如,某个落地页虽然上线了 Cookie 授权弹窗,但疏忽漏接了 Google Consent Mode,此时该页面触发了 Google Analytics 事件。这种情况下,你可以将回退值设为 “denied”(已拒绝),从而确保在缺少授权信息时,依赖授权的标签和集成工具不会直接处理数据。
另一种我格外推荐的用法,是利用回退设置避免不同地区站点间出现不必要的数据断层。
这在跨地区运营的大型企业中非常普遍,比如同时拥有以下站点:
- example.com/us
- example.com/uk
- example.com/it
- example.com/es
在某些情况下,出于合规要求、预算控制或其他内部业务考量,企业可能仅在面向欧洲经济区(EEA)用户的站点上配置授权弹窗和 Google Consent Mode。
如果这些地区的站点共用一套服务端 GTM 架构上报数据,非 EEA 站点的请求中往往根本不含 GCS 值。若不配置回退值,这些事件可能会被直接当作未定义处理,进而影响服务端的整体数据采集与统计分析。
针对这类情况,可将 Basic GCS Consent State Reader 模板中的兜底选项配置为返回 “granted”,以确保在有意未部署同意模式(Consent Mode)的网站上,数据追踪仍能正常运行。
实际应用场景
如何利用该模板确保 Meta CAPI 或其他非 Google 转化 API 符合合规要求?具体流程如下:
基于用户授权触发代码
最常见的应用场景之一,就是控制是否允许执行相关代码(Tag)。
触发条件示例:
{{GCS - Analytics Consent}} equals granted
这样可以确保只有在用户同意分析统计时,分析类代码才会触发。
拦截广告请求
当用户拒绝广告授权时,你也可以直接阻止广告相关的请求。
这一机制特别适用于:
- Meta Conversions API
- TikTok Events API
- Reddit Conversion API
- Pinterest Conversion API
- LinkedIn Conversions API

向第三方服务商传递同意状态
如今许多第三方平台都要求在服务端请求中包含用户授权信息。
该变量可以直接用于请求载荷(payload)或字段映射中。
例如:
{
"analytics_consent": "granted"
}构建支持授权感知的统一数据管道
对于正在搭建隐私导向型监测架构的企业来说,在服务端 GTM 中集中处理授权状态,能让整个系统结构清晰得多。
与其在多个代码和集成渠道中各自维护授权逻辑,不如只评估一次授权状态,并在整条数据管道中复用。
第三步:在预览模式下测试
使用服务端 GTM 的预览模式检查接收到的事件数据。
根据传入的 GCS 信号,该变量应返回:
- granted
- denied
- 你所配置的兜底值
具体取决于接收到的 GCS 信号。

建议测试场景
| GCS 值 | 类别 | 预期结果 |
| G111 | Analytics | granted |
| G111 | Advertising | granted |
| G100 | Analytics | denied |
| G101 | Analytics | granted |
| G110 | Advertising | granted |
你还应该测试以下情况:
- 缺失 GCS 值
- 无效字符串
- 如果团队从自定义来源传递参数,需测试小写值(例如 g111)
- 非 GA4 事件源
问题排查
在使用 sGTM 的 Basic Consent Mode Reader 自定义模板时,如遇到常见的同意模式问题,可参考以下建议进行排查和解决。
变量始终返回 Undefined
这通常意味着传入的事件中不包含有效的 GCS 值。
打开预览模式,检查事件数据。
确认:
x-ga-gcs是否存在。

如果不存在,请确认:
- 客户端已启用同意模式
- GA4 正在正常发送授权信号
- 请求已正确到达服务端容器
返回了错误的授权状态
检查该变量实例配置评估的是哪一个授权类别。
请记住:
- 广告授权和分析授权在 GCS 字符串中对应不同的位置。
- 每个变量实例只负责评估一个类别。
部分事件正常,其他事件异常
并非所有传入的请求都带有同意模式信号。
这种情况常见于:
- 类似于非 GA4 数据架构的请求
- 自定义事件源
- 服务端直接生成的事件请求
- 绕过授权流程的数据
在这些情况下,兜底处理逻辑有助于保持系统行为的稳定性与可预测性。

写在最后
具备授权感知能力的服务端监测方案,正迅速从一项“加分项”变成各家企业的标配。
Google 已经通过 GCS 参数提供了所需的许可授权信息,但在各个代码和第三方集成中反复解析这些参数值,会带来不必要的复杂性。
Basic GCS Consent State Reader 简化了这一流程,它提供了一个可复用的服务端 GTM 变量,配置简单、易于测试且便于维护。
如果你的日常工作经常涉及:
- 服务端 GTM
- GA4
- Google Consent Mode(Google 同意模式)
- 服务端事件转发
那么这款模板能让你的许可授权逻辑更加清晰,部署实现也更易于维护。
在数据衡量或服务端代码部署方面需要帮助?
如果你在服务端 GTM、分析部署、数据衡量策略或注重隐私的数据收集方面需要支持,我很乐意与你交流探讨。
你可以通过 DumbData 联系页面与我取得联系。
以下资源或许也对你有帮助:
我们下期再见,祝你埋点顺手、数据衡量轻松无忧!
来源:DumbData Analytics · dumbdata.co