竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


279月/160

GA 设置跨网域跟踪

发布在 邵珠庆

设置跨网域跟踪

通过跨网域跟踪,Google Analytics(分析)可以将两个相关网站(例如电子商务网站和单独的购物车网站)上的会话视为一个会话。这有时称为“站点关联”。

跨网域跟踪概览

为跟踪会话,Google Analytics(分析)收集每次匹配的客户 ID 值。客户 ID 值存储在 Cookie 中。Cookie 存储在各个网域中,且一个网域中的网站不能访问为另一个网域设置的 Cookie。当跟踪跨多个网域的会话时,需要将客户 ID 值从一个网域传送到另一个。为此,Google Analytics(分析)跟踪代码具备链接功能,使源网域能够将客户 ID 加入链接的网址参数,供目标网域访问。

使用 Google 跟踪代码管理器设置跨网域跟踪

如果使用 Google 跟踪代码管理器管理 Google Analytics(分析)跟踪,请按照跨网域跟踪中的说明操作。

通过修改跟踪代码设置跨网域跟踪

要针对多个顶级网域设置跨网域跟踪,您需要在每个网域上修改 Google Analytics(分析)跟踪代码。您应掌握基本的 HTML 和 JavaScript 知识或者与开发者合作才能设置跨网域跟踪。本文中的示例使用了 Universal Analytics 跟踪代码段 (analytics.js)。

  1. 在 Google Analytics(分析)帐户中设置媒体资源。
    要进行跨网域跟踪,请在 Google Analytics(分析)帐户中设置一个媒体资源。请为您的所有网域都使用来自该媒体资源的同一个跟踪代码段和跟踪 ID。为了让跨网域跟踪发挥作用,您需要对跟踪代码段进行修改。如果您还没有在自己的所有网页上都添加此代码段,可以先将其复制并粘贴到文本编辑器中,然后再按本文中的说明继续操作。这样一来,您只需先在文本编辑器中进行一次更改,然后再将修改后的代码段添加到您的所有网页上即可。
  2. 修改主网域的跟踪代码。
    在代码段中找到 create 行。如果网站名为 example-1.com,那么这一行会显示为: 

      ga('create', 'UA-XXXXXXX-Y', 'example-1.com');对代码段进行以下更改(您需要更改的地方以红色粗体表示):

      ga('create', 'UA-XXXXXXX-Y', 'auto', {'allowLinker': true});
      ga('require', 'linker');
      ga('linker:autoLink', ['example-2.com'] );
    请记得将示例中的跟踪 ID (UA-XXXXXX-Y) 替换为您自己的跟踪 ID,并将示例中的辅助网域 (example-2.com) 替换为您自己的辅助域名。

    在您的主网域中,所有出现此跟踪代码段的地方都必须包含这些更改。 

    三个或更多个网域按上例所示操作,但是要为自动链接插件再添加其他网域。请注意其中额外的逗号,这个符号非常重要:

    ga('linker:autoLink', ['example-2.com', 'example-3.com'] );

    您的主域名的跟踪代码段应如下所示:

    <script>

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-XXXXXXX-Y', 'auto', {'allowLinker': true});
    ga('require', 'linker');
    ga('linker:autoLink', ['example-2.com'] );

    ga('send', 'pageview');

    </script>

  3. 修改辅助网域的跟踪代码。在代码段中找到 create 行。对代码段进行以下更改(您需要更改的地方以红色粗体表示):

      ga('create', 'UA-XXXXXXX-Y', 'auto', {'allowLinker': true});
      ga('require', 'linker');
      ga('linker:autoLink', ['example-1.com'] );
    请记得将示例中的跟踪 ID (UA-XXXXXX-Y) 替换为您自己的跟踪 ID,并将示例中的主网域 (example-1.com) 替换为您自己的主域名。

    在您的辅助网域中,所有出现此跟踪代码段的地方都必须包含这些更改。

    三个或更多个网域按上例所示操作,但是要为自动链接插件再添加其他网域。请注意其中额外的逗号,这个符号非常重要:

    ga('linker:autoLink', ['example-1.com', 'example-3.com'] );

    您的辅助域名的跟踪代码段应如下所示:

    <script>

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-XXXXXXX-Y', 'auto', {'allowLinker': true});
    ga('require', 'linker');
    ga('linker:autoLink', ['example-1.com'] );

    ga('send', 'pageview');

    </script>

设置报告数据视图和添加过滤器

默认情况下,Google Analytics(分析)仅会添加网页路径和网页名称,不会添加域名。例如,您可能会在网站内容报告中看到网页如下所示:

  • /about/contactUs.html
  • /about/contactUs.html
  • /products/buy.html

由于域名不会列出,因此您可能会很难分辨每个网页所属的网域。

要让您的报告显示域名,您需要执行以下两项操作:创建报告数据视图副本(其中应包含所有网域的数据),并向这一新的数据视图添加高级过滤器。此过滤器会让 Google Analytics(分析)在您的报告中显示域名。

在设置跨网域跟踪后,请按照以下示例设置会在您的报告中显示域名的数据视图过滤器。对于有些字段,您需要从下拉菜单中选择一个项目。对于另外一些字段,您需要输入以下字符:

  • 过滤器类型:自定义过滤器 > 高级
  • 字段A:主机名提取A:(.*)
  • 字段 B:请求 URI 提取:(.*)
  • 输出至:请求 URI 构造器:$A1$B1

点击保存以创建过滤器。

可以使用 Google Tag Assistant 记录验证该过滤器的工作状态是否符合要求。Tag Assistant 记录可以准确显示过滤器对流量的改变情况。

向引荐排除列表添加网域

当用户行为历程从第一个网域转到第二个网域,对于 Google Analytics(分析)来说,相当于通过第一个网域将用户引荐到第二个网域,并创建一个新的会话。如果您希望跨多个网域跟踪单个会话,则需要将网域添加到引荐排除列表

检查跨网域跟踪运行情况

