You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过GTM部署GA4时,如何获取和设置client_id与session_id?

GTM环境下GA4手动跨域跟踪实现方案

一、获取Client ID和Session ID(源站点GTM配置)

由于全局gtag对象不可用,需通过GTM自定义变量提取GA4的会话标识:

  1. 创建自定义JavaScript变量(提取Client ID)
    在GTM中新建自定义JS变量,代码如下:

    function() {
      // 尝试从GA跟踪器实例获取
      if (window.ga && window.ga.getAll) {
        const trackers = window.ga.getAll();
        for (let tracker of trackers) {
          if (tracker.get('trackingId') === '你的GA4测量ID') {
            return tracker.get('clientId');
          }
        }
      }
      // 从dataLayer提取(适用于GTM隔离模式)
      const dataLayer = window.dataLayer || [];
      for (let item of dataLayer) {
        if (item.ga4?.client_id) return item.ga4.client_id;
      }
      return null;
    }
    
  2. 创建自定义JavaScript变量(提取Session ID)
    同理,新建自定义JS变量提取Session ID:

    function() {
      if (typeof gtag !== 'undefined') {
        let sessionId = null;
        gtag('get', '你的GA4测量ID', 'session_id', function(id) {
          sessionId = id;
        });
        return sessionId;
      }
      // 备用:从dataLayer提取
      const dataLayer = window.dataLayer || [];
      for (let item of dataLayer) {
        if (item.ga4?.session_id) return item.ga4.session_id;
      }
      return null;
    }
    

二、手动拼接跨域链接参数(源站点GTM配置)

给所有跨域跳转的链接添加client_id和session_id参数:

  1. 创建点击触发器
    新建触发器,触发条件为:

    • 触发类型:点击 - 所有元素
    • 触发条件:点击的链接 URL 不包含 {{主机名}}
  2. 创建自定义HTML标签
    新建自定义HTML标签,绑定上述触发器,代码如下:

    <script>
      document.addEventListener('click', function(e) {
        const link = e.target.closest('a');
        if (!link || link.hostname === window.location.hostname) return;
        
        const clientId = {{GA4 Client ID变量名}};
        const sessionId = {{GA4 Session ID变量名}};
        if (!clientId || !sessionId) return;
    
        const url = new URL(link.href);
        url.searchParams.set('client_id', clientId);
        url.searchParams.set('session_id', sessionId);
        link.href = url.toString();
      }, true);
    </script>
    

    注:如果存在表单提交、window.open等非链接跳转场景,需额外添加对应触发器和处理逻辑。

三、目标站点接收并设置会话(目标站点GTM配置)

在目标站点的GTM中提取参数并绑定GA4会话:

  1. 创建URL查询参数变量
    分别新建两个URL查询参数变量:

    • 变量名:GA4 Client ID(来自跨域),参数名:client_id
    • 变量名:GA4 Session ID(来自跨域),参数名:session_id
  2. 修改GA4配置标签
    找到目标站点的GA4配置标签,在字段设置中添加:

    • 字段名:client_id,值:{{GA4 Client ID(来自跨域)}}
    • 字段名:session_id,值:{{GA4 Session ID(来自跨域)}}
      注:需确保仅当URL中存在对应参数时才应用该设置,可通过触发器条件限制(如{{GA4 Client ID(来自跨域)}} 不为空)。

四、验证与调试

  • 使用GA4实时报告查看跨域访问是否被标记为同一用户会话
  • 通过GTM预览模式检查变量值是否正确提取、链接参数是否成功拼接

内容的提问来源于stack exchange,提问作者Ben Murden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:57:23