我一直在使用Google Analytics。对于我的一位客户,我们广泛使用广告系列跟踪。最近我们开始收集多渠道漏斗分析。使用它的主要原因是我们可以跟踪人们来自哪些广告系列,然后当有人填写查询表单时,我们设置了目标(查询感谢页面),因此Google Analytics可以将目标与允许该人访问感谢页面的广告系列。
我的客户今天问我,“这些信息非常有价值。更好的是,当访问者到达查询表单时,有一种方法可以从分析cookie中提取活动信息并将其放入表单上的隐藏字段中...因此,当提交表单时,销售接收它的人不仅会看到访问者填写的信息,而且还有一个字段,显示哪个活动允许该人最终填写查询表。“这不是逐字逐句,但希望你明白他们是什么正在要求。 我知道Cookie必须跟踪所有广告系列,因为Google Analytics会在报告中显示该信息。当有人登陆查询表单页面并将其放入隐藏字段(他们不希望客户看到该信息)时,它会自动提取该信息,因此销售部门可以看到它将真正完成报告系统。
如果有人知道如何做到这一点,或者有任何令人敬畏的见解。
答案 0 :(得分:8)
是的,有可能。
var GATrafficSource = (function(){
var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie)||[]).slice(1).pop().split('.').slice(4).join('.').split('|');
var vals = {};
for (var i = 0; i < pairs.length; i++) {
var temp = pairs[i].split('=');
vals[temp[0]] = temp[1];
}
return {
'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
'utm_campaign': vals.utmccn,
'utm_content': vals.utmcct,
'utm_term': vals.utmctr
};
}());
然后,您可以将所需的广告系列变量放入隐藏字段中。
例如,如果你有:
<input type="hidden" name="utm_source" class="gacampaign" id="utm_source">
你可以这样填写:
document.getElementById("utm_source").value = GATrafficSource.utm_source;
答案 1 :(得分:0)
在调试一些遗留代码时找到了这个帖子(实际上可能已复制/粘贴了这个帖子的现有答案!)。
我想我会添加一些关于相关问题的评论,这些评论会引导我到这里来,以免其他任何有同样问题的人在这里结束。
来自@ Yahel的答案的代码在编写时运行良好,但是当我将其重新编写为新的上下文时,它有时会抛出一个错误,该错误导致所有代码在Chrome中没有调用该情境在其计算机上任何Google Analytics Cookie。
我已将其转换为以下代码:
function getGATS(){
var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie)||[]).slice(1).pop().split('.').slice(4).join('.').split('|');
var vals = {};
for (var i = 0; i < pairs.length; i++) {
var temp = pairs[i].split('=');
vals[temp[0]] = temp[1];
}
return {
'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
'utm_campaign': vals.utmccn,
'utm_content': vals.utmcct,
'utm_term': vals.utmctr
};
}
另一个&#34; getter&#34;然后做了这个:
return $.extend({}, {
'is_constituent_checked' : $('#IsConstituent').is(':checked'),
'statuses' : getStatusesString()
}, getGATS());
那&#34; getter&#34;由&#34; addHiddenInputs()&#34;循环其返回值并将这些输入/值添加到DOM的函数。 (这适用于&#34; onSubmit&#34;表格后处理。)
=======
事实证明,当Chrome环境中没有GA Cookie的用户(&#34; alert(document.cookies);&#34;没有显示任何&#34; utm&#34 ;值)试图将我的表单,整个调用提交给&#34; addHiddenInputs()&#34;没能完成它的工作。
这是因为第一次调用&#34; .split()&#34; on &#34;(/(?:^ |;)__ utmz =([^;] )/。exec(document.cookie)|| [])。slice(1).pop( )&#34; *当该片段被评估为&#34; undefined&#34; (与没有Google Analytics Cookie的情况一样)。
将函数的主体放在&#34; try {}&#34;阻止并添加&#34; catch(错误){...}&#34; (在我的情况下,使用&#34; return {};&#34;因为&#34; ...&#34;)解决了问题。