要验证跨网域跟踪的设置是否正确,最好的方法是使用 Google Tag Assistant 记录。只要会话跨网域,它就可以立即显示跟踪是否正常。

以下示例 Tag Assistant 记录报告显示在跨网域跟踪设置错误时,会显示哪些内容。

相关资源

207月/150

如何跟踪用户在WAP页面的浏览

发布在 邵珠庆

一、背景

网站分析工具基本的工作原理 这篇文章我们有讲到过,目前主流的网站分析工具都是使用页面标记法来收集网站数据的,一般使用的是JavaScript 代码的方式,我们可以称之为客户端实现。WAP 页面,在本文中特指使用WML编写的用于在功能手机和低端类手机显示的页面。对于WAP 页面,前端实现的方法显然是不可行的,这是因为:1)功能手机和其他低端类手机的网页浏览器很多不支持JavaScript;2)页面标记法代码执行时通常要伴加载一个超过10Kb的JavaScript文件,而这类手机内存非常之小,10Kb 对于它们来说太大了!

那么,如何才能跟踪这些手机上WAP 页面的数据呢?答案就是HTML 页面标记+服务端实现

二、实现方法

 

方法一:

1)根据服务器环境选择对应文件放到服务器上;

如服务器环境是PHP,用百度统计跟踪的话,将百度统计后台提供的hm.php 放到网站根目录。

2)在所需跟踪页面(动态页面)的<head>前用脚本定义好后边发送数据所需必要信息;

如引用hm.php 定义的方法,定义百度统计收数使用的站点ID。

3)在所需跟踪的页面的</body>结束之前插入一个img标签,其src属性使用第二步中定义好的方法来指定;

如src 的值指向百度统计的收数地址,即类似这种形式http://hm.baidu.com/hm.gif?……

具体案例:

多米音乐WAP页面:http://wap.duomi.com/

本站WAP(img) 测试页面:http://jeffshow.com/test/bd/wap_img.php

baidu-wap-tracking

方法二:

第1步、第2步和方法一相同,但是第3步不指向统计工具的收数地址,而指向本站的一个地址,再通过服务器设置302跳转,使之指向统计工具的收数地址。

具体案例:

虎扑体育论坛WAP页面:http://wap.hupu.com/bbs/nba

img-src-302

方法三:

为了帮用户节省流量,不少移动端浏览器可以开启无图模式,而前两种方式都是基于img标记来实现的,开启了无图模式之后,数据不能被发送出去,因而可能导致较大的误差。为了避免这种情况造成数据较大的误差,需要引入link标签代替img标签。

第1步和第2步和第二种方法一样,只是在第3步这里使用link标签来代替,相应的img标签的相关属性也被替换,如src被替换为href等。

具体案例:

手机瑞丽网:http://wap.rayli.com/

本站WAP(link)测试页面:http://jeffshow.com/test/bd/wap_link.php

badiu-wap-link

三、GA 中的实现方法

以上介绍的三种方法是通用型的,为了方便说明是以百度统计为例来介绍的。那么在GA 中,其实现方式如何?是否有什么不同之处?

本质上说,GA 中的实现方式与上述一样,不过细节方面又稍有不同。根据GA 帮助文档,在GA 中WAP 页面跟踪的实现方式分为两种:一种是基于ga.php;另一种是基于Measurement Protocol,GA 推荐的实现方法;

我们分别来看下这两种方法(以PHP环境为例):

基于ga.php

这种方法跟前面介绍的第一种方法相似,前两步是一样的,第3步在GA 中稍有不同。GA 中的实现并不是让img直接请求收数地址,而是附加查询参数请求已经上传的ga.php文件。当服务器收到这个请求后,会解析并执行携带参数的ga.php文件,ga.php文件中定义了发送数据到GA 服务器的方法,执行后相关数据就被发送到了GA 收数服务器。

需要注意的是:

1)不能直接使用property ID,需要把UA-替换为MO-;

2)此方法在2014-4-2 即已被GA 官方弃用,不过经测试,依然可以收数;

3)仅能满足pageview类型hit的发送,因此流量来源和会话相关报表可以正常使用,但是事件统计之类的满足不了;

具体案例:

多米音乐WAP页面:http://wap.duomi.com/

本站WAP测试页面:http://jeffshow.com/test/ga/wap_img.php

ga-wap-img

基于Measurement Protocol

GA 对于Measurement Protocol 的用处描述如下:

  • Measure user activity in new environments.
  • Tie online to offline behavior.
  • Send data from both the client and server.

即Measurement Protocol 可以用来衡量新场景下的用户的行为,打通线上和线下,从客户端或服务端发送数据。相比前一种方法,使用Measurement Protocol的方法可以实现复杂的事件统计、电商统计等功能。其具体使用方法和前述类似,即构造http请求发送到GA 收数服务器即可。

四、总结与扩展

随着智能手机的普及,不支持JavaScript 的情况越来越少,相应的,WAP 页面也几乎消失殆尽。尽管如此,服务端实现的方法依然有其价值所在。比如说,我们要实现某些敏感数据的统计,但是这些数据又不能出现在页面源代码中;或者要统计一些文档(如PDF文档)被用户直接浏览或下载的次数,这些文档对应的地址显然是用不了JavaScript代码的;再比如说,我们要尽可能完整地收集使用无图模式的用户的浏览页面的数据。

以上举例,只是实际可能碰到情况的一个很小的子集。当使用客户端实现的方法难以较好地解决当前的问题,或许是时候考虑下服务端实现的方法了。

五、参考资料

1. Google Analytics for Mobile Websites

2. Measurement Protocol – Using a Proxy -Server

3. 百度统计贴吧

4. Tracking PDFs & Downloads Inside Google Analytics, Server-Side!

Read more: http://jeffshow.com/how-to-track-wap-based-site-in-ga.html#ixzz3gPkMwsaX

234月/151

GA User Timings – Web Tracking (ga.js) _trackTiming

发布在 邵珠庆

