多渠道路径概览之Google Analytics
几个月来,我一直期待Google正式发布多渠道路径这个新的分析包功能。今天,Google终于发布公告说多渠道路径(MCF)正在逐步向所有用户开 放。在我看来,这个功能是一个真正的革新;它与高级细分和自定义变量在GA发布的新功能上来看,不相上下。因此,今天我将分享一个循序渐进的指南让你快速 了解并运作MCF。
注:在深入细节之前,你或许希望回顾一下我的那篇关于多渠道路径的概念性评述,在那篇文章中我阐述了GA的默认属性模式以及多渠道路径的价值。你可以在这里找到那篇文章。既然说完了,我们继续看新报告吧!
找到GA中的多渠道路径

首先:流程。你需要登录到新版(即第五版)的GA中。一旦到达那里,将鼠标移至“我的目标转化”下拉菜单,注意称作“多渠道路径”的新选项卡。在这个新的 报告模块中,你将看到四个崭新的报告:辅助转化,热门转化路径,时差以及转化路径。今天我们将单独看其中的每一个,分别解释各自将告诉你什么。

辅助转化
在MCF中看到的第一个报告便是辅助转化报告。非常简单,这个报告展现了我们之前从未能获得的报告数据!如你在下图可以看到的,我们将在这个报告中看到一 系列的维度。首先,我们得到了“辅助转化”,在网络广告领域通常简称为“辅助”。辅助是指一个特定的流量来源(如“直接”或者“自然”)给你的网站带来的 访客数量,这些访客在之后会通过某些不同的流量来源形成转化。接下来,你将看到“辅助转化价值”,它将告诉你正在考察的流量来源对于转化的辅助所产生的价 值。

这里,我们可以看到自然搜索带来了10,000次“最终互动转化”。这意味着有10,000个转化是通过自然搜索让访客最终来到网站。事实上,这也是GA之前分配转化的方式。我们可以看到转化的价值大约是117000美金,但是你希望在这个报告中分析的书辅助的数量。
我们现在能看到并且是第一次看到的,便是除了这10,000个“传统”的自然搜索带来的转化,自然搜索还辅助了另外的8,228次转化-这将事实上产生另 外110,000美金的价值!通过多渠道路径,我们现在可以更全面地评估各种不同流量产生的渠道的价值。你认为SEO经理会把这个新的是数据展现给他或她 的老板吗?当然会了。
贴上1:关注那些带来更多辅助而非“最终互动转化”的渠道。这些是迄今为止你几乎肯定的大大低估了其价值的渠道。这些渠道通常是如展示广告(如谷歌的展示网络!)和社交媒体营销等。
贴上2:想获得更细节的东西吗?比如说,自然搜索?没问题。只需切换“基本渠道分组”至“来源/媒介 ”或者其他选项卡!现在你将不仅可以看到自然搜索,还能看到Google/organic,yahoo/organic与bing/organic的对比。
热门转化路径
既然你已经有机会看到所有带来流量的所有辅助渠道,是时候开始了解网站访客找到你网站的最常见渠道组合的时候了。比如,人们只是简单地输入网址到浏览器然 后转化吗?或者他们点击你的FaceBook,Google搜索你的网站,然后最终通过Twitter到达网站,然后才发生转化?GA在之前无法给我们这 种解析数据,但是现在,它能!请看下图。

这里,我们可以看到最常见的“转化路径”是两个独立的来自广告的访问。接下来最常见的路径是来自自然搜索的两个独立点击。为了更详细地分析,我们可能希望看到关键词或引荐来源单独的路径。没问题-那也很简单!
贴士:使用“其他”下拉菜单来分析单独的关键词,广告系列等的路径详情。
接下来,让我们用另外一种方式来让数据变得可视化。在MCF报告概览中,你将看到“多渠道转化可视化工具”。如下图:

现在,你可能一看到就觉得它太酷了。确实!不过我们来深入细节吧。可视化工具让你可以混合机搭配不同的流量渠道以查看它们是如何一起作用的。比如,付费广 告系列与自然搜索的交互性如何?这个问题本身就曾经是几百篇博客文章的主题!现在你不必依赖行业领袖及自诩的专家,你可以简单地衡量你自己的数据。比如, 你看到付费广告和自然搜索之间的大量重叠吗?
贴士2:查看在某些方面相互影响的渠道。当你在可视化工具中选择它们的时候,它们有很多重叠。这些渠道可能相互影响,这意味着比如如果你停掉付费广告,那么自然搜索量也会下滑。即刻尝试从GA中获得那种类型的解析吧!
转化耗时
转化耗时报告比前两个稍微简单些。事实上,它有点类似你可能已经在电子商务报告中看到的“购买前所耗天数”报告。然而,转化耗时针对所有的转化,而非仅仅 是电子商务交易(哈哈!)。如果你之前没有机会使用这个报告,那么,是时候了。你现在将可以把时间细分用户转化所耗时间至小时。比如,用户是否会再24小 时内回来并完成转化,还是他们需要几天甚至几周以决定完成转化?

我们看到尽管68%的转化在访客第一次来到网站的前24小时内发生,但是只有53%的转化价值在这个时间段内产生。这就意味着更有利可图的转化需要我们潜在客户更长的考虑时间-或许这并不足为奇,但是通过有力的数据证实是不错的。
贴上:你有很多转化(或者价值)来自24-48小时之内吗?你曾经通过Google Adwords或其他平台尝试过再营销广告系列吗?再营销是传递信息给曾经访问过你的网站却并未转化用户的极好方式。
路径长度
你将经常在路径长度报告中看到与转化耗时类似的趋势。事实上,路径长度报告在传统的GA报告可以找到类似踪影。如果你在运营电子商务,你可能已经看过“交 易前访问次数”报告,路径长度报告与此基本类似。但是,再次,如果你不运作电子商务,你没有机会使用电子商务报告中的“交易前访问次数”报告。
它们的趋势是类似的。在上图中,我们看到最有利可图的转化发生在超过24小时的研究之后,在此之后用户才最终决定完成转化。下图中,当我们分析需要几次访问之后才能说服某人转化时,我们看到同样的趋势是如何具体化的。

