Google推出“流视觉化 Flow Visualization”功能已经有一段时间了。现在写篇博客来对这一功能做个简单介绍。

在以往,GA报表中只提供了“导航 ”和“进入路径”等简单的报表,功能和实用性都很有限。譬如,在顶级路径报表中,经常会出现几千种不同路径的转化。这对网站分析并无太多裨益。

多渠道路径的根基:节点

所有的“流视觉报表”都是基于节点的。每个节点可以看作是多个页面的组合,或是某项度量指标的分析维度。“流视觉报表”最令人振奋的功能是其智能算法来生成页面组合(节点)。例如,节点会把带有不同查询参数的同一个页面进行自动组合,对于现代几乎都是基于数据库的动态网站来说,就不会产生无穷尽的路径。

image

此外,除了智能算法产生的组合,你也可以自定义自己的节点!!!下面,我做一个简单介绍。

在新的“流视觉报表”报表中,展示了访问者是如何顺着节点往下访问,以及在什么节点上离开访问流(flow,如离开网站)。对于转化分析来说,数据视觉化和视觉化的可操作性是非常重要的。如果你要分析特定问题或场景,你就会想在当前情景下能很容易的对数据进行向下钻取的分析操作。同时,这种数据可视化也支持个人特定目的的分析。

查看“目标流”报表

报表位于GA新版:标准报告 > 转化 > 目标 > 目标流

“目标流”报表对传统点击路径报表进行了耳目一新的革命。以往我们看点击路径,是从一个页面到另一个页面的跳转,现在则是节点与节点直接的点击流转。分析之旅从最左边的节点开始,你还可以选择特定访问细分,轻而易举的对访问流量进行维度细分,这样你就能轻而易举的回答,来自特定营销活动、流量来源、访问地区的用户是如何转化的!!!

蓝色的连接线是节点与节点直接的连接,表示前后两个节点的访问次数。红色的节点则是在转化流中,有多少访问中途离开了。通过这种可视化,让繁复的数据变得非常容易解读,简洁性就是“目标流”最强大最耀眼的特性。

image

譬如,我们可只关注特定流量来源的数据,如“百度”。从“流量来源维度”中选择“流量”,然后点击“Baidu”方块,选择“突出显示途径此处的流量”。这样,即可看到来自该流量来源

image

此外,还可以使用“连接”滑块来调整视图展示,更美观易读。

image

这样,你就能了解网站访客都是来自何处,跟随他们的访问轨迹、跳出/退出率,评估网站的转化绩效和进行关键页面的优化。

image

导航流报表

报表位于GA新版:标准报告 > 受众群体 > 访问者流

任意选择某个节点,你可以看到的前、后节点的访问情况。

image

创建和编辑节点

点击顶部节点的齿轮按钮,可使用正则表达式,或其他基本过滤模式,来把特定页面进行组合成一个节点。

image

譬如,某个跨国公司的网站可能会把来自美国的流量归到“美国”节点上。

image

补充参考资料:

http://support.google.com/analytics/bin/answer.py?hl=zh-Hans&answer=1709397   Google Analytics官网的详细操作说明

 

每个网页有大量的链接,如何了解用户会点击哪些链接,以及这些点击会产生什么样的商业结果?我们可以利用Google Analytics中的“网页内分析”功能来回答这些问题。这里,我介绍一下如何使用“网页内分析”的功能和数据解读。

1. 访问“网页内分析”功能

进入GA报表后台,在左侧导航栏内找到 “内容”- “网页内分析”模块(截图下方红圈处)

image

点击链接,可以看到“网页内分析”的界面,左侧有“内容详情”(含访问量及相关统计信息)- “入站来源”(进入当前页面的访问路径,也就是访问者从哪个页面链接引过来的) – “站外目标网页”(离开当前页面后的访问路径,也就是访问者接下来访问什么页面);网页主体部分内将自动加载嵌入小秘书网站页面,并且页面内的链接上会浮现气泡图和相应统计数据。

image

2. 几个关键指标的说明

  • a) “网页内分析”的默认指标是“点击次数”,但实际上GA并非跟踪鼠标的点击行为,而是根据链接目标页面的网页访问(PV)行为进行统计。这样产生的一个问题就是,该页面内的多个链接可能会指向同一个链接目标页面,这样的话,这些相同链接的指标数值就是一样的(目标页面url一样)。GA针对这种情况做了一些标记:

clip_image005 “首页”存在多个指向链接,气泡图用虚线进行标注;“找餐厅”只有唯一指向连接,则是实线

