[英]How can I force the __utmz cookie to be set on the first page load
我正在使用一个可爱的小功能来跟踪我的网站的访问者并将信息转储到Salesforce。 但是,许多表单提交都没有设置许多值,因为(据我所知)cookie直到第二页加载时才设置。
我已经对此进行了测试,这似乎是正确的,问题是许多人在第一页上填写了表格,而通过这些提交我没有得到任何信息。
我正在按以下方式加载GA:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-29066630-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
然后运行一个php函数来解析__utmz cookie:
function tracking_cookie() { // ver 1.5
$trackarr = split('[|]',$_COOKIE["__utmz"]);
$conversion = $_COOKIE["Conversion"];
for($i=0;$i<count($trackarr);$i++){
$keyvalues=split('[=]',$trackarr[$i]);
$key=substr($keyvalues[0],-6);
switch ($key){
case "utmcsr":
$cookie['SearchEngine'] = $keyvalues[1];break;
case "utmccn":
$cookie['SearchCampaign'] = $keyvalues[1];break;
case "utmcmd":
$cookie['SearchType'] = $keyvalues[1];break;
case "utmcct":
$cookie['AdText'] = $keyvalues[1];break;
case "utmctr":
$cookie['Keyword'] = $keyvalues[1];break;
case "mgclid":
$cookie['isPPC'] = $keyvalues[1];break;
}
}
在此之后,我还有更多代码正在运行。 关于如何强制cookie首次加载的任何想法?
在第二页加载之前,cookie是不可读的-因为它们是在请求中发送的。
您可以做的是在初始页面加载时(在PHP中找不到_utmz cookie)附加另一个JS文件/调用一些JS,以便在页面加载后将ajax命令运行回您的服务器。
这将作为第二个页面加载,并且应该可以访问新的cookie(并且用户不会离开该页面)
您是否看过用于Google Analytics(分析)的Force.com工具包? 从Google获得正确的信息可能更可靠。 不知道您要跟踪的内容或如何将其存储在Salesforce中,很难提供更多详细信息。
https://github.com/mavens/Force.com-Toolkit-for-Google-Analytics
Google网上论坛也有一些讨论-http: //groups.google.com/a/googleproductforums.com/forum/#! category- topic/analytics/ discuss- tracking - and - implementation - issues/bVR84di07pQ
您确实说过“许多表单提交都没有”,这是否意味着您确实会不时获取数据? 您可以将其范围缩小到浏览器吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.