再次,在研究周期中,为了实现我们更有价值的转化,需要让用户两次甚至更多次访问我们的网站以决定转化。
贴士:别忘记再营销!有了Adwords,你安装一段代码到网站之后,即可在同一天开启并运行再营销广告系列。
Google Analytics跨域跟踪电子商务网站的实现方法
什么是跨域跟踪?
为什么要进行跨域跟踪?
这个问题与cookie的path、domain属性以及GA的域哈希值有关。path及domain决定了cookie的可见性。GA的 cookie默认情况下只能由设置的主域读写。虽然cookie可以在各子域间共享,但是,默认情况下,GA会为不同的子域指定不同的域哈希值,因此,子 域之间的GA数据无法共享。
另外,通过设置path可以将cookie限制仅为该域或子域下的某个目录可读写。
因此,当我们需要在子域间共享GA数据时,需要统一各子域的域哈希值。而主域间是无法共享cookie的,想一想如果你在A网站的cookie保存了密码信息,而B网站可以读取这些cookie信息是多么可怕的事情,因此,cookie自身的安全设置就禁止了这样的共享。
PS:通过不同的domain和Path设置,在一个域可以存储多组GA的cookie。
如何进行跨主域的跟踪?
主要有两种方式:
一、借助于第三方cookie。比如广告投放过程中,先在第三方域的一个页面进行跳转,然后在第三方域上设置cookie,当访问者访问A网站及B 网站时,都向第三方域发送信息,向第三方域发送请求时会在header中携带第三方域上的cookie。通过第三方域上的cookie信息就可以将访问者 在A网站及B网站的行为统一起来。
AdWords的转化跟踪就是采用这种方式。用户在点击AdWords广告时会在Google的域下写入相关cookie,当用户发生转化时,会向google发送一个图片请求,这个请求会携带之前点击广告时写入的cookie信息,从而在转化与广告点击之间建立联系。
但是,随着访问者隐私意识的不断提升,禁用第三方cookie的比例不断提升,一些浏览器的默认设置就是禁用第三方cookie,从而降低了使用第三方cookie跟踪的准确性。
二、使用第一方cookie,通过在几个主域间跳转的URL添加参数传递cookie信息。这是GA跨域跟踪采用的方式。也是本文下面将要介绍的主要内容。
如何使用GA进行跨域跟踪?
1. _setDomainName
这个方法用来控制GA的cookie(__utma、__utmb、__utmc、__utmz等)的domain属性及域哈希值。默认情况 下,GA使用主域作为domain的值,通过这个方法,可以传递一个参数指定domain的值。主要有两种用法,一种是跨子域跟踪时,将主域作为参数传 入,可以在各子域间共用一个域哈希值;一种是关闭跨子域跟踪时,可以传入一个none,这样GA会将cookie的domain设置为子域,从而将各子域 作为独立主体跟踪,且不会影响主域的GA cookie。
2._setAllowHash
这个方法用来控制域哈希值,有一个参数,其值为布尔值,默认值为true,开启域哈希值,设置为false则会将域哈希值设置为1,关闭域哈希值。
3. _setAllowLinker
这个方法用来开启或关闭通过链接接受和传递cookie。只有一个参数布尔值,默认状态下为false,关闭通过链接接受和传递cookie;当需要跨主域跟踪时,才需要开启,设置为true。开启后必须与_link或_linkByPost一起使用。
4. _link
这个方法用在需要通过链接参数传递cookie的出站a标签上。有两个参数,第一个为URL,第二个为是否使用#传递cookie参数,此参数可选。
5. _linkByPost
这个方法通过将一个字符串附加到引荐表单的操作值 (HTTP POST),从而将 Cookie 从引荐表单传递到字符串中包含的另一网站。在从一个网站到第三方购物车网站跟踪用户行为时通常使用此方法,但也可用于将 Cookie 数据发送到弹出式窗口或 iFrame 中的其他域。同样支持两个参数,第一个为表单对象,第二个为是否使用#传递cookie参数。
注:目前为止,很少遇到这种类型的跨域,因此,以下内容不包括_linkByPost方法的使用及通过表单跨域。
6. _setCookiePath
这个方法可以将GA cookie的读写仅限于该域下的某个子目录。
常用的GA跨域跟踪情境及GA代码部署方式
了解了上面的基础知识,下面介绍一下常见的GA跨域跟踪情境及GA代码部署方式。
单一主域多个子域作为一个整体跟踪
GATC样例:
注:本文的GATC都是以异步代码为准。
单一主域多个子域,整个主域作为一个整体跟踪,各个子域也各自作为一个整体跟踪
这种情况与上面的情况相比还涉及到多跟踪器部署。因为,对于每一个页面需要部署两个GA跟踪器,一个是主域的跟踪器,一个是子域的跟踪器。
跟踪器在GATC中用来标识GA账户的对象,异步代码的默认情况下,GA会使用一个名称为空的对象来标识GA账户。
这里的一个技巧是一个域不考虑path的情况下,郑州房产 www.zhengzhoufang.com只能存在两组GA cookie。一组是主域的cookie,一组是子域的cookie。
一个跟踪器使用_setDomainName(‘none’);,这个跟踪器会将cookie限制在子域,用于跟踪子域的流量,另一个跟踪器则调用_setDomainName(‘你的主域’),这个跟踪器使用的是主域的cookie,用于跟踪整个主域的流量。
GATC样例如下:
注:部署多跟踪器时,需要注意,对于其他的一些自定义GATC,比如事件跟踪、自定义变量、电子商务也都需要指明跟踪器。如果这些数据是两个跟踪器所在的GA账户都需要的,则需要针对每一个跟踪器添加一次。
单一主域多个子域,整个主域作为一个整体跟踪,各个子目录也各自作为一个整体跟踪
这种情形与上面的情形类似,所不同的就是添加_setCookiePath指定cookie所属的目录。GATC样例如下:
多个主域作为一个整体跟踪
跨主域跟踪才是GA中较复杂的情况,除了需要在GATC中作出修改,还需要在跨域的链接及表单上作出对应的修改。
首先,需要调用_setDomainName(‘主域名’)及_setAllowHash(false)将域哈希值关闭。这里没有使用 _setDomainName(‘none’)的原因是_setDomainName(‘none’)会将GA cookie的Domain属性设置子域,这样的话,会将情况变得更复杂,我们需要在各个子域之间的跳转链接传递cookie。
其次,需要调用_setAllowLinker(true),开启通过URL参数接受和传递cookie值。
最后,也是最复杂的,在每个出站链接上调用_link方法。
GATC样例如下:
主域间跳转链接的_link方法使用样例:
手动在每个主域间跳转的链接上添加_link方法几乎是不可能完成的任务。可以利用下面的JS遍历a标签,在主域间跳转的链接上添加_link方法。
注:这里需要注意的是,这段JS必须在页面完全加载后才会执行,因此,当访问者在页面没有加载完成前点击跨主域的链接,会导致跨域跟踪失败。
多个带有子域的主域,每个主域作为一个整体跟踪,且多个主域作为统一的整体跟踪
这种跨主域跟踪是更复杂的情况。除了上面的设置外,还涉及到多跟踪器。
GATC样例:
Google Analytics(分析) 跨域分析帮助
-
-
跟踪多个域
-
当您设置 Google Analytics(分析)来跟踪不同的域,或是将 Google Analytics(分析)限制为跟踪您网站的某个部分时,就是在对 Google Analytics(分析)如何为您的网络媒体资源收集访问者数据进行调整。为了理解这一点,让我们先看看网站或网络媒体资源的默认 Google Analytics(分析)设置。
默认情况下,Google Analytics(分析)会以组的形式记录对给定网址所进行的访问。例如,如果您设置跟踪您的博客 (myexampleblog.example.com),那么对您网站中的所有网页和子目录的访问将作为一个单元来进行收集和记录。如此一来,当某个用户从您网站上的一个网页转至同一网站上的另一网页时,Google Analytics(分析)报告会显示如下关系:
- 网页之间的浏览路径
- 总的网站停留时间,也就是页面停留时间的累计
- 具体会话数和唯一身份会话数(访问次数)
- 唯一身份访问者人数
此外,Google Analytics(分析)将那些对独立网址进行的访问作为单独的、不相关的访问处理(引荐链接除外)。如果您不希望某个网站的访问者数据在 Google Analytics(分析)报告中显示为单独的不相关网站的数据,那么您会希望 Google Analytics(分析)按照这种方式工作。
假定您拥有一间在线商店,并且在另一个域中设置了第三方购物车,如:
- www.example-petstore.com
- www.example-commerce-host.com/example-petstore/
如果没有跨域自定义,那么当一位访问者先访问您的在线商店,随后又进入您的第三方购物车时,将被计为两位不同的访问者,他们在不同的时间段内进行了两次不同的访问,显然这种设置并不适用于此模式。
然而,您可以使用跨域跟踪,确保 Google Analytics(分析)将这两个网站的流量记录到同一份报告中。在网站分析中,这通常称为“网站关联”。有了此功能,当一位访问者先访问您的在线商店,随后又进入您的购物车时,将被计为一位用户,而不是两位用户,而且他们于在线商店开始的会话将延续到购物车。
-
为何要使用跨域跟踪
适合使用跨域跟踪的情况有很多种:
- 您的购物车软件保留在第三方网站或其他域中。
- 您在多个子域中都有网页,但您需要涵盖所有访问者数据的统一报告。
- 您的某些网站内容显示于托管在其他域的 iframe 中。
- 您想要单独跟踪网站内的特定区域,比如单独跟踪一个子目录,而不跟踪网站其余部分。
在这些情况下,您需要对 Google Analytics(分析)如何收集数据做出调整,以便将多个独立域的流量收集到一个报告中。
当您设置跨域跟踪时,您可以收集与两个网站相关的所有有用数据,还能够了解到以下信息(或更多):
- 哪些关键字与您购物车内的物品相关
如果没有跨域跟踪,Google Analytics(分析)对您购物车的报告只会显示关键字(直接)。 - 访问者使用了哪些搜索引擎和常规搜索字词
如果没有跨域跟踪,Google Analytics(分析)对您购物车的报告只会将您的在线商店网站显示为主要的引荐网站 - 包括购买物品所用时间在内的访问的持续时间
- 哪些目标网页对销售或目标完成情况贡献最大
-
可用配置
-
可用配置
自定义域跟踪可用于多种情况:
- 子域 - 跟踪访问过
dogs.example.com
和www.example.com
这两个网站的所有访问者,两者的数据将显示在同一个报告配置文件中 - 子目录 - 只跟踪访问了某个子目录(如
www.example.com/dogs
)的访问者,其数据将单独显示在一份报告中,就像它是一个单独的网站一样 - 顶级域 - 跟踪对您拥有的两个域(如
www.example.com
和www.example2.com
)进行访问的所有访问者,两者的数据将显示在同一个报告配置文件中 - IFrame 的内容 - 跟踪另一个域的 iFrame 中的内容的访问者和浏览量数据。
有关为这些类型的配置设置跟踪的说明,请参阅 Google 代码上的 跨域跟踪中的详细文档。
- 子域 - 跟踪访问过
-
跟踪方法列表
由于跨域跟踪需要在两个独立的域之间关联访问者数据,因此通常必须对 Google Analytics(分析)跟踪进行一些自定义。原因即在于 Google Analytics(分析)与大多数网站分析解决方案一样,使用 Cookie 来保存关于网站访问者的信息,例如:页面停留时间、引荐信息以及访问者是新访者还是回访者。
为了使两个关联的网站共享访问者信息,必须将一个域的 Google Analytics(分析)Cookie 中的数据传递给另一个域,以便后者更新自己的 Google Analytics(分析)Cookie 集。*
可以执行的自定义如下所示(并非每种情况都需要执行全部自定义):
- _setDomainName()
- _setAllowLinker()
- _link()
- _linkByPost()
- _getLinkerUrl()
- _setAllowHash()
有关所有这些方法的详细描述,请参阅 Google 代码中的跨域跟踪文档以及关于跨域跟踪的跟踪代码参考。
* 默认情况下,某个域的 Cookie 集不能由其他域访问。有关如何标识 Cookie 的更详细说明,请参阅 Google 代码上关于 Cookie 的文档。
-
设置跨域跟踪
-
多个域
通过 Google Analytics(分析)设置跨域跟踪时,需要对跟踪代码进行一些调整。您需要掌握 HTML 和一些基本的 JavaScript 知识才能顺利完成这一操作。如果您不熟悉 HTML,请与网站管理员联系,让他们帮您设置跨域跟踪。本文说明了如何自定义跟踪设置,以将完全独立的多个顶级域作为单个实体进行跟踪。在进行说明时,用到了两个顶级(虚拟)域:www.myownpersonaldomain.com 和 www.examplepetstore.com,并假设将它们作为单个网站进行跟踪。
如果您使用 Google Analytics(分析)管理界面中的内置辅助工具跨多个顶级域进行跟踪,则跟踪代码应该已针对跟踪多个域进行了自定义。以下说明完整描述了跨域跟踪的设置。
- 设置跟踪。
在各个域的每个网页的跟踪代码中添加以下行(以粗体显示):
异步跟踪代码(默认) - 设置交叉链接。
在横跨各个域的链接中调用_link()
方法。如果您的当前链接类似以下形式:<a href="https://www.secondsite.com/?login=parameters">立即登录</a>
请将其改为:
- 设置表单。
如果您使用表单在域之间发送信息,则需要使用_linkByPost()
方法。请注意:上述函数同样适用于使用
GET
方法的表单。不过请注意,由于表单数据与 Google Analytics(分析)跟踪都会生成很长的查询字符串,因此如果您的网络服务器设有网址长度限制(例如 255 个字节),对GET
表单使用此方法可能会发生问题。
- 单独显示域名。
默认情况下,报告中的数据仅包括路径和网页名称,而不包括域名。例如,网页列表在“内容”报告中显示为/about/contactUs.html
,不会显示域名。如果您跨两个域进行跟踪,那么您会很难分辨网页是属于哪一个域;尤其当每个网站上的目录结构与网页名称很相似时,更是如此。如果您希望在报告中查看域名,可使用以下设置为配置文件创建高级过滤器:
过滤器类型:
自定义过滤器 > 高级
字段 A:主机名提取 A:(.*)
字段 B:请求 URI
提取:(.*)
输出至:请求 URI
构造器:$A1$B1
不要忘了主配置文件:保存此过滤器后,配置文件只会接收与过滤器表达式相匹配的数据。这意味着,如果您在设置此过滤器时出现任何差错,您的配置文件可能根本接收不到数据。基于这一原因,我们建议您先设置一个不使用任何过滤器的主配置文件,这样,即使过滤器出现错误,您还有基准数据可供使用。建议您创建配置文件副本来跟踪同一个网站,然后在副本中创建您的高级过滤器。为了适应新的网址结构,有可能还需要对过滤器和目标进行修改。了解有关创建配置文件副本的详情。如果您仍在使用传统 (ga.js) 跟踪方法。如果您的网页包含对_trackPageview()
、_link()
、_trackTrans()
或_linkByPost()
的调用,则您的 Google Analytics(分析)跟踪代码必须放在 HTML 代码中所有这些调用之前。此时,跟踪代码可以放在起始<body>
标记和 JavaScript 调用之间的任意位置。要简化电子商务和跨域跟踪,建议您迁移至最新版本的跟踪代码,以获得最佳结果。 - 设置跟踪。
-
Google Analytics跨域跟踪原理分析与设置-[跟踪代码设置]
自定义域跟踪可用于多种情况:
- 子域 - 跟踪访问过 dogs.example.com 和 www.example.com 这两个网站的所有访问者,两者的数据将显示在同一个报告配置文件中
- 子目录 - 只跟踪访问了某个子目录(如 www.example.com/dogs)的访问者,其数据将单独显示在一份报告中,就像它是一个单独的网站一样
- 顶级域 - 跟踪对您拥有的两个域(如 www.example.com 和 www.example2.com)进行访问的所有访问者,两者的数据将显示在同一个报告配置文件中
- IFrame 的内容 - 跟踪另一个域的 iFrame 中的内容的访问者和浏览量数据。
部署实现要点,请严格按照实验步骤实现:
前两点:注意push方法的顺序;_setDomainName设置
_gaq.push(['_setAccount', 'UA-XXX-1']);
_gaq.push(['_setDomainName', '.XXX.cn']);//(请设置在各自跨域的根域下)
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_setAllowHash', false]);
_gaq.push(['_trackPageview']);//(请放在后面,否则会重新刷新Cookie)
后两点:传递链接href与_link要是同一个URL;要写return false
<a href="http://abc.shaozhuqing.com/abc.html" onclick="_gaq.push(['_link', ' http://abc.shaozhuqing.com/abc.html']); return false;">_link(get) View My OTA fengshun</a>
辅助工具插件:
Firebug查看Cookie的变化和_utm.gif参数的专递
Omnibug 监控服务器发送请求情况
默认情况下,Google Analytics为每个独立域名(包括主域名下的子域名)创建单独的数据报告(包括访问者信息、流量来源等),两个域名网站间的任何链接将被归为引荐流量。因此,如果要实现同时跨域跟踪主域名与子域名、单独跟踪网站的某个子目录、同时跨域跟踪两个主域名、跟踪iFrame嵌入的域名内容等,就需要对Google Analytics基础跟踪代码进行自定义,以实现跨域跟踪。本文将介绍Google Analytics跨域跟踪的设置,以及和大家一起探讨跨域跟踪的原理。
Google Analytics跨域跟踪代码设置:跨域跟踪主域名及其子域名、跨域跟踪两个主域名、 跨域跟踪主域名与另一主域名的子目录 、 跨iFrame跟踪 、 跟踪单个子目录 、 跨主域名跟踪其两个或多个子目录
跨域跟踪原理说明
默认情况,Google Analytics通过读取网页托管的 document.domain 属性,获取网站的域名(主域名、子域名),然后为其设置/读取 Cookie,并最终生成该域名的数据。
因此,可以通过控制各域名间(主域名与主域名之间、主域名与子域名之间)的Cookie共享,将各域名的访问数据记录到同一个域名Cookie上,实现主域名之间、主域名与子域名之间的访客数据共享,即跨域跟踪。
跨域跟踪设置成功后,通过查看浏览器访问Cookie中Google Analytics跟踪参数_utma,你会发现各个域名下的Cookie有相同的部分,例如跨域跟踪主域名与其二级域名设置后,Cookie中_utma都属于共同一个域名,例如.exmaple.com,且其域哈希值为1。
同样,可以通过限制Cookie共享,实现Google Analytics跟踪单个子目录。
跨域跟踪主域名及其子域名
通常,规模较大的网站会考虑为每个大分类、项目、购物车等在主域名下创建一个独立子域名,例如:
* www.example-.com
* news.example.com
* cart.example.com
对于此类情况,你需要对主域名与子域名的所有跟踪代码使用以下的自定义设置。
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_setDomainName', '.example.com']);
_gaq.push(['_setAllowHash', false]);
_gaq.push(['_trackPageview']);
(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);
})();
</script>
说明:_setAllowHash(bool),此方法主要用于设置“允许域哈希”,当设置为true(默认值)时Google Analytics会为每个域名设置一个哈希值,并以此来辨别访客Cookie的完整性,此时访客Cookie将拒绝接收另外域名的访问数据;设置为false将停用域哈希功能(此时域哈希值为1),可进行Cookie数据共享。
_setDomainName(DomainName),为Cookie设置域名,跨域跟踪时设置为:前导向“.”主域名,设置前导向“.”主要便于更深层级子域名的跨域跟踪,例如跨域跟踪二级子域名下的三级子域名a.news.example.com。
通过将各域名所有跟踪代码,设置为以上自定义跟踪,即可实现跨域跟踪主域名及其多级子域名。
跨域跟踪两个主域名
若要同时跟踪两个不同的主域名(例如网店www.store.com与购物车www.carts.com),可以做一下跟踪代码自定义。
主域名www.store.com中设置的跟踪代码
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_setDomainName', '.store.com']);
_gaq.push(['_setAllowHash', false]);
(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);
})();
</script>
同时,需要给www.store.com中跳转到www.carts.com的链接以及数据表单添加跟踪代码,以传递Cookie共享数据:
<a href="www.carts.com"
onclick="_gaq.push(['_link', 'www.carts.com']); return false;">View My Carts</a>
<form name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);">
主域名www.carts.com的跟踪代码为:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_setDomainName', '.carts.com']);
_gaq.push(['_setAllowHash', false]);
(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);
})();
</script>
同时,传递链接以及数据表单Cookie共享数据:
<a href="www.store.com"
onclick="_gaq.push(['_link', 'www.store.com']); return false;">View My Store</a>
<form name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);">
说明:_setAllowLinker(bool),true启用跨域跟踪,并允许通过链接、表单在地址参数中传输Cookie数据,默认为flase;_link()、_linkByPost()分别用于跨域跟踪中链接、表单的Cookie数据传输。
跨域跟踪主域名与另一主域名的子目录
如果想跨域跟踪跟踪一个网站(www.example.com)以及在一另个域名目录下的内容(例如博客、购物车等,www.other.com/myblog),那么可以采用以下跟踪代码(请自行修改UA-XXXXX-1、.example.com):
主域名www.example.com中设置的跟踪代码
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_setDomainName', '.example.com']);
_gaq.push(['_setAllowHash', false]);
(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);
})();
</script>
同时,需要给www.example.com中跳转到www.other.com/myblog的链接以及数据表单添加跟踪代码,以传递Cookie共享数据:
<a href="www.other.com/myblog"
onclick="_gaq.push(['_link', 'www.other.com/myblog']); return false;">View My Blog</a>
<form name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);">
另一主域名的子目录跟踪代码为:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_setDomainName', 'none']);
_gaq.push(['_setAllowLinker', true]);
(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);
})();
</script>
同样需要给跳转到www.example.com的链接与数据表单,添加跟踪代码:
<a href="www.example.com"
onclick="_gaq.push(['_link', 'www.example.com']); return false;">View My Site</a>
<form name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);">
由于二者没有共同的主域名,因此需要将www.other.com/myblog中的_setDomainName设置为none,并通过给链接、表单添加代码传送Cookie共享数据。
跨iFrame跟踪
若想同时跟踪网站(例如www.example.com)以及通过iFrame嵌入的另一个网站(例如www. iframecontent.com)间的访客信息、广告些列信息等,需要已设置跨域跟踪两个域名的跟踪代码后,使用在www.example.com中(iframe嵌入的当前页)使用_getLinkerUrl() 方法传输共享Cookie数据。
_gaq.push(function() {
var pageTracker = _gat._getTrackerByName();
var iframe = document.getElementById('myIFrame');
iframe.src = pageTracker._getLinkerUrl('http://www. iframecontent.com/');
});
说明:_getLinkerUrl(targetUrl, useHash) ,用于跨域跟踪主域名与iFrame(或者在新窗口中打开的外部网站链接)时的网址参数传递Cookie共享数据。
跟踪单个子目录
如果你的网站字子目录没有采用子域名形式,内容又很多或者是单个独立项目(例如www.example.com/myblog/),想单独跟踪,那么可以在该子目录下采取以下跟踪代码:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_setCookiePath', '/myblog/']);
_gaq.push(['_trackPageview']);
(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);
})();
</script>
说明:_setCookiePath(newCookiePath),为您的网站设置新的 Cookie 路径。默认Cookie路径为主域名的根级路径(/),通过它可以设置Google Analytics所有跟踪的默认路径,从而限制跟踪,实现跟踪单个子目录。
此时,Google Analytics会将/myblog/下的页面当做一个独立的域名站点对待,有独立的访客信息与广告系列信息。
Google Analytics基本异步跟踪代码运作原理
Google Analytics异步跟踪代码,以基本跟踪代码作为数据跟踪与传递的基础。在此基础之上,根据网站业务数据需求,您可以自定义设置跨域跟踪、添加直接流 量站点、添加搜索引擎设置、事件跟踪、虚拟跟踪等功能。异步基本跟踪代码,作为数据跟踪与传递的基础,肩负着向Google Analytics服务器传递网站访客访问数据的重大责任。
知其然,才能知其所以然。了解了GA的运作原理,才能对其更好的运用,否则心里会老是有一块茫然(在我心里,就是这样的)。到底Google Analytics基本异步跟踪代码,是如何运作的呢,如何将我们网站访客的数据呈现在各类报告中的呢?本文将对其运作原理做详细介绍。
原理说明
异步代码加载速度快、数据更准确的功劳都应归功于_gaq对象,它采用队列“先进先出”的数据结构,先按照先后顺序收集好各类命令及函数的API调用,以便ga.js加载完成后按照同样的顺序处理这些调用请求,即“谁先申请,先被收集,而后先被处理”。
Google Analytics API的调用
API调用时采用_gaq.push方法,将API调用申请推送到_gaq对象队列中被收集。而被推送收集的API调用包括:JavaScript命令数 组、函数。其中,命令数组由被调用的跟踪器对象方法名称、传送给跟踪器对象方法的参数组成,也就是我们设置的各类定制跟踪,包括事件跟踪、跨域跟踪、添加 搜索引擎等等。
图三:_gaq对象及API调用推送命令数组(申请API调用)
_gaq.push(['setAccount', 'UA-XXXXX-X']);
推送函数(申请API调用)
_gaq.push(function() {
var pageTracker = _gat._getTrackerByName('myTracker');
var link = document.getElementByIdx_x('my-link-id');
link.href = pageTracker._getLinkerUrl('http://example.com/');
});
_gaq跟踪器对象的创建
当页面中第一个命令数组以_gap.push方法,申请API调用时会执行以下流程:
首先,调用var _gaq = _gaq || [];,创建_gaq跟踪器对象(并通过_gaq.push(['setAccount', 'UA-XXXXX-X']);绑定到指定的GA网络载体ID),同时各类跟踪器对象方法处于可调用状态,包括事件跟踪、跨域跟踪等方法;
其次,推送新建的_gaq跟踪器对象方法,传递相应参数,提交API调用申请。
最后,其余跟踪方法的API调用申请都被推送收集到_gap对象时,会调用_gaq.push(['_trackPageview']);执行最后一次推送,并由此方法提交将全部API调用申请提交给ga.js处理。
Ga.js处理各类API调用
在各类API申请被收集的同时,以下代码会判断站点的网络协议(安全 HTTP 协议或标准 HTTP 协议),并调用访客缓存中的ga.js(若有)或从GA服务器下载ga.js。ga.js加载完成后,会立即处理所有API调用申请、更新/读取访客cookie数据。
(function() {
var ga = document.createElement_x('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_r('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Google Analytics数据传输日志
Ga.js将所有所得数据,包括访问者IP、网站域名、请求URI、页面名称、访客浏览器/操作系统信息、事件设置、自定义变量设置、访客ID、访问次 数、访问时间、流量来源等等,赋给对应的utm变量,并将所有utm参数值对作为__utm.gif图片调用参数,写入到GA服务器端__utm.gif 图片的调用日志中,向GA服务器发送数据。GA再对日志进行数据处理、分析,生成我们所看到的各类报告。
http://www.google-analytics.com/__utm.gif?utmwv=4&utmn=769876874&utmhn=example.com&utmcs=ISO-8859-1&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=9.0 r115&utmcn=1&utmdt=GATC012 setting variables&utmhid=2059107202&utmr=0&utmp=/auto/GATC012.html?utm_source=www.gatc012.org&utm_campaign=campaign+gatc012&utm_term=keywords+gatc012&utm_content=content+gatc012&utm_medium=medium+gatc012&utmac=UA-30138-1&utmcc=__utma=97315849.1774621898.1207701397.1207701397.1207701397.1;...
变量 | 说明 | 示例值 |
utmac | 帐户字符串。在所有请求中显示。 | utmac=UA-2202604-2 |
utmcc | Cookie 值。此请求参数将发送从网页中请求的所有 Cookie。 | utmcc=__utma=117243.1695285.22;+ __utmz=117945243.1202416366.21.10. utmcsr=b| utmccn=(referral)| utmcmd=referral| utmcct=%2Fissue;+ |
utmcn | 开始一个新的广告系列会话。utmcn 或 utmcr 存在于任何给定请求中。更改广告系列跟踪数据;但不启动新会话。 | utmcn=1 |
utmcr | 指示重复的广告系列访问。当对相同链接进行后续点击时,系统就会设置该变量。utmcn 或 utmcr 存在于任何给定请求中。 | utmcr=1 |
utmcs | 浏览器的语言编码。有些浏览器不设置此变量,在这种情况下该变量将设置为“-”。 | utmcs=ISO-8859-1 |
utmdt | 网页标题,是一个网址编码字符串。 | utmdt=analytics page test |
utme | 可扩展参数 | 值已编码,用于事件和自定义变量。 |
utmfl | Flash 版本 | utmfl=9.0 r48& |
utmhn | 主机名,是一个网址编码字符串。 | utmhn=x343.gmodules.com |
utmipc | 产品代码。这是给定产品的 SKU 代码。 | utmipc=989898ajssi |
utmipn | 产品名,是一个网址编码字符串。 | utmipn=tee shirt |
utmipr | 单价。在物品级别设置。值为数字且仅使用美国货币格式。 | utmipr=17100.32 |
utmiqt | 数量。 | utmiqt=4 |
utmiva | 某个物品的不同版本。例如:大、中、小、粉红色、白色、黑色、绿色。字符串为网址编码。 | utmiva=red; |
utmje | 指示浏览器是否启用了 Java 支持。1 表示启用。 | utmje=1 |
utmn | 为每个 GIF 请求生成的唯一 ID,用于防止 GIF 图片缓存。 | utmn=1142651215 |
utmp | 当前网页的网页请求。 | utmp=/testDirectory/myPage.html |
utmr | 引荐,完整的网址。 | utmr=http://www.example.com/aboutUs/index.php?var=selected |
utmsc | 屏幕颜色深度 | utmsc=24-bit |
utmsr | 屏幕分辨率 | utmsr=2400x1920& |
utmt | 指示请求的类型,包括:事件、交易、物品或自定义变量。如果 GIF 请求中不存在此值,则请求的类型为网页。 | utmt=event |
utmtci | 帐单邮寄地址所在城市 | utmtci=San Diego |
utmtco | 帐单邮寄地址所在国家/地区 | utmtco=United Kingdom |
utmtid | 订单 ID,为网址编码字符串。 | utmtid=a2343898 |
utmtrg | 帐单邮寄地址所在区域,为网址编码字符串。 | utmtrg=New Brunswick |
utmtsp | 运费,单位和价格的值。 | utmtsp=23.95 |
utmtst | 关联企业。通常用于电子商务中的实体商户。 | utmtst=google mtv store |
utmtto | 总计。单位和价格的值。 | utmtto=334.56 |
utmttx | 税款。单位和价格的值。 | utmttx=29.16 |
utmul | 浏览器语言。 | utmul=pt-br |
utmwv | 跟踪代码版本 | utmwv=1 |
以上就是Google Analytics基本异步跟踪代码的运作原理啦,可能有点复杂,有什么疑问就给我留言吧,一定知无不言。
Google Analytics的能与不能
关于Google Analytics的Exit Rate的,我的错误在于我此前自己认识的定义其实一直是错误的。 我一直以为,某个页面的Exit Rate=该页面上离开网站的PV÷经过该页面的Visit,但实际上公式是Exit Rate=该页面上离开网站的PV÷该页面的总PV。为什么是这个定义的原因我觉得很明确,因为对于GA,很严谨地区分了页面级的度量和网站级的度 量,visit是一个网站级别的度量,而exit rate是页面级的,所以exit rate只能用page view来定义。
不过,请大家注意,Omniture跟GA在这个地方的定义不同,Omniture的定义是以前一个公式为准。我个人更倾向于前一个公式的定义,因为这能够让Exit Rate保持跟Bounce Rate的一致性。
好了,步入正题,今天要讲的是给初入网站分析大门的朋友们的,话题不深,但是挺有趣,关于Google Analytics,关于我们应该用什么工具做网站分析。
在我开始发表意见前,我要做一个免责声明:)。我非常了解Omniture,但我不愿意偏袒任何一种工具,因为我知道网站分析工具是全人类 (咳,准确说是全部网站分析师)的财富,我们在享用这个财富之前,了解它,读懂它,扬长避短为我所用,就是大好,至于其他的主观色彩,我不会卷入。只是分 享,为快乐而分享,为搞定抑郁症而分享。:)
今天这个话题关于Google Analytics,我们最常使用也最熟悉的网站分析工具,它给我的感觉如同一个十七八岁的年轻人,朝气蓬勃,富有主见和创造。这个工具擅长于做什么,又有哪些不能够做到的地方呢?今天愿以此文跟大家聊个尽兴,也是对我敬佩的导师Avinash Kaushik先生的致敬!
这个文章分为三个主要部分。第一部分是Google Analytics的长处;第二部分是Google Analytics的不足;第三部分是Google Analytics所适宜和不适宜的网站领域。
Google Analytics的能
牛B第一:界面
工具界面这东西,是个见仁见智的事情,不过我觉得Google Analytics的界面绝对是易用的,因为它符合人们的惯常思维。这一点对于初学者非常好。
牛B第二:度量
我认为Google Analytics在度量方面有长处的地方在于,它比较认真地系统考虑的度量的设置。由于是一个免费的通用的工具,所以在度量的设置上注意了三点,第一点 是尽量采用约定俗成的度量名称;第二点是尽量采用约定俗成的度量定义(但不完全是);第三点是区分了网站级和页面级的度量。所以,度量入门学习用 Google Analytics很好。
牛B第三:细分
Google Analytics不能说具有最好的细分能力,但是其他免费系统,甚至很多付费系统都没有它的细分能力。Google Analytics之所以在细分上如此给力,是因为Avinash非常强调网站分析中的细分分析。对于我而言,大家也看到了我的想法——“无细分,毋宁 死”,做最深入的一些分析,细分数据的确非常重要。
Google Analytics在推出新版之前,细分其实做的很差,但是我记得去年推出新的版本之后,细分功能大大增强。最棒的就是增加了高级细分功能,即你自己可以 定义你需要的细分规则,即我给它起的名字——规则细分。规则细分是网站分析中最重要的工具之一,能够在免费工具中看到这样的功能,你除了感动还是感动。虽 然Google Analytics细分的结果很多需要做采样,但是如果看了Avinash的第二本书就知道,采样数据未必不能提供好的insight。
此外,Google Analytics还提供了其他的细分方法,例如过滤(filter)。值得注意的是,过滤是一种“事前细分”,即把监测数据放入报告之前进行筛选,一旦筛选不通过的数据,通过任何方法都将不能再获得。
牛B第四:响应
这里要提醒的一点是,响应是指你操作Google Analytics时的界面反应的速度,即你打开任意一个报告所需要花费的时间,而不是Google Analytics提供数据的实时性。在响应速度上,Google Analytics拜Google强大的服务器集群所赐,以及自身算法的优化,速度让人满意!毕竟Google Analytics是提供的SAAS(software as a service)服务,数据要在遥远的服务器端打个来回,响应上能够跟本地端的监测工具有得一拼,相当厉害。
牛B第五:集成AdWords
这个不值得多说,毕竟都是一家人,近水楼台先得月。Google Analytics集成了监测AdWords流量的功能,并且能够把关键词投放的成本整合其中,这对做Google SEM的用户有很大帮助。
牛B第六:异步代码
Google Analytics升级了自己的标准代码添加方式,原先必须添加在<body>…</body>中的代码现在可以添加 在<head>…</head>中。这让GATC(Google Analytics Tracking Code)与其他JavaScript代码之间发生冲突的可能性大大降低,而且受到页面载入速度而影响监测的可能性也大大降低。
牛B第七:免费
这个优点不用多说了,反正谷歌的服务器肯定会为无数免费的账户增加数千台到数万台。也许,我估计的可能还是保守的了。
Google Analytics的不能
不牛B第一:路径
Google Analytics其实并无路径分析功能。Entrance Path,或者Navigation Summary都不是路径,只是前后页功能而已,甚至不是前后页的路径。路径功能是能够统计到网站访问者各条路径的功能,从他/她进入网站的那一页,直到 他/她离开网站的那一页。这个功能的作用在于,帮助我们发现一些被很多访问者经过,但却超出我们预计的路径,这十分有助于我们分析网站的页面结构和链接结 构,并据此优化它们。商用网站分析工具,例如Omniture的SiteCatalyst和Discover均很强调这个功能,它有专门的路径报告即 paths报告,支持无限层级的路径。
图:Omniture SiteCatalyst的Next Page Flow报告
不牛B第二:转化
这个不牛B之处不是很给力,因为Google Analytics并不是没有转化监测,事先预定10个转化页面对一般网站已经足够。不过,在数据报告中任意自定义页面之间的转化功能Google Analytics还不具备。对于有多种可能转化路径的网站(这种站其实很多,尤其是大量商品的电子商务网站)而言,灵活的转化自定义功能是很必要的。部 分商用网站分析工具具有这个功能。
题外话:为什么Google Analytics的路径转化功能不强大
今天我还跟武凯讨论了这个话题,我们并无法知道Google Analytics在这两个方面做得不到的真实原因,但我们相信算法对Google而言绝对不是问题。我们推测,由于这两个功能的运算随着路径长度的增 长,而变成天文级数字的可能性,Google Analytics实现这个功能需要更强大的运算和更多的服务器,这会使报告的响应时间变长,而影响用户体验,并且增加大量的成本开销。
不牛B第三:交易监测
Google Analytics在小型电子商务网站中占有大量的份额,但电子商务所重视的交易监测却不是它的长项,主要在于Google Analytics只提供了Add Trans和Add Item两种event,对于灵活多变,而且品类管理复杂的电子商务而言,这一点功能只能称得上“聊胜于无”。另外,Google Analytics没有提供以产品为中心的产品监测(product tracking),因为这个功能需要更灵活的自定义。
不牛B第四:自定义
毕竟只是免费工具,所以Google Analytics自定义并不强大,目前只提供自定义报告功能,虽然实际上这个功能很实用。自定义度量是一个令人期待的功能,但是Google Analytics似乎短时间内并不想把它放进去。此外,真正的自定义功能是结合网站业务需求的,尽管Event Tracking的出现改变了这一状况,但灵活性不足,而且称不上易用,实际上并无法涵盖网站中的业务功能——例如按照产品细分的添加购物车行为的监测, 或者按照用户ID细分的支付监测等;或者也无法探知访问者填写表单的情况;在Campaign Tracking方面,Google Analytics提供的6个utm属性仍然有限,且不能自定义属性;Google Analytics也无法根据一个网站上用户的各种属性进行自定义细分。所以,Google Analytics的自定义能力是非常有限的。
不牛B第五:特殊链接监测
在Google Analytics中,特殊链接的监测并不是默认实现的,需要你动手添加Virtual Page或者Event Tracking。但商用网站分析工具,例如Omniture的SiteCatalyst,这些功能是默认自动实现的。也就是说,当你装上了 SiteCatalyst,Exit Link(也就是点击你网站上的外链的行为)的数据是自动监测的。同样,下载链接也是自动实现监测。
不牛B第六:数据关联
Google Analytics的数据关联不能说做的不好,不过,毕竟这个工具受制于自定义功能的薄弱,因此能够监测到的度量有限,数据关联也就相对比较简单。另外, 由于细分功能出色,因此GA对数据关联的强调相对较小。不过,对任何一个网站分析工具而言,数据关联都是一个非常高的要求,毕竟3维的数据关联要比2维的 关联多出Cnn(打不出来这个概率的符号,大家明白意思就好)种可能性,对服务器的要求太高了。Omniture利用Data Warehouse实现复杂的数据关联,但牺牲了实时性,它的另一个专门做细分和数据关联的产品——Discover——可以实现复杂而实时的数据关联, 但能够涵盖的范围通常不超过数个月的数据。而Google Analytics则只提供预定的数据关联。
不过,从目前Google Analytics的一些界面微调情况看,这个部分的重要性逐渐被它认识到,相信未来有更多的改变。
不牛B第七:Raw Data
Google Analytics不提供Raw Data或者是未经报告再加工的数据。这些数据的好处在于,能够帮助解决一些对于数据报告中出现的疑问,也能够帮助进行深入的数据分析。
不牛B第八:数据接口
没错,Google Analytics为我们提供了API,但是这个API实在是很有限,至少,在跟一个企业的CRM或者是ERP系统对接的时候,根本派不上太多用场。由于 并没有开放Raw Data,所以实际上这些API并不足以帮助用户将自己的其他商用系统与Google Analytics的数据报告进行对接。这也就意味着,Google Analytics只是一个封闭系统。
Google Analytics所适宜的和不适宜的网站
GA实际上非常适用于博客网站以及内容网站。有时候我甚至觉得,sina.com.cn用GA在功能上应该也是够用的(除了路径分析之外),毕竟现在GA没有了月度Page View监测数量的上限。
小型的电子商务网站也可以使用GA,利用GA有限的电子商务监测功能、转化预定功能还是能够给出不少不错的insight。
朋友们会问我,我们男科医院的网站用Google Analytics行不行。我觉得,完全行,因为你那个网站也不涉及交易,而且转化也比较单一清晰,所以这一类的网站同样适宜Google Analytics。
Google Analytics不适宜的网站
大型电子商务网站很少用Google Analytics,因为Google Analytics对特质性和复杂性的支持有限。大型公司的网站,例如Intel、HP或者Sony的网站也不会使用Google Analytics,原因同前。另外,平台型的网站,比如淘宝、猪八戒、世纪佳缘之类,用Google Analytics肯定非常麻烦,因为这些网站有很复杂的分类和转化,GA同样力不从心。
SNS类的网站呢?GA也不易用,因为这些网站上的应用太多,如果要添加Event Tracking,人会疯掉。简单讲,随着网站复杂程度的提升,Google Analytics就会越来越不宜用。
Google Analytics进阶运用之跨域跟踪
从今天开始一个介绍Google Analytics进阶运用的系列日志,其实没有多少技术含量,主要内容来自http://code.google.com/apis/analytics/docs/index.html,不过其中部分的用词与说法与官方不太一样。
首先,要清楚以下几点:
1、Google Analytics用document.domain定义一个网站的cookies
2、独立的域名意味着独立的访问者和流量数据,也就是说,在只使用Google Analytics默认代码的情况下,即使是访问不同的二级域名,都会被单独计算
3、独立的域名并不一定是不同的内容
4、子目录使用主域名的cookies
ps:本系列的ID都是google文档中的,想使用的话请更换成自己的
只统计一个子目录
假如我有一个网站www.example.com,还有一个网店www.example.com/myStore/,我只想统计网店的访问数据,需要用到_setCookiePath()方法,统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setCookiePath("/myStore/"); pageTracker._trackPageview(); |
这是因为cookie路径设置为您的子目录,而不是根目录www.example.com
统计同域名下连个子目录
假如我有一个网店,还有一个购物车
www.example-commerce-host.com/myStore/
www.example-commerce-host.com/myCart/
想统计他们的访问数据,需要用的_cookieCopyPath()方法,统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setCookiePath("/myStore/"); pageTracker._cookiePathCopy("/myCart/"); pageTracker._trackPageview(); |
这样就是设置了一个特殊的cookie,由第一个目录提供,也就是myStore目录,这些cookie数据会被复制到myCart目录cookie中
统计A域名及B域名的一个子目录
这是我认为比较有用的应用方式。
假如我有一个网店,使用的是第三方的购物车,这时候需要设定主次,一般自己的是主,第三方的东西是次。统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false); |
次:www.example-commerce-host.com/petStoreCart
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName("none"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false); |
_setAllowLinker()方法是为了让目标网站读取到post过来的数据和cookie,但是这样还不够,还需要用到_linkByPost()方法,将网店的cookie通过HTTP POST传到购物车,因此,在网店的表单里需要这样修改:
onSubmit="pageTracker._linkByPost('www.example-commerce-host.com/petStoreCart/begin.php');" |
当然网店的相关链接也要改为这样的:
<a href="pageTracker._linkByPost('www.example-commerce-host.com/petStoreCart/legalTerms.php');">购物车</a> |
还有js形式的写法,用到_link方法
<a href="www.example- commerce-host.com/petStoreCart /legalTerms.php" onclick="pageTracker._link(this.href); return false;"& gt;购物车</a> |
统计主域名及其二级域名
类似这样的:
www.example-petstore.com
dogs.example-petstore.com
cats.example-petstore.com
统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName(".example-petstore.com"); pageTracker._trackPageview(); |
用_setDomainName方法设定主域名
统计多域名及二级域名
这是一种混杂的情况,基本上是前两种情况相加,统计代码要这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName(".example-petstore.com"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false); |
如果有表单指向了其他域名,需要用_link()方法和_linkByPost()方法将cookie传到其他域名去,用法上面已经写过了。如果表单指向的是二级域名,就不一定要使用_link()方法和_linkByPost()方法了,因为已经设定了主域名。
次:dogs.example-petstore.com
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName(".example-petstore.com"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false); |
同样的,如果有表单指向了其他域名,需要用_link()方法和_linkByPost()方法将cookie传到其他域名去
其他域名:www.my-example-blogsite.com
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName("none"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false); |
统计框架(iFrame)
假如想把框架中的www.my-example-iframecontent.com数据传到父一级www.example-parent.com的窗口中去,需要用到_getLinkerURL()方法,用js读取框架,统计代码要这么写:
var iframe = document.getElementById("myIFrame"); iframe.src = pageTracker._getLinkerUrl(http://www.my-example-iframecontent.com/); |
Google Analytics(分析):_trackEvent()
pageTracker._trackEvent
的函数公式:
_trackEvent(category, action, optional_label, optional_value)
category, action, optional_label,三个是需要用引号定义字符(单双引号都行), optional_value是变量或者数字常量。
正确情况:
pageTracker._trackEvent("ABC", "cc", "Dir", 33)
pageTracker._trackEvent("ABC", "cc", "Dir")
pageTracker._trackEvent("ABC", "cc")
pageTracker._trackEvent("ABC", "cc", "", 33)
错误情况:
pageTracker._trackEvent("ABC", "cc", 33)
监测失效原因:第三个参数缺失。
pageTracker._trackEvent("ABC", "cc", "Dir", "33")
监测失效原因:第四个参数不能加引号。
pageTracker._trackEvent("ABC", "cc", Dir, 33)
监测失效原因:第三个参数没加引号。
监测函数不需要放在GA监测代码后面。可放在标签内任何地方,或者object(flash,JAVA等)内部。
附事件跟踪指南
目录
- 设置事件跟踪
- 事件跟踪详解
- 类别
- 操作
- 标签
- 值
- 隐含计数
- 实施注意事项
设置事件跟踪
您需要按照以下步骤在网站上设置跟踪功能,然后才能在报告中查看事件跟踪结果。
- 在您的网站上设置跟踪功能。确保您已为网站设置好了跟踪功能。要了解具体设置方法,请参阅跟踪网站。
- 在网页对象、窗口小部件或视频的源代码中调用
_trackEvent()
方法。_trackEvent()
方法的规范为:_trackEvent(category, action, opt_label, opt_value)
- 类别(必填)
为要跟踪的对象组指定的名称。
- 操作(必填)
与每个类别具有唯一对应关系的字符串,通常用于为网页对象定义用户互动的类型。
- 标签(可选)
为事件数据提供额外维度的可选字符串。
- 值(可选)
可以用来提供有关用户事件的数值数据的整数。
- 类别(必填)
- 查看报告。在事件跟踪设置完毕并在您的网站上运行一天之后,请转到报告的“内容”部分并查看“事件跟踪”。
事件跟踪详解
事件跟踪数据模型由以下几部分组成,这些组成部分与 Google Analytics(分析)报告界面中的相应元素一一对应:
- 类别
- 操作
- 标签
- 值
- 隐含计数
以下是一个简单的例子,解释了如何使用事件跟踪方法来记录用户与您网页上的视频“播放”链接之间的互动。其中假设 pageTracker
是您的跟踪对象的名称。
<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>
在这个例子中,事件的报告会将 Videos 显示为“类别”,将 Play 显示为“操作”,将 Baby's First Birthday 显示为“标签”。下文将会详细说明这些组成部分。请注意,在实施事件跟踪时,您可以使用此数据模型作为指南,也可以直接使用 _trackEvent()
方法,以适用于您的数据的任意方式来细分用户互动。
类别
对于事件跟踪,“类别”是您指定的用于分组要跟踪的对象的方式。它是 _trackEvent()
方法中使用的第一个参数,并且是必填参数。
“类别”一词在报告界面里位于“事件概览”页上,名为“热门类别”。在此模型中,类别代表事件跟踪层级结构的“根级别”,您可以采用适合您的报告需要的任意方式使用该结构。一般来说,对于您想要归入指定类别的相关用户界面元素,您会多次用到同一类别名称。
例如,要跟踪同一个视频界面上的三个单独控件的用户互动情况,您可以使用以下函数:
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']); _gaq.push(['_trackEvent', 'Videos', 'Pause', 'Gone With the Wind']); _gaq.push(['_trackEvent', 'Videos', 'Stop', 'Gone With the Wind']);
假设您还想要跟踪视频的下载次数。您可以使用:
gaq.push(['_trackEvent', 'Videos', 'Downloaded', 'Gone With the Wind']);
在这个例子中,“事件概览”页上的“热门类别”中将只有一个类别(即“Videos”),并且您会看到有关该视频对象整个元素集用户互动情况的汇总指标。
不过,通常您想要通过事件跟踪功能跟踪的对象很可能不止一个,因此在实施调用前最好先仔细考虑一下如何分类报告。例如,您可能希望跟踪“Videos”主类别下的所有不同影片,这样您就可以获得有关所有视频互动的汇总数据,无论用户实际观看的是哪部视频。
另一方面,您可以根据视频的类型创建单独的类别。例如,影片视频和音乐视频各占一个类别。您可能还希望为视频下载单独创建一个类别:
- Videos - Movies
- Videos - Music
- Downloads
在这个例子中,您可以通过“事件总数”标签确定所有三个类别的总计事件数。“事件总数”指标显示的是您在事件跟踪实施中指定的所有类别的事件总数。不过,您无法在“Downloads”中单独查看所有视频的汇总指标,因为详细事件指标汇总在其各自所属的类别之下。
尽管事件跟踪对象模型非常灵活,您还是应该先规划好所需的报告结构,然后再为类似网页对象元素调用 _trackEvent()
方法。如果您打算在多个位置使用相同的类别名称,请务必按名称正确引用所需的类别。例如,如果您打算调用视频跟踪类别“Video”,而后来又因为记错而 使用了复数的“Videos”,其结果将是针对视频跟踪产生两个单独的类别。另外,如果您决定更改某个对象的类别名称,而该对象已通过不同的名称进行了跟 踪,则原类别的历史数据将不会得到重新处理,而这会导致同一个网页元素的指标列于报告界面中的两个类别之下。
操作
事件跟踪模型中的“操作”一词指的是 _trackEvent()
方法中的第二个参数。它也是必填参数。
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
一般来说,您会使用 action
参数来命名您希望针对特定网页对象跟踪的事件或互动的类型。例如,在一个“Videos”类别中,您可以使用此参数跟踪多个特定事件,如:
- 视频完成载入的时间
- “播放”按钮点击次数
- “停止”按钮点击次数
- “暂停”按钮点击次数
与类别一样,为 action
指定怎样的名称完全取决于您自己,不过,对于事件操作在报告中的使用方式,有两个要点需要注意:
- 所有操作均独立于其母类别单独列出。
而这一点正好可以在您为报告细分事件数据时派上用场。 - 唯一身份事件取决于唯一身份操作名称。
您可以在不同类别中使用重复的操作名称,但这可能会影响唯一身份事件的计算方式。有关详情,请参阅下文的建议以及隐含计数部分。
要确保在针对网站大范围实施事件跟踪时的报告效果,请在使用操作时注意以下几点:
- 操作名称应与您的报告数据相关
事件跟踪会将两个不同类别中具有相同操作名称的指标合并在一起。例如,如果您将操作名称“Click”同时用于“Downloads”类别和 “Videos”类别,那么“热门操作”报告中有关“Click”的指标会同时包含使用该名称标记的所有互动。您可以在下一报告级别中看到按类别细分的 “点击”操作的详细信息。不过,如果您在整个事件跟踪实施中不加区分地使用“click”操作,则报告中该细分的实用性就会大打折扣。如果您准备在网站上 大规模使用事件跟踪,那么您最好选择与您的数据类别相关的操作名称。例如,您可以选择为小工具互动保留“click”一词,而为视频播放器互动保留 “Play”、“Pause”、“Stop”等操作名称。
- 以全局为背景使用操作名称以便汇总或区分用户互动
例如,您可以为针对网站上所有视频的“Videos”类别使用“Play”作为操作名称。在此模型中,“热门操作”报告会为“Play”操作的事件提供汇总数据,而且您可以了解有关您的视频的这一事件与其他事件(如“暂停”或“停止”)的对比情况。
不过,假设您想只在报告中使用一个视频类别,但是又想了解有关两个不同的视频播放器用户界面的信息。您可以使用操作名称来区分不同的视频播放器,而不必创建单独的视频类别。这样,报告就可以区分两个播放器的风格,同时还能汇总有关网站上所有视频的数据。
_gaq.push(['_trackEvent', 'Videos', 'Play - Mac Chrome'); _gaq.push(['_trackEvent', 'Videos', 'Play - Windows Chrome');
- 操作并不总是意味着“操作”。
您可以为操作参数指定任意字符串。某些情况下,实际的事件或操作名称可能并不实用,此时您可以使用操作参数来跟踪其他元 素。例如,如果您想要跟踪网页的下载情况,您可以将文档的文件类型指定为下载事件的操作参数。在这个例子中,有关“Downloads”类别的报告数据就 会按照文件类型(pdf、doc、xls 等)来划分。
- 唯一身份事件数的累加取决于唯一身份操作数
每当有用户与标为特定操作名称的对象进行互动时,其首次互动均会被记录为该操作名称的一次“唯一身份事件”。由该用户的会话触发的同一操作的其他任何互动均不会计入该特定操作的唯一身份事件。即使该用户离开相应对象,然后开始与标为相同操作名称的其他对象进行互动,情况也是如此。
这会对报告的结果产生两个显著的影响。首先,假设某用户与两个类别各异的不同视频播放器的“Play”操作进行了互动。有关“Play”的“热门操作”报告只会列出一个唯一身份事件,虽然该用户实际上与两个不同的播放器进行了互动。其次,每个类别的“操作”报告会列出一个唯一身份操作,因为每个类别/操作配对确实有一个唯一身份事件。要了解详情,请参阅隐含计数部分。
标签
事件跟踪数据模型中的“标签”一词指的是 _trackEvent()
方法中的第三个字符串参数。此参数是可选参数。通过标签,您可以为要跟踪的事件提供额外信息,例如以上示例中的影片标题,或是跟踪下载情况时的文件名称。
pageTracker._trackEvent('Downloads', 'PDF', '/salesForms/orderForm1.pdf');
与“类别”和“操作”一样,报告界面中有单独的部分来显示您为事件跟踪创建的所有标签。您可以将标签看作创建针对用户与网页对象之间互动的 额外报告维度的方法。例如,假设您的网页上有 5 个视频播放器需要跟踪用户与之的互动情况。这些视频播放器中的每一个都可以使用“Videos”类别和“Play”操作,但是每个播放器又可以使用单独的 标签(比如影片名称),这样它们就可以在报告中显示为不同的元素。
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']); _gaq.push(['_trackEvent', 'Videos', 'Play', 'Huckleberry Finn']);
值
“值”一词指的是 _trackEvent()
方法中使用的第四个参数,它是一个可选的参数。此参数与其他参数不同,因为它属于 integer
类型,而不是 string
类型,因此您可以使用它来为所跟踪的网页对象指定数字值。例如,您可以通过它来指定以秒计时的播放器载入时间,还可以在视频播放器播放到特定位置时触发一个美元价值。
_gaq.push(['_trackEvent', 'Videos', 'Video Load Time', 'Gone With the Wind', downloadTime]);
该值会按数字识别,并且报告会根据每个事件计数(请参阅下文的隐含计数)累加出总计值。报告还会确定相应类别的平均值。在上述示例中,_trackEvent()
方法会在视频载入完成时针对“Video Load Time”操作进行调用。视频的名称作为标记提供,算出的载入时间会针对各视频下载进行累加。这样,您就可以确定“Videos”类别所有“Video Load Time”操作的平均载入时间。假设您网站上的视频获得了 5 次唯一下载,其下载时间(以秒计算)为:
- 10
- 25
- 8
- 5
- 5
报告界面会进行如下计算,该示例中的数字表示的是以秒计算的下载时间:
带来事件的访问 | 值 | 平均值 |
---|---|---|
5 | 53 | 10.6 |
目前此参数还不支持负整数。
隐含计数
在事件跟踪中,每一次与所跟踪的网页对象之间的互动都会得到记录,并且每次互动都会与特定用户会话相关联。在报告中,“事件总数”计算的是 与某所跟踪网页对象之间的互动总数。另一方面,当某一用户会话(即访问)涉及一个或多个事件时,此指标就会计算为报告中的单个“带来事件的访问”或者“唯 一身份事件”。
比如说,如果一个用户对某视频上的同一按钮点击了 5 次,那么与该视频相关联的事件总数为 5,唯一身份事件数为 1。
以下表格解释了报告界面中某一指定事件类别的数据如何汇总。在该示例中,同一类别名称调用自两个不同的视频播放器,两个播放器各自具有不同的标签。这两个播放器共享“Play”和“Stop”操作,Flash 用户界面针对视频播放器采用的就是这一编程方式。
操作类型 | 标签:“Gone With the Wind” | 标签:“Mr Smith Goes to Washington” | 总计 |
---|---|---|---|
Play | 10 次带来事件的访问 | 5 次带来事件的访问 | 15 次唯一身份事件“播放” |
Pause | 2 次带来事件的访问 | 8 次带来事件的访问 | 10 次唯一身份事件“暂停” |
Stop | 2 次带来事件的访问 | 3 次带来事件的访问 | 5 次唯一身份事件“停止” |
总计 | GWTW 获得了 14 次唯一身份事件 | Mr Smith 获得了 16 次唯一身份事件 | 类别“videos”获得了 30 次唯一身份事件 |
上方的表格假设用户与“Gone With the Wind”和“Mr Smith Goes to Washington”之间的互动各自发生在单独的用户会话(访问)中。不过,下方的表格显示了如何在更为复杂和典型的情况下计算指定操作的事件次数, 即,一些用户只在一个视频中按了“播放”,而其他用户则在一次访问期间与多个视频进行了互动。在这里,唯一身份事件总数反映了所有标签的“Play”操作 的唯一身份事件总数。请注意,尽管每个标签/操作配对都对应有 17 次唯一身份事件,但报告中只列出相关维度的唯一身份事件次数。因此,对于所有操作,仅有 16 次唯一身份事件,对于“Videos”类别,总共有 16 次访问,其中包含类别为“Videos”的一个事件。
操作类型 | 标签:“Gone With the Wind” | 标签:“Mr Smith Goes to Washington” | 总计 |
---|---|---|---|
Play | 10 次带来事件的访问 | 10 次唯一身份事件“播放” | |
Play | 5 次带来事件的访问 | 5 次唯一身份事件“播放” | |
Play | 两部影片均有 1 次带来事件的访问(对“播放”的两次点击) | 1 次唯一身份事件“播放” | |
总计 | GWTW 获得了 11 次唯一身份播放事件 | Mr Smith 获得了 6 次唯一身份播放事件 | 类别“Videos”获得了 16 次唯一身份事件,操作“Play”获得了 16 次唯一身份事件 |
实施注意事项
在为网站实施事件跟踪时,请注意以下几点。
跳出率的影响
一般来说,“跳出”是指用户只在您的网站上访问了一个网页。在 Google Analytics(分析)中,“跳出”特指仅触发了一次 GIF 请求的会话,例如,用户访问了您网站上的一个网页,然后就退出了网站,并且这次访问没有向 Google Analytics(分析)服务器发出有关这次会话的任何其他请求。不过,如果您为网站实施了事件跟踪,您可能会注意到实施了事件跟踪的网页的跳出率指标 有所不同。这是因为事件跟踪像网页跟踪一样被归类为互动请求。
例如,假设您的一个包含视频播放器的网页的跳出率一直很高,并且您没有为该网页实施事件跟踪。如果您随后为该播放器设置了事件跟踪,那么您可能会注 意到该网页的跳出率有所降低,这是因为 Google Analytics(分析)会记录用户与播放器的互动,并将互动作为额外的 GIF 请求发送给服务器。因此,即使在访问该网页的访问者中,仍有相同比例的访问者未查看您网站上的任何其他网页就退出网站,他们与视频播放器之间的互动同样会 触发事件跟踪调用,这样一来,他们的访问就不能算作跳出。
在这种计算方法中,对于实施了事件跟踪的网页,“跳出”所指的意义稍有不同:只访问一个页面,并且在该访问中,用户与跟踪的事件之间未发生任何互动。
请您务必注意,任何在网页载入时自动执行的事件跟踪都会导致该网页的零跳出率。如果您实施了 TimeTracker 示例或任何类似的事件跟踪功能,就会出现这种情况。
每次会话事件数限制
对于每次访问(用户会话),最多只能跟踪大概 500 个综合 GATC 请求(事件和浏览量)。在您通过编程方式生成事件时,请注意这一数量限制。另请注意:当一次会话中的事件数量接近上限时,您可能不能再跟踪更多事件。例如,您应该:
- 避免将视频的脚本处理为每播放一秒就发送一次事件,以及其他重复次数过多的事件触发因素
- 避免使用过多的鼠标移动跟踪
- 避免使用可生成较高的事件次数的定时机制
Google Analytics虚拟页面和事件追踪的区别
今天在蓝鲸的网站分析笔记中,看了Google Analytics虚拟页面和事件追踪这两个功能的介绍文章,两者是事件跟踪(用来记录不产生页面浏览的用户交互行为)的两种方式。但是仔细对比后却有所区别,具体总结如下:
1、实现原理和方式:
虚拟页面是通过_trackPageview()函数来完成的。而事件追踪则是调用pageTracker._trackEvent()函数。两者都是在函数中设置参数值,当访问者执行事件时,并将预先设定的值发送会google服务器,并最终显示在报告里。
2、函数的变量值:
_trackPageview()的变量值只有一个,只需填写标识不同跟踪事件的变量值就行。例如:_trackPageview(“/virtual/outgoing/twitter.com”)记录点击网站twitter链接事件,参数值的层次划分建议有两级以上,一级目录统一标识虚拟页面,二级目录标识链接地址。
而pageTracker._trackEvent()函数要设置4个变量值,按顺序分别为:事件类别,用户行为,事件标签和事件价值。前三个是必须填写的值,第四个事件价值可以可选的。例如:pageTracker._trackEvent(“music”, ”Play”, ” 日光倾城”)。
关于事件跟踪的行为可分以下三类有,具体可以作为函数参数值的目录划分:
站内行为:下载文档,提交评论等。不会产生页面浏览或不同URL页面的行为。
站外行为:友情链接,广告点击等。统称为出站链接。
其他行为:文档加载,页面停留等。与JS事件有关的组合。
3、报告的显示结果:
两者记录的数据报告都是Google Analytics的“内容”中,具体显示报告效果如下:
报告中的事件价值和平均价值是根据pageTracker._trackEvent()函数内第四个可选值计算得出的。
4、实现效果:
虚拟页面会产生一个副产品——虚拟浏览量,因为这些虚拟页面实际上并不存在,但虚拟页面也会在报告中产生浏览量,影响报告的准确性。所以是为了保持网站流量的真实性,应该有一个不包含虚拟流量的配置文件,来分隔虚拟浏览量。
而事件追踪在报告中比虚拟页面灵活的多。可以分别查看不同类别,不同行为的表现情况。所以在追踪下载行为和其他类似行为的时候建议使用事件追踪。
5、具体操作:
由于GA的统计代码分传统和异步,所以虚拟页面分别有两种添加方式:
- <a href="http://www.zzhblog.com/.../" onClick="javascript:pageTracker._trackPageview('/virtual/twitter.com');">Follow me</a>(虚拟页面传统版)
- <a href="http://www.zzhblog.com/....../" onClick="javascript:gaq.push(['_trackPageview','/virtual/twitter.com']);">Follow me</a>(虚拟页面异步版)
- <a href="http://www.zzhblog.com/ Cookie_Sheet.pdf" onClick="pageTracker._trackEvent('GA_res', 'download', 'Cookie_Sheet');">下载</a>(事件追踪传统版)
- <a href="http://www.zzhblog.com/ Cookie_Sheet.pdf" onClick="javascript:_gaq.push(['_trackEvent', 'GA_res', 'download','Cookie_Sheet']);">下载</a>(事件追踪异步版)
以上就是总结的,如果大家还有新的发现,可以指出、分享一下。