当我们把鼠标停留在有多个指向链接的气泡图上,该网页内相同指向链接的气泡图也会被黑亮显示。如下图:

clip_image007

  • b) 气泡图内的数据计算:
  • 绝对值指标:

“点击次数”=该链接被访问过多少次;

“收入”=“访问过当前网页该链接的所有访问进程中,曾经购买的现金券的金额数”

“目标      1”=“访问过当前网页该链接的所有访问进程中,有多少次访问进程曾经在网上订餐”

  • 相对值指标:

“点击率”=该链接被访问过的次数 / 当前页面所有链接被访问的次数;

“收入”=“访问过当前网页该链接的所有访问进程中,曾经购买的现金券的金额数” / “访问过当前网页所有链接的所有访问进程中,曾经购买的现金券的金额数”

“目标 1”=“访问过当前网页该链接的所有访问进程中,有多少次访问进程曾经在网上订餐”/ “访问过当前网页所有链接的所有访问进程中,所有访问进程曾经在网上订餐的总次数”

注意:这里的相对值指标,并非是“转化率”的概念,而是某一个链接在该网页所有链接访问指标中所占的比重!

3. 分析举例:

首页Banner幻灯片2指向的链接http://www.xiaomishu.com/square/food/special_5999 ,指标数据如下:

image

我们看到,在统计期内,获得了172次点击(浏览次数),在访问过此链接的所有访问进程中,产生了价值“1800.00”的目标价值(我们预设了每次网上订餐均为一次目标完成,价值100元),以及18次网上订餐和1次兑换礼品。172次的点击,占首页总链接点击数的0.5%,分别各占所有首页访问进程目标1完成和目标价值的0.6%。

从首页进入目标网页http://www.xiaomishu.com/square/food/special_5999 (截图下半部分),我们可以看到访问者在该页面点击过哪些链接,以及从哪些路径访问到该页面(除首页Banner幻灯片广告链接外)

clip_image010

clip_image012

4. 常见问题

  • 某些连接为什么没有数据?

页面中所有的出站链接

Google Analytics默认不会追踪出站链接,所以对于页面中所有指向站外的链接都无法统计到点击次数。此外,指向站内子域名的链接,GA也不会进行统计,譬如www.xiaomishu.com某个网页中指向wedding.xiaomishu.com/ 子站的链接。

页面中包含在JS/Flash中的链接

当页面中的链接包含在JS/Flash中时,Google Analytics无法追踪到这部分点击的数据,同样热力图中也不会包含这些链接的点击次数。

网站内使用了Google Analytics的虚拟页面trackPageView()来跟踪链接,由于虚拟页面会人工改写链接url,GA不能获取原始url信息,所以无法跟网页内的真实链接进行匹配了。

  • 下载,订阅等功能性按钮

下载,订阅,视频播放等非页面浏览行为默认都不会被Google Analytics追踪到。解决的方法同样是使用虚拟页面进行追踪。

链接目标页面中不包含GATC

Google Analytics利用后续页面的PV计算前一页面链接的点击量,所以,如果碰巧后面的页面没有实施GATC,那么Google Analytics也就没有数据用来计算热力图中的链接点击量了。

  • 整页点击量汇总等于100%吗?

是的,整个页面中各个链接的点击量占比加在一起是等于100%的。

 

上周四Google宣布将对Google Analytics中的访问次数/访问进程(visit/ session)的定义进行改变 – 官方原文http://analytics.blogspot.com/2011/08/update-to-sessions-in-google-analytics.html。最关键的变化在于,新的定义中,无论何时,访问者从不同的来源重新访问网站,都会计算为一次访问。此前,只有访问者在30分钟没有网站访问动作后,才会计算成为一次新的访问。第二个变化是,浏览器关闭不会结束一次访问进程。

Google认为,这次改变影响不会很大,大部分GA用户只会看到大约1%左右的变化。然而,有一些却反映有超过10%的变化幅度。对GA数据来说,影响最明显的是比率指标,譬如转化率,弹出率和网站平均访问时长。

哪些指标会受到影响?

首先可以确定的是,绝对会受影响的指标是访问次数(visits)。对“唯一访问者 UV”、网页访问数量PV、转化率、网站停留时间等,应该是没有影响的。

随着访问次数(visits)增长,那些以访问次数为分母的比率指标都会下降,譬如每次访问的页面浏览数,转化率和网站平均停留时长。

