在Tag Manager中实现GCLID与MSCLKID存储同步至HubSpot联系人
合并GCLID与MSCLKID捕获存储的Tag Manager脚本
我已通过现有代码在Tag Manager中实现GCLID的捕获与存储,用于更新HubSpot联系人,现在需要新增MSCLKID(Microsoft Ads点击ID)的相同功能,将两者合并为一个脚本。
合并后的完整代码
将以下代码添加到Tag Manager并设置全页面触发:
<script> // 通用URL参数获取函数 function getParam(p) { var match = RegExp('[?&]' + p + '=([^&]*)').exec(window.location.search); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); } // 生成带过期时间的存储记录 function getExpiryRecord(value) { var expiryPeriod = 90 * 24 * 60 * 60 * 1000; // 90天有效期(毫秒) var expiryDate = new Date().getTime() + expiryPeriod; return { value: value, expiryDate: expiryDate }; } // 处理GCLID的捕获、存储与表单填充 function handleGclid() { var gclidParam = getParam('gclid'); var gclidFormFields = ['gclid_field', 'foobar']; // 所有可能的GCLID表单字段ID var currGclidFormField; var gclidRecord = null; // 验证gclsrc参数,仅处理Google Ads来源的GCLID var gclsrcParam = getParam('gclsrc'); var isGclsrcValid = !gclsrcParam || gclsrcParam.indexOf('aw') !== -1; // 找到页面中存在的GCLID表单字段 gclidFormFields.forEach(function (field) { if (document.getElementById(field)) { currGclidFormField = document.getElementById(field); } }); // 如果URL中有有效GCLID,存储到localStorage if (gclidParam && isGclsrcValid) { gclidRecord = getExpiryRecord(gclidParam); localStorage.setItem('gclid', JSON.stringify(gclidRecord)); } // 获取存储的GCLID并验证有效期 var gclid = gclidRecord || JSON.parse(localStorage.getItem('gclid')); var isGclidValid = gclid && new Date().getTime() < gclid.expiryDate; // 填充到对应的表单字段 if (currGclidFormField && isGclidValid) { currGclidFormField.value = gclid.value; } } // 处理MSCLKID的捕获、存储与表单填充 function handleMsclkid() { var msclkidParam = getParam('msclkid'); var msclkidFormFields = ['msclkid_field']; // 所有可能的MSCLKID表单字段ID,按需修改 var currMsclkidFormField; var msclkidRecord = null; // 找到页面中存在的MSCLKID表单字段 msclkidFormFields.forEach(function (field) { if (document.getElementById(field)) { currMsclkidFormField = document.getElementById(field); } }); // 如果URL中有MSCLKID,存储到localStorage if (msclkidParam) { msclkidRecord = getExpiryRecord(msclkidParam); localStorage.setItem('msclkid', JSON.stringify(msclkidRecord)); } // 获取存储的MSCLKID并验证有效期 var msclkid = msclkidRecord || JSON.parse(localStorage.getItem('msclkid')); var isMsclkidValid = msclkid && new Date().getTime() < msclkid.expiryDate; // 填充到对应的表单字段 if (currMsclkidFormField && isMsclkidValid) { currMsclkidFormField.value = msclkid.value; } } // 页面加载完成后执行两个处理函数 window.addEventListener('load', function() { handleGclid(); handleMsclkid(); }); </script>
HubSpot配置步骤
- 在HubSpot中创建名为
msclkid的联系人属性 - 将
msclkid属性添加到目标表单,并设置为隐藏状态 - 确保表单中隐藏字段的ID与代码中
msclkidFormFields数组里的ID一致(如果你的HubSpot表单隐藏字段ID不是msclkid_field,请修改代码中的对应值)
内容的提问来源于stack exchange,提问作者Airport Shuttle of Phoenix
相关产品推荐
相关产品推荐