var startTime = new Date().getTime();//请求前添加

var endTime = new Date().getTime();//请求成功后添加

var timeSpent = endTime - startTime;
_gaq.push(['_trackTiming', 'Pop-up Layer', 'Get AjaxData ', timeSpent, '页面URL名称', 100]);
请将红色部分进行替换~~

Setting Up User Timings

To collect user timing data, you'll need to use the _trackTiming method, which sends time data to Google Analytics.

_gaq.push([‘_trackTiming’, category, variable, time, opt_label, opt_sample]);

Where the parameters represent:

Parameter Value Required Summary
category

类别

string yes A string for categorizing all user timing variables into logical groups for easier reporting purposes. For example you might use value of jQuery if you were tracking the time it took to load that particular JavaScript library.

一个字符串进行分类的所有用户时间变量到逻辑组,便于报告的目的。例如,你可以使用jQuery,如果你跟踪它采取加载特定的JavaScript库的时间。

variable

变量

string yes A string to indicate the name of the action of the resource being tracked. For example you might use the value of JavaScript Load if you wanted to track the time it took to load the jQuery JavaScript library. Note that same variables can be used across multiple categories to track timings for an event common to these categories such as Javascript Load and Page Ready Time, etc.

一个字符串,以指示该资源的操作的名称被跟踪。例如,你可以使用,如果你想跟踪它走上加载jQuery JavaScript库时的JavaScript加载的价值。需要注意的是相同的变量可以跨多个类别被用来跟踪定时共同这些类别例如JavaScript负荷和页面就绪时间等事件

time

时间

number yes The number of milliseconds in elapsed time to report to Google Analytics. If the jQuery library took 20 milliseconds to load, then you would send the value of 20.

在经过时间的毫秒数报告给谷歌Analytics(分析)。如果jQuery库花了20毫秒加载,那么你会送20的值。

opt_label

标签

string no A string that can be used to add flexibility in visualizing user timings in the reports. Labels can also be used to focus on different sub experiments for the same category and variable combination. For example if we loaded jQuery from the Google Content Delivery Network, we would use the value ofGoogle CDN.

可用于增加灵活性在报告中可视用户定时的字符串。标签也可用于集中为同一类别和变量的组合不同的子实验。例如,如果我们加载的jQuery从谷歌的内容交付网络,我们将使用谷歌CDN的价值。

opt_sampleRate

抽样比例

number no A number to manually override the percent of visitors whose timing hits get sent to Google Analytics. The default is set at the same number as general site speed data collection and is based as a percentage of visitors. So if you wanted to track _trackTiming hits for 100% of visitors, you would use the value 100. Note that each hit counts against the general 500 hits per session limit.

一些手动覆盖游客的时机命中被发送到谷歌Analytics(分析)的百分比。缺省设定为相同数量的常规站点高速数据采集,并基于作为访问者的百分比。所以,如果你想跟踪_trackTiming命中游客100%,你会使用值100注,每命中计数对每个会话限制一般500命中。

910月/120

GA自定义变量的16个有趣用法

发布在 邵珠庆

 

16 interesting ways to use Google Analytics custom variables

Copyright © TechPad.co.uk

 

早期迹象表明Google Analytics(GA)用户可能将能够存储多达50个自定义变量。下面是填充这些数值的一些主意!

设置自定义变量相对于GA中的其他事情来说稍微更复杂些,因为你需要懂一点服务器端的编程和SQL查询。

然而,这是非常有用并且值得的。自定义变量会给GA的配置文件中增加大量额外的数据,因为设置这些是值得的。

如果把高级细分和自定义变量配合使用,你会发现GA的作用增强上百倍。

如果你想尝试这个,查看我们的这个“通过PHP创建自定义变量”的指南。

50个自定义变量位置确实非常多,我想类似我这样的粉丝甚至很难填充满它们。然而,下面是着手去做的一些主意。

(注:后有博客更新:50个自定义变量只针对于商业版用户,免费GA用户仍然只能使用5个自定义变量)

1. 跟踪用户是否登录

当用户登录时,你的服务器端语言将创建一个变量会话来声明这点,以允许你识别用户是否已经登录。

如果你找到一个有效的变量会话,表明用户已经登录,创建一个自定义变量,该变量将会在结束时过期。

_gaq.push(['_setCustomVar',1,'Status','Logged-in',1]);

如果你找到一个有效的变量会话,表明用户未登录,创建一个自定义变量来标记他们为退出用户。

_gaq.push(['_setCustomVar',1,'Status','Logged-out',1]);

2. 跟踪会员与非会员

When a user successfully logs in, you know that they’re a member, so you create a custom variable which is persistent.当用户成功登录,你知道他们是会员,因此你创建一个持续性自定义变量。

_gaq.push(['_setCustomVar',2,'User','Member',2]);

下次他们返回时,即使他们没有登录,还是能够识别他们为会员。

对于其他人,你创建一个自定义变量表明他们是非会员。

_gaq.push(['_setCustomVar',2,'User','Non-Member',2]);

3. 跟踪作者的表现

想了解你网站的哪个作者吸引了最多的访客,与最多的用户互动并产生了最大的回报?

你可用通过创建一个包含作者名字的页面级自定义变量来实现。

_gaq.push(['_setCustomVar',3,'Author','Matt Clarke',3]);

4. 跟踪网站各个部分的表现

页面级自定义变量,正如第三条表明的是这个功能的最后一次声明,用它来归类网站各个部分表现的额外数据是非常方便的,而这单独通过标准的界面是很难跟踪的。

比如,如果你只想跟踪和细分你网站博客部分的访问(或者你网店鞋类产品部分客户的),创建一个类似这个的自定义变量。

_gaq.push(['_setCustomVar',4,'Section','Blog',3]);

类似的,如果你想存储正在浏览的子分类信息,只需创建一个这样的自定义变量。

_gaq.push(['_setCustomVar',5,'Subsection','Web analytics',3]);

5. 跟踪评论者