对跳出率(bounce rate)来说,则有些特殊。如果访问者通过某个访问来源来到网站并点击了某个页面,然后她又跳到别的访问来源,譬如用搜索引擎重新进行搜索,在结果页面点击某个结果链接又回到了之前的网站,那GA就会针对第一个访问来源计算一次跳出。这样,对一些网站来说,跳出率就可能会增长。

另一个会受特别影响的指标是 %新访问者 。访问者重新进入网站,产生第二次访问,会被认为是 回访者(Return Visit)。因此 %新访问者 这个指标会下降。

对我的网站指标会造成哪些的影响?

新的定义会根据网站的不同类型而呈现不同程度的影响。这取决于访问者是否会通过多个访问来源来重新进入网站。有些网站可能并不会受影响。而某些是用Google提供的内部搜索服务或第三方聚合网站,则会受很大的影响,因为访问者使用这些功能时,总是被认为是重新进入网站。

具体的影响程度,可能需要一段时间的观察来进行判断。

Google Analytics的数据是否还可靠?

一个关键的问题是,定义的变化是否会影响我们对网站或商业绩效的理解,是否会影响我们用GA数据来改进绩效?从长期角度来看,一点儿也不会。

无论访问次数的定义是否精确,以往和现在的数据是否正确,都取决于所处时期的定义。现在的数据可能跟上几周不能直接进行比较,但过几周后,就不是问题了。毕竟,我们在评估绩效时,更多的是看当下的数据,这一变化并不会营销我们对绩效的理解。

某些人可能会面临的当前困境是,他们刚好前几天刚发起一场营销活动或推出网站新功能。那这些人就可能有点儿运气不太好,不过抗一抗也就过去了。

值得探讨的是,从这个指标的两种定义来看,我们是否能从中更好地理解商业绩效呢?

如何检查数据变化?

定义发生变化的时间是8月11号,但被影响数据的时间可能会根据不同时区而有所不同。建议:从每日的关键指标从抓取一些数据出来,然后比较它们的变化。如果你看到数据发生了变化,那这个数据会在11号或12号左右出现较大的变化,然后逐渐平缓下来。

Change-from-GA-definition2

为什么Google要这么做呢?

可能Google想要让网站分析的数据更容易理解一些吧,尤其是针对线上营销者。现在,访问次数的定义更简单,每次某人进入网站,就是一次访问。Google公告也说了,希望能把不同渠道漏斗的数据进行对齐一致,这可能是一个关键的决策因素。

