10 July 2012

之前我曾有一篇Blog谈到了使用GA监测商务通等在线客服的对话,现在回过头去想其实当时的思路把问题搞得复杂了。

当时的思路是找到对应的DOM仅检测需要的DOM元素的click事件。那也就意味着对于不同的在线客服系统都需要修改code,而实际上只要用一个通用的JS监测a标签以及img的click事件就可以完成监测的目的,这样我们需要做的就是在GA中指定对应的地址。下面我将介绍三种方法来实现对在线客服的监测:利用Skyglue提供的自动监测服务;利用Google提供的Autotrack.js;利用Justin的自动跟踪脚本。(已有方法只对Flash之外的图标有效,对flash的咨询图标无效。)

一、利用SkyGlue提供的自动监测服务

关于SkyGlue介绍,请参见自动标记所需要的互动-傻瓜级GA自动标记服务SKYGLUE

SkyGlue的安装比较简单,你所需要做的只是将SkyGlue的代码放在GA代码的后面即可。

接下来你有两个选择,一个选择是直接使用默认设置。这时对于在线客服相当于一个出站链接,SkyGlue会将其记录为Click::(outbound)::A::对应URL。另外一个选择是在线客服指定一个自定义名称,比如我指定了Click::在线客服这个名称。

下面你所要做的就是在GA中创建一个目标,将这个事件定义为目标。请注意SkyGlue目前是将每个Click都记录为事件,因此你要使用事件目标,SkyGlue只会使用Event Category一个参数。因此在GA的目标设置中只要设置为Event category等于对应名称即可。这样你就完成了利用SkyGlue跟踪在线客户的按钮点击。

二、利用Google提供的Autotrack.js

这个JS最初是肖庆同学发现的。这个JS也提供了对DOM元素的Click事件的监测,但是与SkyGlue相比灵活性较差,也没有灵活的自定义功能。

这个脚本的部署方式也很简单,代码样例如下:

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
    <script>

      new gweb.analytics.AutoTrack({
        profile: 'UA-18159656-3',
        heatMapper: true});
    </script>

你要做的是将profile替换为你的网络资源ID,这个脚本自身已经包含对GATC的调用,因此,不需要再调用GATC。hearMapper这个参数是一个可选参数,true表示开启热图。细分的同学可能发现,我们对GA的一些自定义没法地方设置了,比如_addOrganic,_setDomaiName这些方法,其实这些方法依然是可以添加,只是这个修改要在autotrack.js中进行,修改之后,你应把这个脚本放在自己的服务器上,并调用修改过的脚本。

部署好这个脚本后,它会自动跟踪页面上的点击数据,只支持A标签的点击事件并将其分为link click和Outbound Click两类,相比之下,SkyGlue的监测要更加全面。

autotrack.js使用Event category来对事件进行分类,主要有三类事件,heatmap,link click(站内的点击)和Outbound Click(出站的点击)。在线客户的click事件应该在outbound click中;用Event Action来标记对应的链接,heatmap的Action则统一为click;用Event Label来标记事件发生的页面,heatmap则是对应的坐标。

了解了这些以后,你需要做的是点击一下对应的在线咨询按钮,看一下对应的URL并在GA中对其设置事件目标。

三、利用Justin提供的自动跟踪脚本

Justin提供过下面这段脚本,这段脚本自动实现了对出站链接跟踪,我略微修改了一下也跟踪了站内的Link,同时增加了对img Click事件的跟踪。

<script>
//
//  By default, this script will track links to the follwoing file 
//  types: .doc, .xls, .exe, .zip and .pdf
//
var fileTypes    = (".doc",".xls",".exe",".zip",".pdf");

// This is a debug mode flag.  Change to '' for production.  In debug mode
// the script will display an alert box and skip sending data to Google 
// Analytics.
//
var debug          = '';

//
// This variable controls how outbond links will appear
// the GA reports.  By default, external links will appear as
// '/outbound/' where URL is the URL in the anchor tag.
//
//var extIdentifier  = '/outbound'+_udl.pathname+'/'+_udl.search+'/';

/// No need to change anything below this line ///

if (document.getElementsByTagName) { 
  // Initialize external link handlers 
  var hrefs = document.getElementsByTagName('a'); 

  for (var l = 0; l < hrefs.length; l++) { 
    //protocol, host, hostname, port, pathname, search, hash 
     if (hrefs[l].hostname == location.host) {
      var path = hrefs[l].pathname;
          if (path.indexOf(fileTypes) != -1) {
               startListening(hrefs[l],"click",trackDocuments);
          }else {
               startListening(hrefs[l],"click",trackLinks);
          }
    } else {
      startListening(hrefs[l],"click",trackExternalLinks);
    }
  }
}

function startListening (obj,evnt,func) { 
  if (obj.addEventListener) {
    obj.addEventListener(evnt,func,false); 
  } else if (obj.attachEvent) {
    obj.attachEvent("on" + evnt,func); 
  } 
} 

function trackDocuments (evnt) { 
  var url = (evnt.srcElement) ? "/" + evnt.srcElement.pathname : this.pathname; 

  if (!debug) {
	_gaq.push(['t._trackEvent','document',url,,,,]);
	  } else { 
		  alert(url);
		  return false;
  }
} 

function trackExternalLinks (evnt) { 
  var lnk; 
  if (evnt.srcElement) { 
    var elmnt = evnt.srcElement; 
    while (elmnt.tagName != "A") { 
      var newelmnt = elmnt.parentNode; 
      elmnt = newelmnt; 
    } 
    lnk = "/outlinks/" +elmnt.hostname + "/" + elmnt.pathname + elmnt.search; 
  } else { 
    lnk = "/outlinks/" + this.hostname + this.pathname + this.search; 
  } 

  if (!debug) {
		  _gaq.push(['_trackEvent','outlinks',lnk,,,,]);
	  } else {
		  alert(lnk);
		  return false;

  }
}
function trackLinks (evnt) {
  var url = (evnt.srcElement) ? evnt.srcElement.pathname : this.pathname;
  _gaq.push(['_trackEvent','links',url,,,,]);
}

function trackImgs (evnt) {
  var url = (evnt.srcElement) ? evnt.srcElement.src : this.src;
  _gaq.push(['_trackEvent','img',url,,,,]);
}

var imgs = document.getElementsByTagName('img');

  for (var l = 0; l < imgs.length; l++) {
        startListening(imgs[l],"click",trackImgs);
    }
</script>

使用这段脚本的一个好处是不需要修改你原来的GATC,如果你进行了一些自定义,那么需要去autotrack中修改。同时这个脚本也支持对跟踪器名称的定义,如果你为你的GA跟踪器指定了不同的名称,那么你只需要对trackLinks,trackImgs和trackExternalLinks进行对应的修改即可。这个脚本使用Event Category来标示Click的类型,共三种imgs,links以及Outlinks,Event Action则是对应的URL。

与前面两个方式类似,你需要实际点击一下在线客服,记录下实际URL并将其在GA中设置为事件目标。

目前我的网站同时使用了三种跟踪方式,感兴趣的同学可以测试一下,每点击一个link会产生4个utm.gif的请求。

好了,关于在线客服的监测就介绍到这里,如果关于这方面您有任何的疑问,欢迎给我留言。

PS:百度统计也提供了类似的解决方案:

百度统计推出高级功能,让浮窗无所遁形

转化分析代码安装说明-技术文档



分享到: 更多
友荐云推荐