参与会话的用户与保持沉默的用户有何区别,你能从中学到什么以带动评论?

一旦他们发表一个评论,创建一个下面这样的自定义变量,然后你就可以跟踪他们他们整站的活动以及未来的访问。

_gaq.push(['_setCustomVar',6,'Commented','Yes',1]);

你将同时需要为那些未评论的人创建一个自定义变量,其中的值需要设置为NO,这允许你比较着两个组。

_gaq.push(['_setCustomVar',6,'Commented','No',1]);

6. 跟踪客户忠诚度

如果你在运营一个电子商务网站并且想基于购买次数分析客户的行为,那么尝试这个。

当这个客户达到支付页面,运行一段快速的SQL数据库查询以了解他们之前订购过多少订单。如果只是他们的首次下单,那么创建这个自定义变量。

_gaq.push(['_setCustomVar',7,'Customer','New customer',2]);

如果这是第二次下单,设置这个。

_gaq.push(['_setCustomVar',7,'Customer','Returning customer',2]);

如果他们下过两次订单或者更多,创建这个。

_gaq.push(['_setCustomVar',7,'Customer','Loyal customer',2]);

7.  跟踪单独的客户

这是一个 某些人觉得有些冒险的事情,但是它取决于你是否把客户ID,比如383328,当做可识别的个人信息(PII)。

Google坚持你不能存储可识别的个人信息(PII)到GA中,但是大多数人会说像3980933这样的客户ID,除非站长本身,其他人是无法识别为个人的,因此这并不会违反隐私条款或者带来安全隐患。

如果你想做这个,你只需要在客户登陆时把客户ID提取出来并添加到像这样的自定义变量中。

_gaq.push(['_setCustomVar',7,'CustomerID','5345435',2]);

8. Track Twitter users

要看看有多少Twitter用户价值,以及他们如何不同于其他客户或用户?当用户点击一个Tweet“关注”按钮,或从Twitter到您的网站,创建一个自定义的变量,以确定它们作为一个Twitter用户对自己网站未来的访问。

_gaq.push(['_setCustomVar',8,'Twitter user','Yes',2]);

9. 跟踪 Facebook用户

你可以做同样的事情,Facebook的用户,有一点稍微复杂的JavaScript。如果你能确定他们是否已经点击您喜欢或推荐按钮,或者已经通过Facebook.com被称为然后将它们添加到自定义的变量。

_gaq.push(['_setCustomVar',9,'Facebook user','Yes',2]);

10. 跟踪邮件订阅者

You could track email newsletter subscribers in a couple of ways.

You could bucket them after they sign up for your newsletter by writing the custom variable after they submit the form, or if you useutm_campaign tracking you could capture this from the URL, parse it and bucket them that way.

_gaq.push(['_setCustomVar',10,'Newsletter subscriber','Yes',2]);

11. 跟踪RSS订阅者

你的RSS订阅不同的反应呢?您可以跟踪他们在大致相同的方式,如果你标记您的电子邮件订阅你的RSS源与谷歌Analytics(分析)的广告系列跟踪变量。

_gaq.push(['_setCustomVar',11,'RSS subscriber','Yes',2]);

12. 跟踪促销活动表现

Running an offer on your home page and want to see whether users buy the product as a result? You could track the performance of this with event tracking if you use _trackEvent on the onclick.

However, the offer promotion won’t be recorded as the reason for the conversion if they buy the product on a subsequent visit. However, if you set a custom variable on the onclick it definitely could.

_gaq.push(['_setCustomVar',12,'Summer sale promo','Yes',2]);

13. 跟踪你帮助过的客户是否最终下单

 

大多数网站提供的在线客户服务,使客户可以联系他们通过在其网站上。

一些企业认为这是一个昂贵的服务提供,因为它可以出现,帮助这些客户并不总是导致的销售。

通过设置自定义变量时,提交表单你可以将它们标记为你的客户提供客户服务,通过您的电子邮件系统,你就可以将它们分组与其他测量响应。

_gaq.push(['_setCustomVar',13,'Customer service','Emailed',2]);

14. 跟踪投诉者是否回来

同样,如果你有一个客户服务的形式,其中包括一个下拉菜单,其中提供了各种选项和他们标志着他们的查询为投诉,您可以将它们添加到另一个自定义的变量。

_gaq.push(['_setCustomVar',14,'Complaint','Emailed',2]);

如果你结合起来,与_trackEvent(为便于跟踪),你就可以不仅能够监控你要多少宗投诉,但无论是客户抱怨以往任何时候都再次购物。

15.跟踪客户性别

如果你让用户告诉你他们是男性还是女性(未婚或已婚),你可以使用这个信息并把性别信息包含到设置的自定义变量中。

_gaq.push(['_setCustomVar',15,'Gender','Male',2]);

_gaq.push(['_setCustomVar',15,'Gender','Female',2]);

然后,你就可以下钻了解是否男性与女性会对你的网站做出不同的反应,这可能对你的营销团队或甚至你的设计师有用处。

16. 跟踪客户年龄

类似地,如果你询问用户,要求他们告诉你年龄(或者大概年龄),你还可以把这个值放入到自定义变量中。

_gaq.push(['_setCustomVar',16,'Age','16-25',2]);

是否某个年龄的女性喜欢你的某个产品,或者博客话题?把那个数据和其他自定义变量组合,你可以或者一些真正的买家数据透视。

289月/120

多子站点GA统计配置与流量分析

发布在 邵珠庆

假设有以下三个子站点:

cms.site.com

bbs.site.com

shop.site.com

cms是文章站,bbs是论坛,shop是网店。这三个站点,有不同的关注点,从流量来源看,cms主要来自搜索引擎,bbs主要来自合作网站推 荐,shop主要来自cms和bbs的站内广告。从用户的引导看,因为cms的访问量最大,希望把用户引导到bbs完成注册,以及进一步的在shop消 费。

cms关注的事件和目标有:

搜索引擎关键字的着陆页与跳出率,平均文章阅读数,回访,广告点击,商品购买,引导去bbs注册。

bbs关注的事件和目标有:

新用户的注册量,回访,论坛的发帖和回复,引导去shop购买。

shop关注的事件和目标有:

从cms,bbs来访用户的转化率,站内商品搜索,下单过程的流失率。

对于这三个站点,最简单的分析方式是建3个独立的GA账号,分别统计,因为GA cookie的域会默认用当前的站点,如:cms.site.com,这样即使同一个人分别访问了3个站点,也互不影响,还可以分别对各个账号设置事件记 录和目标。在这种情况下,当用户点cms的一个推荐链接来到bbs时,cms会作为引荐流量,从GA的角度,并不知道这三个站点是兄弟站点。

分开统计的好处是:事件,目标,用户变量,配置相互独立,可以从子站的角度看流量的变化。缺点是无法知道准确的总唯一访客数,以及site.com 的整体流量来源。另外,追踪引荐流量时,只能看到带来注册的引荐路径,至于用户之前访问了哪些页面,以及用户从哪里来,则很难分析。

对于这种情况,最佳的做法是即统计子站点也统计总站数据,建立一个新的账号main,cooki的域为.site.com,当要看汇总数据时,去这个账号看。

以cms为例,原有的统计代码是:

var _gaq = _gaq || [];

_gaq.push(

['_setAccount', 'UA-111001-1'],

['_trackPageview']

);

增加以下代码:

_gaq.push(

['t2._setAccount', 'UA-222001-1'],

['t2._setDomainName','.site.com'],

['t2._addIgnoredRef', 'site.com'],

['t2._trackPageview']

);

即创建一个新的Tracker(t2),指定账号(setAccount),设置cookie的所在域(setDomainName),并且把 site.com子站之间的推荐链接作为直接访问(addIgnoredRef),这样在cms站点访问一个页面时,将会分别提交到:cms,main 两个账号。

如果默认不做配置的话,你会在main账号的所有页面(All Pages)看到这样的页面列表:

/home

/topic/reply_3356

/topic/reply_2269

/article/1234

/buy/332

三个子站相同的页面,如home页被放在了一起,三个子站不同的页面,则按照浏览量,从高到低排列,在这种情况下,你即无法比较各个子站点的流量,也无法准确分析某个页面的:关键字,流量来源,跳出率等,因为有可能是混杂的数据。

以/home为例,虽然三个子站点的Page是一样的,但他们的Hostname是不一样的,点击/home链接,然后次级维度选:Hostname,这时即可看到详细的数据了。

还可以按:Hostname,Page 作为维度,PageViews作为指标,建一个自定义报表。

在自定义报表上,会列出三个站点的总PV:

点击cms.site.com链接,会列出该站点的页面和PV:

通过次级维度和自定义报表,虽然可以解决问题,但还是不方便,如果默认的页面列表能补上Hostname就好了,这样还可以在Content Drilldown视图,按目录,一级一级点下去,按站点,按目录查看和比较流量了。

这个可以做,为了不影响原始数据,新建一个配置文件:main_group_site,然后建一个过滤器:

即在Request URI前,补上Hostname,这时再去:所有页面(All Pages)报表看,就清楚多了,就像这样。

/cms.site.com/home

/bbs.site.com/home

/shop.site.com/home

/bbs.site.com/topic/reply_3356

/bbs.site.com /topic/reply_2269

/cms.site.com/article/1234

/shop.site.com/buy/332

这样还有一个顺带的好处,假设我们想知道 /shop.site.com/buy/332的引荐路径时,只要点击这个页面链接,然后看导航摘要,这时即可完整的看到:/shop.site.com/buy/332 访问的上一页,下一页路径了,就像这样:

子目录的流量汇总:

假设有以下2个子应用,放在同一个域的2个目录下:

app.site.com/listen

app.site.com/dict

如果不做处理,在提交到汇总账号时,看到的都将是 app.site.com,这样就无法按Hostname区分流量了,简单的做法是增加一个新的过滤器。

这样保存的Hostname将会修改为:

listen.app.site.com

dict.app.site.com

然后就可以按Hostname来区分子目录的流量了。

总结:

多子站点统计,可以从总体上查看和比较各个子站点的流量信息,以及在全站范围追踪完整的访问路径,对于建立整站流量的大局观很有意义,同时因为所有 的访问都放在了一起,最终得到的:跳出率,平均访问时间等数据,会不够准确,因为被平均了,这时应该分别看子站点的数据,从局部上分析和优化各个子站点的 流量。

219月/121

Google Analytics功能篇—自定义变量

发布在 邵珠庆

自定义变量可能是google analytics中最复杂且最有用的一个功能。说他复杂是因为在使用自定义变量之前,需要你对所要追踪的数据和所达到的目的有清楚的规划,自定义变量靠在网站的不同页面进行单独插码来完成数据收集。说他最有用是因为通过自定义变量获得的数据可以清楚的了解访客的行为。

自定义变量与自定义访客群体

自定义变量的前身是自定义访客群体,也就是访问者报告下的用户定义的部分。自定义访客群体通过在页面或GATC中调用_setVar() 的方法来对访问者的身份进行标记。具体的工作过程是,当访问者在网站中完成了某个特定的行为时,在访问者的浏览器中创建一个_utmv的cookie,并在cookie值中定义此访问者的属性。这个属性值也会同时被记录到访问者报告下的用户定义报告中。

cookie_utmv

自定义访客群体最常见的用法是对访问者进行分类,也可以用来过滤动态IP地址。

比如:注册用户/游客;

VIP用户/购物用户/非购物用户

内部访问/(none)

由于自定义访客群体功能非常受欢迎,所以google analytics对这个功能进行了升级和扩展。将原来只能区分一个类别的版本扩展为可以分别记录5类,3个级别的高级版本:自定义变量。自定义变量可以完成所有自定义访客群体的功能。所以,google analytics建议更多的使用自定义变量来区分访问者。(自定义访客群体功能现在也依然可用,但会有一些问题,这个后面会提到。)