还有一个原因,可能是Google Analytics与AdWords在访问次数上定义的差异:访问者可能多次点击您的广告。如果一个人在同一会话中多次点击一个广告,AdWords 会记录多次点击,而 Analytics(分析)会将单独的综合浏览识别为一次访问。这是访问者在进行比较购物过程中的常见行为。(http://www.google.com/support/analytics/bin/answer.py?answer=57164

 

最近看到一些电子商务网站在部署Google Analytics代码时,只是简单的加入了默认的GA页面跟踪代码,这实在是对GA这一强悍的免费网站分析工具的一个巨大浪费。因此,写了一个针对电子商务网站的GA代码部署片子,简要介绍GA的功能和部署可能性。

 

Google Analytics Mobile SDK 为Android移动应用提供了跟网站分析几乎一样的行为跟踪能力,譬如高级细分,目标(goal)和自定义报表。现在,Google在Google Analytics Mobile SDK 里了又对页面访问和事件标签里加入了自定义变量(custom variables)功能!

自定义变量能更好的去跟踪移动用户的使用数据,并作为数据的细分参数。譬如:

  • 免费 vs 付费用户:有多少比例的用户从demo版转化成全功能版?这中间花了多长时间?
  • 应用版本:哪个应用版本的用户最多?哪个版本流失了一些用户?找出问题所在,快速修正!
  • 平台版本:如果你的应用对Android系统最低版本有所要求,是否会造成用户进入使用的障碍?你应该向下兼容,还是充分利用新版本的特性?

你也可以用自定义变量来了解用户在交互操作时的习惯:

  • 交互模式:用户更多的使用菜单项还是长按呼出命令?
  • 帮助/教程:用户在观看内置教程后,会去探索应用中的多少种特性?用户是否会因为新加入帮助/教程而去使用之前并不使用的特性?付费用户的转化比例?
  • 水平 vs 垂直操作:用户更喜欢使用哪种模式来操作应用,水平方向或垂直方向?
 

昨天我用Google Analytics查看博客来源关键词的报告,发现有一位读者在检索如何用GA跟踪使用Frames/iFrames网页时,降落到本博客。不过遗憾的是,我之前的博文都没有对这一问题进行阐述。下面,我就补上。希望这位朋友还能回来看到这个解决方案。

首先,毫无疑问的是,GA肯定可以跟踪使用框架frames的网站。然而,在安装和部署跟踪代码时,需要小心谨慎。使用框架网页带来的最常见的问题是,最初的访问来源信息可能会不正确。

Frames

在把GA跟踪代码部署到使用框架的网站时,要确保frameset和frame里的网页都安置了GA跟踪代码。如果两个页面都没有打上标签,GA肯定不能正确的跟踪访问来源信息。

这是由于浏览器使用DOM主框架的信息来设置访问来源信息。所有在主框架内的网页,都把主框架视作访问来源。如果主框架内只有一个页面包含GA跟踪代码,那访问的来源信息将被设置为主站,而不是真正的来源信息。

把框架集Frameset和里面的网页都打上标签后,会带来一个副作用,也就是会人为的让某些网页的浏览量出现“虚高”,尤其是框架集Frameset页面。如果这个Frameset页面并不重要的话(譬如,只是一个导航菜单,或者页头),那可以考虑用GA过滤器把它排除掉。

iFrames

对于使用iFrames的网站而言,用GA跟踪也会出现跟标准框架frames所带来的同样问题。如果外部网页没有用GA跟踪代码进行标记,那最初的访问来源信息将会丢失。

使用iFrames另一个常见问题是,跟踪第三方的购物车。如果你的网站使用第三方提供的购物车,并用iFrame来把购物车嵌进网站,那要跟踪从最初网站到购物车网站的访问进程将会变得很难实现,因为跟踪cookies必须要传给购物车网站。

这种跟踪过程,跟使用GA跟踪第三方网站的标准设置(也许以后会谈这个问题)有所不同。对于标准的第三方网站设置,我们可以利用 _link() 和 _linkByPost() 的方法(method)来通过URL把cookie值进行传递。然而,在iFrame里就不能使用这些方法了,因为 _link() 和 _linkByPost() 都会对浏览器进行转向(redirect),这就是iFrame带来的问题。

不要担心,还是有解决方案的。在这种配置下,可以利用 _getLinkerUrl() 来动态的把跟踪cookie值加入到iFrame的来源里:

var iFrame = document.getElementById("iFrame");
iFrame.src = "_gaq.push(['_getLinkerUrl', 'http://www.iFrame-domains.com/']);

补充:

使用Internet Exlorer(6及更高版本)和Safari时,这种实施方式可能会带来一些跟踪问题。造成这种问题的根源是,某些浏览器在从第三方网站请求内容时要求传递要求P3P隐私标头。尽管传送P3P标头也是可能的,但要写跨浏览器的代码还是有难度的。如果你有兴趣的话,可以看这里来获取更多关于生成P3P标头的信息

 

异步跟踪代码可以让浏览器在后台加载ga.js时继续渲染网页。由于在ga.js完成加载前,浏览器可能会遇到跟踪API请求,因此需要对跟踪代码使用不同的句法(syntax)。这里有一些传统和异步语法的一对一比较迁移案例

异步语法

_gaq 是把异步语法实现的对象。它通过队列方式运行,采取先进先出的数据结构来收集API请求,直至 ga.js 准备就绪来执行。要在这个队列中添加数据,使用 _gaq.push 方式。

要推送一个API请求到队列中,你必须把它从传统JavaScript语法转变成一个命令组(command array)。命令组是服从特定格式的简单的JavaScript阵列。在命令组中的第一个元素是你要请求的跟踪者对象模式的名称。它必须是字符串。余下元素是你希望向跟踪者对象模式传递的那些参数。这些可以是任意的JavaScript值。

下面时使用传统语法请求 _trackPageview() 的代码。

var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();

同样函数的异步语法代码是对 _gaq.push 发出两次请求。

_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

在异步语法这,跟踪者对象的创建已经被说明了,但我们仍然要正确的设置网站属性ID。 _setAccount 模式增加了这一函数。所有的跟踪者对象模式都可以以传统或异步方式实施。只是语法不同而已。

HTML事件处理器

异步跟踪语法也可以用在DOM事件处理。例如,下面的按钮在被点击时产生了一次事件。

尽管这个按钮在 ga.js 加载前被点击,这次事件也会被捕捉最终被执行。如果用传统跟踪方式,浏览器可能会忽略这种情景。

推送功能

除了命令组,你也可以把功能对象推送到 _gaq 队列。这个函数包含任意JavaScript和类似的命令组,它们能顺序执行被推送给 _gaq。这个技巧在用来向跟踪APIs发出请求并传回值时非常有用。例如,下面的代码构建了一个URL链接器,然后设置了href属性。

_gaq.push(function() {
  var pageTracker = _gat._getTracker('UA-XXXXX-X');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

上面使用 _gat 的例子创建了一个跟踪器对象,但由于被指派给一个本地变量,这一功能外的代码不能使用这个变量。尽管这也是可接受的,你也可以用 _gaq._createAsyncTracker 模式来创建一个参数,可以全局读取的对象。下面的代码显示了如何来做。

_gaq.push(function() {
  var pageTracker = _gaq._createAsyncTracker('UA-XXXXX-X', 'myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});
_gaq.push(['myTracker._trackPageview']);

上面的例子在这一功能中创建了一个异步跟踪器,随后在命令组中进行了引用。

反向使用也是可以的。例如,如果你使用通过之前被推送命令组来创建一个异步跟踪器,就可以使用 _gaq.getAsyncTracker 模式。下面的代码展示如何来做。

_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']);
_gaq.push(function() {
  var pageTracker = _gaq._getAsyncTracker('myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});
一次推送,多个命令

除了针对每一次请求输入 _gaq.push(…) ,你也可以一次推送全部命令。下面的代码展示了这一技巧。

_gaq.push(
  ['_setAccount', 'UA-XXXXX-X'],
  ['_setDomainName', 'example.com'],
  ['_setCustomVar', 1, 'Section', 'Life & Style', 3],
  ['_trackPageview']
);

因为 _gaq.push 模拟了 Array.push 模式,所以这也是可行的,通过一次请求来推送多个项目。

_gaq.push(
  ['_setAccount', 'UA-XXXXX-1'],
  ['_trackPageview'],
  ['b._setAccount', 'UA-XXXXX-2'],
  ['b._trackPageview']
);

把命令推送给多个跟踪器也是可以的。

分离跟踪代码

如果你偏好把Google Analytics放在网页底部,你也应该知道并非一定要把跟踪代码放在底部。你可以跟踪代码拆分成两部分并获得异步加载的绝大部分好处,把前半部分放在页面顶部,剩下部分放在底部。因为第一部分跟踪代码对页面渲染几乎没有影响,你可以把这部分放在顶部然后把包含 ga.js 的那部分跟踪代码放在页面底部。

把跟踪代码分成两部分的网页可能看上去是这样的:


    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
    _gaq.push(['_trackPageview']);

Page Content

Page Content

    (function() {
    var ga = document.createElement('script');     ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:'   == document.location.protocol ? 'https://ssl'   : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();

两部分代码都需要用自己的脚本标签进行封闭,但最初的异步跟踪代码只有最后6行需要放在底部。所有推送到 _gaq 的代码可以放在顶部。

常见错误

当使用异步或传统语法时,要记住一下几点:

  • 模式名称是对大小写敏感的。

如果你的模式名称没有进行恰当的大小写,你的模式请求将不会生效。例如:

_gaq.push(['_trackpageview']);   // bad
_gaq.push(['_trackPageview']);   // good
  • 使用正确的模式名称

如果你的网页跟踪没有正确运行,检查一下你是否用了正确的模式名称。例如:

_gaq.push(['_setDomain', 'example.com']);       // bad
_gaq.push(['_setDomainName', 'example.com']);   // good
  • 只有字符串(string)应该使用引号。其他的都不应该使用引号。

任何不是字符串的值,如布尔值,实体对象(object literal),函数或数组,都不应该用引号括起来。只有在使用某些需要解释的东西如字符串,才能试用银行。如果你从传统语法迁移过来,任何函数参数在异步语法中都不应该使用引号。例如:

_gaq.push(['_setAllowLinker', 'false']);    // bad
_gaq.push(['_setAllowLinker', false]);      // good
  • 确保字符串不包含前置或后置的空格。

例如:

_gaq.push(['_setAccount', ' UA-65432-1']);    // bad
_gaq.push(['_setAccount', 'UA-65432-1']);     // good
 

对Google Analytics来说,选择一个指标来对访问者类型进行交叉细分是很直接方便的事情,其中很重要的一个运用是对新访问者和老访问者的区分。通常,新访问者会与老访问者的行为大相径庭。譬如,对一个零售网站来说,新访问者更可能是在寻找产品——比较价格、产品特征、物流信息,等等。而再次访问的用户,更可能是网站的现有会员,因此有不同的需求,譬如想知道网站是否提供某件/种产品,对个人信息或者订单信息的再确认等。

网站对转化率进行优化时,对这两类访问者进行细分将能获得更多的细节信息。提醒一下,在做这种过滤分析时,我们必须保证原始数据的完整性,也就是要在GA设置界面里为“现有域”添加多个配置文件。这是一个良好的GA分析工作习惯。切切注意!在(一)中介绍的过滤器使用方法,也应该遵循这一步骤。

image

那我们接下来看,如果设置新访问者和老访问者。其实设置方法相当简单,见下图。

image

OKay, done! 回访者的设置也类同处理,应该没什么问题了吧。

有时候,某些网站只针对特定区域市场开拓业务。我们就会希望GA仅针对特定国家或区域或城市的访问者进行分析。那我们也只需要再创建一个分析配置文件。设置见下图:

image

就好像吃一块蛋糕般容易,不是吗?

接下来了,我们会介绍用GA来针对特定营销活动、媒体和参考来源网站,以及访问者浏览网站内容进行过滤细分。Stay tuned!

 

为了监控博客未来的流量(hopefully,这个博客能带来一些广告收入,^^),所以有必要对网站访问情况进行一些跟踪和分析。首选的工具自然是Google Analytics,免费、强大而且能捆绑多种其他服务,譬如Website Optimizer、Google AdSense。

我看过很多博客写作者也在用Google Analytics来做流量监测,不过作法非常简单,多是把跟踪代码Google Analytics Tracking Code (GATC)插入页脚代码页foorter.php就完事大吉。其实,这种做法很明显的一个弊病在于:博客主自己的访问也被记录进访问流量中,从而造成结果的偏差。很多个人博客,博客主的访问量甚至会超过正常访问流量。要解决这一问题,其实里面颇有些技巧。不仅是个人网站,甚至很多商业网站也会利用GA来检测、分析流量,而很多公司的员工电脑又都会把公司网站设置为浏览器首页,因此也会造成流量监测的不精确。甚至,有时候网站的内容被别的网站采集时,连跟踪代码GATC也采集走了,从而带来一些非网站上产生的虚假流量。

Google Analytics提供了具有强大功能和可自定义的过滤器。如果进行充分利用,则能发挥出很大的效果。对GA过滤器进行研究是一项颇具实用价值的事情。下面,我们来讨论几种过滤设置。

一、只监控自身网站的流量

很显然,对大部分网站来说,最实用的网站分析就是只监控出发网站的流量。这个在GA里面设置起来是非常简单和直观的:

  1. 登陆GA,进入配置文件设置,创建新过滤器;
  2. 选择“自定义过滤器”,点选“包括”,过滤字段选“主机名”;
  3. 在“过滤模式”框里,填入你的网站域名。需要注意的是,在域名填写时,分界符“.”之前需加入斜杠“”。这是正则表达式(regular expression syntax)中的规范,否则“.”会被程序误解释。

当然,有时候一些特定公司会需要从多个网站中收集流量,譬如美国服装零售商Gap公司有多个子品牌,每个子品牌都有自己的独立域名,也许就需要把各个品牌网站的流量汇集起来进行检测。那相应的作法则是: gap.com|oldnavy.com。

Google Analytics过滤器主机名参数设置

二、排除掉特定访问者

其实这个才是我在文首提到需要解决的问题。博客网站一般需要排除博客主(和投稿人,如果是多人写作博客的话)。对于企业网站来说,一般需要排除员工、搜索营销代理商,以及其他知晓的第三方,如网站开发者。通常,这些访问都会产生较高的页面访问量,并影响网站的一些关键指标,如转换率等。譬如,很多企业会把员工电脑的浏览器的首页设置为公司主页,而员工大多时候会打开首页然后关闭,访问别的网络资源。这样就会影响网站弹出率监控的准确程度。

排除这些特定访问者的办法一般有两种。分别阐述如下:

    1. 固定IP过滤 这种方法最直接了当,如果公司使用固定IP地址接入互联网的话。在GA过滤管理器中,专门有IP地址过滤预设项,你所要做的就是把固定IP地址填进去就可以了。但对于大部分中小型企业,或者家庭个人用户来说,使用固定IP地址并不常见。譬如国内大部分网民都是用ADSLFTTx+Lan的动态IP分配方式,每次拨号上网后ISP分配的IP地址都会变换。因此,我们需要采用另一种方法。
    2. 使用Cookies过滤 这种方式的原理是,在网站上预先设置一个隐藏网页,然后指引需被排除统计的访问者,在访问网站正式网页前访问这一隐藏页面。在这一隐藏页面中包含了一段JavaScript脚本来标记这类访问者。这一标记是一个长期留存的Cookies,被保存在特定访问者的电脑中,并且这台电脑在访问正式网站时,访问页面信息中会携带这一标记数据。然后,GA过滤器将会把有这一标记数据的访问流量排除在统计数据之外。设置自定义过滤器,需要在隐藏页面中调用GATC中的_setVar()函数。_setVar()函数括号中的预设值可以任意设置。在此,我们设置为“excluded_visitor”。代码如下:
    3. 
      var gaJsHost = ((“https:” == document.location.protocol) ? “https://ssl.”
      : “http://www.”);
      document.write(“\” );
      
      var pageTracker = _gat._getTracker(“UA-12345-1”);
      pageTracker._initData();
      pageTracker._trackPageview();
      pageTracker._setVar(“excluded_visitors”);
      

      通过这一方式,访问者在访问了,例如http://vnnw00.files.wordpress.com/2009/07/google_analytics1.pnghiddenpage.php 页面之后,这台电脑就会被标注为“excluded_visitors”,直至cookies过期失效(24个月)。当然,如果这台电脑的cookies被覆盖或者删除,如清空浏览器访问数据时,这一过滤手段还是会失效。但现在的统计效果已经有了显著改善。

      Google Analytics过滤器用户定义参数设置

OK。我们现在了解了GA监控网站流量的两种过滤使用方法。那我的博客是否严格按照这种方法进行实施了呢?答案是,当然不!

WordPress有着成千上万的、热心的挂件开发员为WP使用者提供多种多样、近乎完美的Widgets挂件。因此,本博客也不客气的使用了多个WP挂件。其中就有跟GA相关的一个挂件:由Spiral Web Consulting开发的Google Analyticator

跟普通WP挂件一样安装,之后WP设置中会出现Google Analyticator选项。进入后高级选项后,有两个参数设置:

WordPress admin logging:Enabled/Disabled 选择“Disabled”后,将会阻止所有登陆状态的WP管理员出现在GA报表中。WP的管理员权限可自定义,默认值为8。WP最高级管理员为10。

Admin tracking disable method:Use ‘admin’ variable/ Remove  设置为Use ‘admin’ variable,需要按前文介绍的方法在GA过滤管理器中设置自定义排除用户定义值’admin’;而选择Remove,则管理员请求WP页面时,自动屏蔽掉跟踪代码!太方便了,不是吗?

Google Analyticator 高级设置参数

看到这里,大家应该对GATC的强大功能有一定认识了吧!别着急,本博客还将提供更多的、令人激动的GA过滤器使用技巧介绍,包括用GA过滤器来对访问者进行访问类型细分,地理来源细分,以及适合电子商务网站应用的促销活动、在线广告和网站内容细分……

Stay tuned!

 

PHP5研究室

豆瓣 Google Analytics 代码加载模式

豆瓣从今年开始也加入 Google Analytics 的统计阵营。让我们通过它加载的 Google Analytics 源码,简单分析一下它都是怎么应用的。

我们先从豆瓣的源码来看看它的Google Analytics统计代码

豆瓣 Google Analytics 代码
豆瓣 Google Analytics 代码

我们知道一般默认的 Google Analytics代码如下:

默认  Google Analytics 统计代码
默认 Google Analytics 统计代码

两相对比,我们就会发现豆瓣加载 ga.js 的方式与默认的方式有些不太一样,由于豆瓣并没有采用 https 加密访问,所以撇弃了默认的ga.js加载方式。

默认的统计函数,pageTracker 也被豆瓣改成了 _ga ,这个只是名称定义上的区别,并没有什么实质的改变。豆瓣的主要应用是下面两个函数:

使用 _ga._addOrganic 识别非主流搜索引擎

再来看豆瓣比默认 Google Analytics 代码增加的部分,那就是多了数个 _ga._addOrganic ,这是 Google Analytics 添加自定义搜索引擎的代码。尽管 Google Analytics 对于主流的搜索引擎都能自动识别,但毕竟能识别的是国外的主流搜索引擎,在国内,像搜狐的 Sogou,QQ 的 soso,网易的有道等搜索引擎,都不能被 Google Analytics 正确识别,而被当作推荐来源。这时候我们就可以利用_addOrganic 参数来识别这些非主流搜索引擎,如豆瓣的做法。

使用 _addIgnoredOrganic 忽略关键字

除了添加自定义搜索引擎,豆瓣在最后还添加了如下这些代码:

_ga._addIgnoredOrganic("豆瓣");_ga._addIgnoredOrganic("douban");_ga._addIgnoredOrganic("豆瓣网");_ga._addIgnoredOrganic("www.douban.com");

这些代码用来把引号中的关键词从搜索引擎的关键词报告中排除,而当成直接点击量来源。

为什么要这么做?因为一个知名的大网站,来自这些品牌词的搜索流量都非常大,常常是排在前几位的搜索关键词来源,而这通常是因为搜索引擎养成现在的人都懒得记网址,直接搜索品牌名来记住域名。这些品牌词对于网站的关键词来源分析并没有很直接的帮助,所以在来自品牌词的流量很大的情况下,可以直接把这些关键词识别成直接点击量来源。

关于自定义 Google Analytics 搜索引擎排除特定关键词为直接点击量来源的语法,可以参考 Google Code 上关于这方面的详细介绍。

通过 _setVar 识别用户

当我们登录豆瓣后,再来分析豆瓣的源码,会发现多了一个ga._setVar(”xxxx”)的 Google Analytics 参数。

豆瓣使用 Google Analytics 的._setVar参数来跟踪登录用户行为

豆瓣使用 Google Analytics 的._setVar参数来跟踪登录用户行为

_setVar() 函数是 Google Analytics 的用户定义函数,主要用于对特定来源的用户行为进行分类,例如可以对登录浏览的用户设置一个数值,然后在 Google Analytics 后台的访问者/用户定义 中查看其浏览属性。

Google Analytics 访问者/用户定义报告

Google Analytics 访问者/用户定义报告

分析豆瓣的源码可以知道,豆瓣对每一个登录后的用户,都赋以一个专门的 id 值,这样可以在用户定义报告里,看到整体的登录用户访问行为,乃至每个登录用户的浏览行为。通过这样设定后,豆瓣便可以轻易获取高忠诚度访问用户的访问行为。关于_setVar()的更多说明,请参阅 Google Analytics的技术文档

如何根据访问者在我的网站上访问的页面或在表单上做出的响应对其进行分类?在 Google Analytics 官方的帮助文件,也给出了另外一个应用案例

值得注意的是,原来在设置 _setVar() 函数的时候,整个网站的跳出率会出现重大的偏差,不过在最近的google analytics官方博客,指出该bug已经修正,客户在进行这方面设置的时候,还是要注意对比前后数据是否有重大偏差。

通过 _trackPageview 区分不同类型的评论

豆瓣上的书评,影评和乐评可以说是豆瓣网站的核心价值所在。一般评论的URL格式如下:

豆瓣上单条评论的URL

豆瓣上单条评论的URL

当我们查看该页面的网页源代码时,会发现有趣的现象:

豆瓣单条评论页的 Google Analytics 代码

豆瓣单条评论页的 Google Analytics 代码

我们知道,一般 Google Analytics 的_trackPageview() 括弧中的参数是留空的, Google Analytics 会自动捕获网址的 URL 参数,如果在 _trackPageview()括弧中输入特定的数值,那么在 Google Analytics 的报表中,URL 将是我们指定的参数,而不再是我们在地址栏看到的 URL。

如上面的例子,我们在 Google Analytics 中看到的URL将是/book/review/1946018/,而不再是我们在浏览器地址栏看到的/review/1946018/

当所在频道是电影或者音乐时,_trackPageview() 中的参数将根据所在频道的属性,变为/movie/xxxxx 或者 /music/xxxxx的数值。

豆瓣通过对的参数进行重新指定,主要有以下的好处:

保证了用户和搜索引擎看到的 URL 比较简短,达到 URL 对用户友好和对搜索引擎友好的目的;而在 Google Analytics 报告中,通过 内容/内容细目/ 报告,又能了解到各个频道总的浏览情况。

在GA的内容细目报告中,将会多出 /book/ /music/ /movie/ 这样的文件夹来,总而获得各个频道的合计浏览数据。

而如果只是使用默认 _trackPageview(),你将只能得到所有评论页面的浏览数据,而无法得到细分的各个频道的浏览数据。

关于_trackPageview()的具体的使用方法可参照 Google Code 的说明

注意事项:使用 _trackPageview() 参数重新指定 URL 之后,网站覆盖图的数据将受到影响。可参阅 Google Analytics 的官方帮助文件

除了豆瓣使用 _trackPageview() 来对URL进行重写,大众点评网也采用了类似的做法(应该是比豆瓣更早采用。。。因为是我在点评网任职时候实验的做法;那时候豆瓣还没有使用 Google Analytis 统计代码,呵呵),有兴趣的同学可以自己去研究点评的 Google Analytis 代码。

© 2012 V的博客 Suffusion theme by Sayontan Sinha