如何配置Google Tag Manager实现同意授权后跟踪着陆页标签?
解决Iubenda CMP + GTM 首次同意后着陆页跟踪问题
核心思路
通过捕获Iubenda的同意状态变更事件,结合GTM触发条件调整,让标签在用户首次同意时立即发送当前着陆页的跟踪数据,无需等待二次页面浏览。
步骤1:配置Iubenda同意状态变量
在GTM中创建自定义JavaScript变量,用于获取当前用户的对应同意状态(以Analytics类同意为例):
function() { // 调用Iubenda官方API获取同意状态 if (window._iub?.consent?.consents) { return window._iub.consent.consents.analytics; // 替换为你需要的同意类型,如marketing } return false; }
命名该变量为Iubenda_Analytics_Consent。
步骤2:捕获Iubenda同意变更事件
Iubenda在用户提交同意后会触发状态更新,你有两种方式捕获该事件:
方式A:利用Iubenda内置回调(推荐)
在网站的Iubenda初始化代码中添加回调,当对应同意被授予时,向GTM的dataLayer推送自定义事件:
_iub.csConfiguration.onConsentUpdated = function(consent) { // 当Analytics同意被授予时,推送事件 if (consent.consents.analytics) { window.dataLayer.push({ 'event': 'analytics_consent_granted', 'current_page_url': window.location.href }); } };
方式B:监听GTM中的默认同意事件
如果你在GTM调试模式中已经看到同意更新的事件(如iubenda_consent_updated),可直接使用该事件名,无需修改网站代码。
步骤3:调整GTM标签触发条件
以GA4页面浏览标签为例,修改其触发条件:
- 保留原有的所有页面浏览触发器,添加过滤条件:
{{Iubenda_Analytics_Consent}}等于true,同时新增「已发送页面标记」的判断(避免重复发送)。 - 新增自定义事件触发器,事件名称设为你在步骤2中定义的事件名(如
analytics_consent_granted),同样添加过滤条件:{{Iubenda_Analytics_Consent}}等于true。
步骤4:添加防重复发送机制
创建一个本地存储变量(命名为Page_View_Sent),存储键设为gtm_page_view_tracked,类型选择「本地存储」。
在GA4标签的「高级设置」中,添加「设置变量」动作:将Page_View_Sent的值设为{{Page URL}}。
然后在两个触发器的过滤条件中,新增:{{Page_View_Sent}} 不等于 {{Page URL}}。
步骤5:测试验证
- 打开GTM预览模式,清除网站Cookie后首次访问页面。
- 拒绝所有同意,确认GA4标签不触发。
- 打开Iubenda弹窗,选择同意Analytics类授权,查看dataLayer中是否出现自定义事件,同时确认GA4标签触发并发送当前页面的page_view数据。
内容的提问来源于stack exchange,提问作者Mathieu Lalonde
相关产品推荐
相关产品推荐