自定义变量功能概述

自定义变量可以让你了解到不同类别的访问者在浏览网站时进行的所有你最关注的行为。这句话有些绕口,但基本概括了自定义变量的功能。

例如:一个电子商务的网站可能会想知道:

1  20-30岁VS 30-40岁的访客哪个群体更有购买力?利润更高?

2  男性访客和女性访客在购物车的放弃率上有何差异?

3  喜欢CD的访问者也会对图书感兴趣吗?

这些都是自定义变量可以解决的问题。通过对自定义变量进行设置,我们可以在报告中清楚的看到这些数字。

自定义变量的工作原理

一个访问者可以在不同的时间多次访问网站,而在一次访问中可以浏览网站中的多个页面。 自定义变量就是按照访问者与网站的基本互动模式,将访问者和访问者与网站的互动分为三个级别。它们分别是:

Custom Variables

访客级别—访客级别是对网站的访问者进行标记,具体的条件可以按照网站的实际需求来设置。例如:年龄,性别,学历,收入,购买记录等等。

Session级别—Session级别是在一次访问过程中,对访问者的行为或与网站的互动行为进行记录。例如:登录网站,加入收藏,加入购物车,移除产品,发表评论等等。

页面级别—页面级别也是在一次访问过程中,对访问者浏览过的页面进行记录。例如:新产品页,促销活动页,帮助页等等。

这里的页面范围可以通过页面级自定义变量进行设置。与Google analytics热门报告中的热门页面不同。例如:你可以将所有介绍新产品的页面都定义为新产品页面。

自定义变量属于“自定义类型数据”。当自定义的内容或事件被触发时,google analytics就会收到一条数据。并将数据记录在访问者报告中的自定义变量子报告中。

访客级返回数据

CV_utmv

http://www.google-analytics.com/__utm.gif?utmwv=4.7.2&utmn=2133506401&utmhn=bluewhale.cc&utme=8(user)9(bluewhale)11(1)&utmcs=utf-8&utmsr=1280×1024&utmsc=32-bit&utmul=en-us… …

Session级返回数据

http://www.google-analytics.com/__utm.gif?utmwv=4.7.2&utmn=1548771060&utmhn=bluewhale.cc&utme=8(login)9(yes)11(2)&utmcs=utf-8&utmsr=1280×1024&utmsc=32-bit&utmul=en-us&… …

页面级返回数据

http://www.google-analytics.com/__utm.gif?utmwv=4.7.2&utmn=459118439&utmhn=bluewhale.cc&utme=8(Navigation)9(homepage)&utmcs=utf-8&utmsr=1280×1024&utmsc=32-bit&utmul=en-us&… …

其中访客级的数据会同时记录在浏览器的cookie中,当访问者下次访问网站时GATC自动读取cookie值来区分访问者属性,并针对这个属性记录访问者本次访问的浏览行为。也就是说访客级的值可以跨越不同的访次,而Session级和页面级的值只在特定的访次中有效,其中页面级的数据相当于对访次中pageviews的记录。

需要注意的几个问题

1访客级自定义变量与自定义访客群体的值都存储在_utmv cookie中,并且新值将会覆盖老值,所以两者不能同时使用。Google官方的建议是统一使用自定义变量来区分访客。

2 当访客更改访客级的自定义变量值时,页面级数据将同步更新,但Session级数据将在下个访次中才会更新。(这个是调用_setvar()方法时会产生的问题,但在新的自定义变量中并未说明具体的记录方式。)

例如:访问者在第一次访问时选择身份为CD爱好者,并被标记(_utmv cookie),当这个访问者第二次访问时在浏览了3个页面后又选择了身份为图书爱好者,并被标记(_utmv cookie)。此后该访问者继续浏览了5个页面,然后离开。那么,该访客的第二次访问时的身份将被记录为CD爱好者,在他变更身份前浏览的三个页面会被记录到CD爱好者身份下,而变更身份后浏览的5个页面将被记录到图书爱好者的身份下。所以,在选择区分访客类型时要尽量选择不易变更的属性,例如性别,职业等等。

3自定义变量分为三个基本,并通过代码中的数字进行标识。没有标识数字被默认为为页面级自定义变量。

4对于单一页面,最多只能设置5个自定义变量。可以是访客级,Session级或页面级的。但访客级的会覆盖cookie中原有的值。

5对自定义变量中设置的类别名称和值的长度不能超过64个字节。

自定义变量的实施

_setCustomVar(index, name, value, opt_scope)

_setCustomVar(类别, 自定变量名称, 自定义变量值, 自定义变量范围)

Index—自定义变量的类别,可以设置的范围是1-5

Name—自定义变量的名称,名称与值相对应。这里设置的内容将出现在自定义变量报告的最高一级。

Value—自定义变量的值,这个值与名称应该成对出现。通常一个名称可以对应很多个值。例如:当名称为性别时,对应的值就应该是男,女,两个值。

opt_scope—自定义变量的范围,可以设置的范围是1-3。其中1表示访客级别,2表示会话级别,3表示页面级别。为空时默认表示页面级别。

实施前的准备工作

自定义变量是否能追踪到数据,能追踪到哪些数据完全取决于之前的设置。简单的说就是,你关心哪些内容和行为,就对他们进行插码追踪。如果事先没有插码,就不会有任何数据。所以,在实施前就需要对网站结构和关心的内容进行整理。例如:访客类别划分,网站内容划分,所要关注的行为等等。有些时候为了获得准确的数据,还需要对网站的内容进行调整。在经过详细的规划后才有可能获得理想的数据。

三种插码实施的方法

根据网站的情况和追踪访问者行为的差异,可以使用三种不同的方法在网站的不同页面中添加自定义变量的追踪代码。

