终于准确知道顾客是从哪里来的了

说顾客从哪里来,不是指顾客居住的地理位置, 而是指顾客找到我的产品,我的网站的方式。 最终付费的顾客是通过搜索引擎找到的,还是通过在哪个站点投放的广告, 还是通过adwords。这是我一直最关心的问题,也用了各种方法去分析,比如网页里插入Google Analytic的统计代码,用web log analyzer 分析自己网站的日志,但因为自己的共享软件是通过regsoft, regnow等注册服务提供商来完成,当用户最终确认付款时,已经离开了我的软件站点页面,Google Analytic和日志都不能确认这个用户是否付款。 很多时候把钱扔到各种推广方式上,但对每种推广方式能有什么具体效果则心里一点数也没有,只要月底一算账收入增长了,就觉得推广的方式还是有用。 如果下降了, 就不管有用没用,所有推广方式全给砍掉。

前天痛感这种状态不能再继续,于是自己修改了一下google analytic的代码来实现对顾客来源的跟踪。 Google Analytic会在客户端种植几个cookie,最有用的是__utmz, 记录了用户的来源信息,通过搜索引擎过来的用户还能找出关键词。但有个问题是,不能区分正常搜索结果过来的用户和通过adwords广告过来的用户。 这就需要自己做点工作了。

1.adwords广告的目标url设置特殊参数, 我就设定为 /index.html?ref=adwords

2.在index.html加入如下javascript代码 ,种植_isadwords cookie


var _isadwords;

_isadwords= _uGC(document.cookie, ‘_isadwords=’, ‘;’);

//判断是否cookie中已经存在isadwords字段,如果不存在就设置此字段
if( !_isadwords|| _isadwords== “-” )
{

//判断是不是adwords过来的用户
if( window.location.href.indexOf( “/index.html?ref=adwords ” ) > 0 )
_isadwords= “1” ;
else
_isadwords= “0” ;

document.cookie=”_isadwords=”+_isadwords+ “; expires=” + _uNx()+”;”;
}


这其中 _uGC()和_uNx()都是google analytic 的 script中提供的函数。_uGC()是在第一个参数中寻找以第二个参数开头,第三个参数结尾的子串。 _uNx()则是返回当前时间一年以后的时间,用做cookie的过期时间。

种下了cookie,剩下的问题就是怎么读出来了。先下载http://www.doyj.com/images/a.gif, 上载到你的站点图像目录里。 a.gif是一个只有一个透明像素的gif图像文件。然后在产品购买页面嵌入如下代码:

var _urefgifpath=”http://www.doyj.com/images/a.gif”; //这里要换成你的图像链接

var zx = _uGC(document.cookie, ‘__utmz=’, ‘;’); //取出__utmz cookie
var _isadwords=_uGC(document.cookie, ‘_isadwords=’, ‘;’);

var i3=new Image(1,1);
i3.src=_urefgifpath+”?”+”utmz=” + zx + “_isadwords=” + _isadwords + “&utmn=”+_uu;
i3.onload=function() { _uVoid(); }

代码中的_uu是google analytic中生成的一个随机数,=Math.round(Math.random()*2147483647);, 这是为了保证每次url都是不一样,客户端不会缓存对这个图像文件的访问。代码中的_uVoid()也是google analytic中的一个空函数。

这段代码其实就是new 出一个图像文件, 把cookie信息做为这个图像的参数返回给服务器,这样在日志中就会留下用户的cookie信息。因为这个图像文件是一个透明像素,并且是在javascript中new出来的,所以在页面中是不可见的。

因为在订单中有用户的ip, 每收到一个订单, 就可以去日志中去查找这个ip, 再查找这个ip访问a.gif时留下的参数,就能知道这个用户从哪里过来的了。

后记:写在这里的方法已经比我当时采用的方法又改进了一些, 当初想的方法,那是…………相当的蠢。 改进后的方法依然不好,还要去看日志文件,很麻烦,但至少实现了追踪用户来源的功能。方法还有很多改进余地,我这是抛砖引玉,先提出这么个思路,欢迎大家指正。