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

求助:用Google Tag Manager存储UTM参数到Cookie的脚本无响应

问题分析与解决方案

核心问题:函数未执行

你编写的脚本仅定义了storeUtmParameters函数,但从未调用该函数,导致逻辑完全没有执行,自然看不到Cookie和日志输出。

修复后的完整脚本

<script>
console.log("UTM存储脚本已加载");  

function getQueryParam(url, param) {
  var queryString = url.split('?')[1];
  if (!queryString) return null;

  var params = queryString.split('&');
  for (var i = 0; i < params.length; i++) {
    var keyValue = params[i].split('=');
    if (keyValue[0] === param) {
      return decodeURIComponent(keyValue[1]);
    }
  }
  return null;
}

function setCookie(name, value, days) {
  var expires = "";
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  // 补充SameSite属性,避免嵌入场景下的Cookie拦截
  document.cookie = name + "=" + (value || "") + expires + "; path=/; SameSite=Lax";
}

function storeUtmParameters() {
  var utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'ad_id', 'adset_id', 'campaign_id', 'site_source_name', 'adset_name'];
  var eventData = {};

  for (var i = 0; i < utmParams.length; i++) {
    var paramValue = getQueryParam(window.location.href, utmParams[i]);
    if (paramValue) {
      eventData[utmParams[i]] = paramValue;
    }
  }

  if (Object.keys(eventData).length > 0) {
    console.log("检测到UTM参数,存储Cookie: FbAdUTMCookie", eventData);
    setCookie('FbAdUTMCookie', JSON.stringify(eventData), 30); // 存储30天
  } else {
    console.log("未检测到UTM参数,跳过Cookie存储");
  }
}

// 关键:调用函数执行逻辑
storeUtmParameters();
</script>

额外优化与检查点

  • 触发时机验证:确保GTM的触发条件是「DOM就绪」或「页面加载完成」,且仅当URL包含UTM参数时触发,避免不必要的执行。
  • Cookie查看方式:在浏览器控制台输入document.cookie即可查看当前域名下的所有Cookie,或通过开发者工具的「Application」→「Cookies」面板查看。
  • SameSite属性:补充了SameSite=Lax,避免Calendly嵌入场景下的Cookie拦截问题,确保Cookie能正常写入。
  • 日志增强:添加了无UTM参数时的日志提示,方便快速排查问题。

后续步骤(重定向后恢复UTM)

当访客从Calendly重定向回你的页面时,需要另一个脚本读取Cookie中的UTM参数并传递给Google Analytics:

<script>
function getCookie(name) {
  var value = "; " + document.cookie;
  var parts = value.split("; " + name + "=");
  if (parts.length === 2) return parts.pop().split(";").shift();
}

function restoreUtmParameters() {
  var utmCookie = getCookie('FbAdUTMCookie');
  if (utmCookie) {
    var utmData = JSON.parse(utmCookie);
    console.log("读取UTM参数", utmData);
    // 发送自定义事件到GA,关联UTM参数
    gtag('event', 'calendly_booking_completed', utmData);
    // 可选:删除已使用的Cookie,避免重复上报
    setCookie('FbAdUTMCookie', '', -1);
  }
}

// 页面加载时执行恢复逻辑
restoreUtmParameters();
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:45:01