1在GATC代码中直接添加自定义变量的代码。这种方法实施起来比较简单,只需要在异步代码中增加一行自定义变量代码就可以了,但当遇到一些不需要追踪的页面时就会比较麻烦(当他们使用同一页底模板时)。如果你需要对整站应用自定义变量时,或者追踪页面有自己单独的页底模板时,可以考虑使用这种方法。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!--GA tracking code begin-->
 
<script type="text/javascript">
 
var _gaq = _gaq || [];
 
_gaq.push(['_setAccount', 'UA-12347890-1']);
 
_gaq.push(['_setCustomVar', 1,'user','bluewhale',1]);
 
_gaq.push(['_trackPageview']);
 
(function() {
 
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 
ga.src = 'http://www.google-analytics.com/ga.js';
 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 
})();
 
</script>
 
<!--GA tracking code end-->

2 如果第一种方法不适合的话,可以使用这种方法。在要追踪页面的GATC后单独添加自定义变量的代码。

 

 

1
2
3
4
<script type=”text/javascript”>
_gaq.push(['_setCustomVar', 1,'user','bluewhale',1]);
_gaq.push(['_trackPageview']);
</script>

3第三种方法比较灵活,可以追踪到一些页面元素或访问者的具体行为。例如:页面加载,点击,鼠标悬停,等等。实施方法和虚拟页面类似,在访问者产生点击行为时调用自定义变量。

1
<a href="http://bluewhale.cc" onClick="javascript:_gaq.push(['_setCustomVar', 1,'user','bluewhale',1]);_gaq.push(['_trackPageview']);">

查看自定义变量数据

自定义变量的数据被记录在访问者报告下的自定义变量子报告中,报告的第一级显示的是所有自定义的自定义变量名称。选择变量名称可以查看不同值的数据。例如:在第一级报告中选择登录,下一级报告中将分别显示登录与未登录访次的数据。

Custom Variables report

自定义报告配合使用

除了在自定义变量里查看数据外,还可以使用自定义报告创建报告。在自定义报告中,可以对不同类别的自定义变量名称或值创建报告,并且可以使用时间和来源子纬度对自定义变量的值进行细分。

Custom Variables  custom report

高级群体配合使用

除了自定义报告,自定义变量同样可以和高级群体配合使用。使用高级群体可以对一类访问者或者有同一行为的访次进行过滤。并与其他访次进行对比。下面截图中创建了登录访次的高级群体。

Custom Variables advanced segment

然后在报告中应用这个高级群体,并与所有访次的数据进行对比。按照这个方式同样还可以创建更多的高级群体,不过这都取决的于之前对自定义变量的设置。

CV advanced segment

Google Analytics自定义变量的功能太强大了,一篇文章只能说个大概。也许你已经对这个功能有了很好的使用心得了。那么请给我留言吧。让我们一起分享下。

88月/123

GA记录访客信息Cookie の utma utmb utmc utmz

发布在 邵珠庆

utma

记录visitor的信息,utma后面的信息,包括域的hash值,visitor的ID、访问时间相关信息和访问次数。utma对应的信息,除非人为删除,否则它在两年后才失效。

第一个蓝色的字段是域名的哈希串,对于一个确定的域名来说,这个值是不会改变的。

第二个字段(绿色字段)是识别visitor的ID,就是这个绿色字段,标识了不同的访问者,不同的值就意味着不同的访问者。这就是GA能够辨别不同访问者的原因。这个值如果不发生人为地删除cookie的情况的话,两年后才会被替换为一个新的值。

第 三个字段(紫色字段)是这个visitor第一次访问网站的时间,如果不删除cookie,两年内这个值也不会变。这个时间是UNIX时 间,0000000001代表着1970年1月1日0点0分1秒,之后每过一秒,数字加一。实际上UNIX时间是有点小错误的,但是已经不会再对使用产生 影响。这里同学们需要注意了。这里以及cookie中其他的UNIX时间记录,构成了GA的整个时间度量系统。时间是这么创造的!

第四个字段(浅蓝色字段)是这个visitor前一个visit开始的时间。

第五个字段(浅紫色字段)是这个visitor这一次visit开始的时间。

第六个字段(最后那个独立数字)太重要了,是记录这个visitor访问网站的次数。

 

utmz

utmz的功能是用来记录网站访问者的来源(即Traffic Source或者Campaign),如下:

这 里各个字段的含义除了Campaign Number之外就不多解释了,大家肯定能看懂。Campaign Number是指这个访问者通过不同来源(除了直接来源)访问网站的来源数。如果通过了一个新的来源访问了网站,即使是在一个visit之 内,campaign number也会加一,但visit并不会增加。

 

Campaign number的作用我并不是很明确,很希望知道的朋友告诉我。我知道的是,如果在一个visit之内,访问者通过多个来源访问了网站,那么GA默认把最后 的那个来源归为这个visit的主人。如果你用utm_nooverride=1配置,那么GA则会把第一个来源记录为这个visit的主人。

 

utmb和utmc

utmb和utmc是另外两个重要的cookie信息,在免费版本的HttpWatch中看不到,不过没关系,大家用firebug就能看到。

 

简 单讲,utmb和utmc都是记录visit的cookie。两个cookie的区别是,utmb在30分钟后过期,如果utmb过期刷新,那么 visit也被刷新。utmc是浏览器关闭则随浏览器一起关闭(失效),再打开浏览器访问那个网站,visit也被刷新。这就是为什么GA的visit在 不活动30分钟后结束,以及关闭浏览器结束的原因。

27月/124

Google Analytics高级应用系列教程[setVar运用]

发布在 邵珠庆

_setVar的运用

Google Analytics 进阶运用系列文章作者:Sluke,主要讲解Google Analytics 统计的相关应用,本文是系列文章第六篇。

_setVar函数跟_trackPageview函数一样,灵活运用可以极大丰富统计报告。简单来说,_setVar函数可以定义一个值,当被触发的时候,该值被记录。

1、统计有注册意愿的用户

注册,不出意外都需要访问一个注册页面,那么统计访问这个页面的用户也就知道了有多少用户动过注册的念头,当然可能看了一眼,没有完成注册。我们可以在注册页面这样部署代码:


  1. <body onLoad="javascript:pageTracker._setVar('想注册');"> 

2、统计注册成功的用户

注册的最后一步无非就是按下“确定”按钮,那么就在完成注册的“确定”按钮上加上onClick事件,比如


  1. onClick="pageTracker._setVar('完成注册'); 

3、统计登陆用户

对于有会员系统的网站来说,可能需要知道有每天有多少用户登陆网站,用于考查网站提供的会员增值服务是否有吸引力,关系到网站是否可以通过对会员的精准营销来赢利。我们可以在给登录链接加上:


  1. <a href="link.html" onClick="pageTracker._setVar('登陆用户');">点击此处</a> 

同样的,也可以在登陆页的确定按钮上加。

以上三个是比较容易想到的应用,值得一提的是,_setVar函数被触发后,定义的值是会被写入cookie的。

4、观察用户兴趣

对于一个大的电子商务网站来说,对用户的购买兴趣一定是有兴趣的,_setVar函数可以通过网站上访问的页面或在表单上做出的响应对其进行分类,前面三个就是演示。

假设网站有个多个商品分类,我们分别给每个分类加上


  1. <body onLoad="javascript:pageTracker._setVar('IT书籍');">  

所有访问该页面的访问者都将被分配到“IT书籍”组,也就是对IT书籍有兴趣的用户。

google给出了一个通过下拉菜单触发的例子:


  1. <form onSubmit="pageTracker._setVar(this.mymenu.options[this.mymenu.selectedIndex].value);"> 
  2. <select name=mymenu> 
  3. <option value="Technical/Engineering">技术人员/工程师</option> 
  4. <option value="Marketing/PR">Marketing/PR</option> 
  5. <option value="Manufacturing">Manufacturing</option> 
  6. <option value="General Management">General Management</option> 

这样,我们就大致上知道了不同职业的用户停留时间、跳出率、平均访问页数等等数据。

标签: , 4 评论
27月/120

Google Analytics高级应用系列教程[自定义搜索引擎]

发布在 邵珠庆

搜索引擎跟踪

Google Analytics提供了强大的API来跟踪搜索引擎,下面用鲜果网的自定义代码来说明,打开鲜果网的首页,能看到这样一段代码:


  1. var t = _gat._getTracker("UA-9142976-1");
    
  2. t._addOrganic("baidu","word");
  3. t._addOrganic("soso","w");
  4. t._addOrganic("3721","name"); 
  5. t._addOrganic("yodao","q");
  6. t._addOrganic("vnet","kw");
  7. t._addOrganic("sogou","query");
  8. t._addIgnoredOrganic("鲜果"); 
  9. t._addIgnoredOrganic("鲜果网");
  10. t._addIgnoredOrganic("xianguo");
  11. t._trackPageview();
  12. return t; 
  13. catch(err) {} 

虽然google analytics默认已经能识别很多搜索引擎,但是在必要的时候我们依然需要自定义代码来识别一些小型的搜索引擎。这里鲜果使用了_addOrganic(),它的格式是这样的:


  1. _addOrganic(newOrganicEngine, newOrganicKeyword) 
  • newOrganicEngine是一个string,标识搜索引擎的名字
  • newOrganicKeyword也是一个string,标识传递搜索关键词的那个参数

比如t._addOrganic(“yodao”,“q”),这是用来定义有道搜索的,先看看有道搜索“hello”的时候,是怎样传递参数的:

 http://www.youdao.com/search?q=hello&btnIndex=&ue=utf8&keyfrom=web.index  

t._addOrganic("yodao","q")

  • yodao是指有道搜索
  • q是指传递“hello”给搜索引擎的那个参数

同样的,其他自定义项就好理解了,不过看起来鲜果这个代码不是最新的,有写搜索引擎的newOrganicKeyword不对。鲜果在代码中还用到 了_addIgnoredOrganic(),这是用来忽略关键词的。用户可能在搜索框中直接输入网址或者网站名(也可能是误操作),比如输入了 “www.xianguo.com”,这些关键词是不需要被监控的。

t._addIgnoredOrganic("鲜果网")

就是忽略了“鲜果网”这个关键词,当然,通过“鲜果网”这个关键词过来的PV还是会被计算。

同样有用的还有_addIgnoredRef(),这个方法用于忽略Referrer,比如一个网站使用了双域名,那么在统计报告中,不同域名件的 跳转会被计为Referrer,这时候可以使用_addIgnoredRef()来忽略其中一个域名,保证在“Referring Sites”也就是来源网站中不再计算双域名的情况,_addIgnoredRef()不会影响计算PV。格式如下:


  1. pageTracker._addIgnoredRef(www.sister-site.com); 
    
27月/120

Google Analytics高级应用系列教程[调试代码]

发布在 邵珠庆

调试代码

众所周知,Google Analytics不是实时的,数据需要等待一段时间才能看到,所以在统计代码修改之后,不能很快知道是否能达到想要的效果。

Google Analytics的原理是请求一个1x1的gif小图,带上各种参数,就是下面这样:

 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%20%20r115&utmcn=1&utmdt=GATC012%20setting%20variables&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%3D97315849.1774621898.1207701397.1207701397.1207701397.1%3B...  

根据不同的浏览器,需要使用不同的调试工具,很多IT从业者都使用firefox+firebug的组合,确实不错,不过在调试Google Analytics时,我推荐使用Live HTTP Headers这个插件,在实际的测试中,firebug有可能会来不及获取HTTP Header信息。

http://livehttpheaders.mozdev.org/installation.html

在IE下,则使用fiddler2,这个软件是微软人员开发的,相当强大。

opera也有一个HTTP Headers饰件。

在开启获取HTTP Header的工具后,可以刷新页面,然后清除掉索取的所有消息,再单独测试某一处的代码,尤其是自定义代码之后。如果代码部署没有问题,就能抓到上面那种信息了

   下一页