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


234月/15

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命中。

205月/14

Google Analytics细分功能大升级:更强大更好用

发布在 邵珠庆

Justin Cutroni早在7月份就发布了博文介绍了升级后GA细分功能: http://cutroni.com/blog/2013/07/16/google-analytics-segmentation/。可以说这次细分功能的升级将是GA有史以来非常重要的一次升级。这些更新将在未来几个月内对所有使用者逐步开放。如果大家觉得GA有哪些地方不好用或是有一些新的需要,可以直接在Justin的博客后边发布你的意见或建议,通常他都会给你回复。

下边我们将从Justin的视角去了解一下更新后的细分功能:

细分功能可能是网站分析工具中最重要的功能。不细分,毋定死。这也充分说明了细分的重要性。通过使用升级后的Google Analytics细分功能,你可以创新性地对数据进行细分分析。

下边我们将具体看一下GA细分功能的升级点及其在网站或APP分析中的应用。

Google Analytics细分新功能:

这一次GA的细分功能和之前相比主要有以下三大方面的不同:

1.真正的用户细分 高级细分功能将支持真正的用户细分。这意味着Google Analytics将可以把访问一个网站或者使用一个应用程序的人群明确细分开来。这也意味着我们将可以进行群组分析(把在某个时间段内具有同一特征或同一行为的用户细分出来进行分析,比如,在一月份第一次访问过analyticskey.com网站的用户。注:这里把cohort译为群组,以方便理解,后期GA的官方中文说法可能会有些不同)。

要注意的是,因为用户细分的数据是需要后台实时处理的,这是一项较大的工作,为了保证数据可以快速显示,这里对用户细分是有一定的限度:你最多只能把用户细分应用于90天的时间范围内。

2.顺序过滤器 这同样是一项非常大的改进。现在,我们可以实现真正的用户细分,我们可以跟踪同一用户在多个会话中的行为。例如,你可以创建这样一个细分:点击了某个广告系列并在一段时间后购买了产品的用户。

3.界面升级 更整洁更符合操作逻辑的界面。一些高级用户可能认为界面过于简单化了,原来有的一些功能变得不太好找,但实际上原有的功能仍然保留了下来。新的界面将方便大家更容易创建和管理一些常用的细分。

升级的界面如下图所示。

NewUserSegment

新的Google Analytics细分功能界面

下边我们将深入了解一下新升级的细分功能。

了解用户细分、访问细分和Hit细分有什么不同

用户细分将返回所有与该用户相关的数据。这意味着这包含了该用户在你的时间框架中产生的所有访问数据。你可以针对用户、访问或Hit设置限制条件。

例如,我可以创建一个基于收入(Revenue)的用户细分,我想看到​​所有产生了500美元的收入的用户的数据。在这个条件设置里,收入(Revenue)这个指标的限制条件将应用于单个用户。

里边的某个用户可以在经过多次访问产生的收入才超过500美元,而另一个用户在一次访问中产生的收入就超过了500美元。这个细分会把这两类用户的数据都包含在一起,因为这批用户中每一个人产生的收入都超过了$500。

1A_UserSegment

基于用户而不是基于会话的分类来评估一个用户

访问细分将基本访问返回所有符合过滤条件的数据。这与现在存在的功能相同。

现在我们从访问的角度来看看同样一个例子。如果我们创建了一个基于访问的单次收入大于$500收入的访问细分,GA将匹配找到所有满足该条件的访问,并返回所有相关的数据。

1B_VisitSegment

在Google Analytics中,细分条件过虑是于于会话而不是基于访问的

最后,还有一类Hit级别的细分。这在某种程度上,也类似于我们今天所使用的Google Analytics。你可以设置一个Hit级别的条件,比如综合浏览量或事件,系统将会返回所有与这些浏览量或事件相关的访问的数据 - 而不只是返回那些符合条件的浏览量或事件数据。

创建简单的分类

现在我们大概知道了不同类型的细分之间的差异,下边让我们创建一些简单的分类。

导航的左侧部分提供了一个维度组的列表,你可以从中找到一些最常见的维度或指标。例如,在电子商务(Ecommerce)的组里,你可以找到下边这一些常见的维度(比如产品Product和产品类别Product Category)与指标(如收入Revenue)。

2_InterfaceDescription

创建GA细分界面

这里的每个指标或维度都是有相应的条件逻辑的。这与之前我们经常使用的高级细分的设置比较相似。另外这里还有一个地方要输入细分条件的值。

对于指标来说,你可以把条件选项应用于用户或会话。通过下拉菜单可进行选择。

我们要创建的是一个用户收入超过$500的细分。首先要把这个细分应用到用户级别,然后再设置合适的条件数值,在“收入”(Revenue)字段中输入500。

3_User500Segment

为每个过滤器输入一个值。

请注意,当添加一个条件时,在界面右侧将会有相应的汇总显示。

如果要在这个细分中添加额外的条件,需要进入到另一个维度组并添加条件。

比如要在这个细分中添加一个地理位置的条件,需要点击人口统计组(Demographics),创建一个条件:仅包括来自马萨诸塞州(Massachusetts)的访问。

4_MultipleFiltersInSegment

注意添加标注的地方表明这个细分包括了多个过滤器

现在创建好了用户细分群组是,来自马萨诸塞州并在网站上花费超过$500的用户。

我可以把这个细分应用于少于90天的时间范围内。

另一个要注意的事项是:使用选项链接(Option)你可以把这个细分应用到到任何其他的你常用的配置文件中。旧版的细分功能也有此选项。当然,如果不是很必要,可以仅应用于当前的配置文件。

5_ApplyToMultipleProfiles

你可以把创建的细分应用到多个配置文件

创建高级细分

现在,我们已经掌握了基本的细分创建方法,下边我们将了解一下较为复杂的高级细分如何设置。高级细分可用于创建包括多个用户条件、多个访问条件或者是用户条件与访问条件的组合条件的细分。

6_AdvancedSegments

同时把访问条件与用户条件都应用于一个高级细分

这种细分可以用于衡量在某一段较长的时间段内一个用户的一次访问的行为情况。例如,你想了解一下阅读了你的博客的访问行为是否会影响到一个用户的长期价值。

下边我们将建立这样一个细分。

首先,创建一个基于价值(Revenue)的用户过滤器。然后再添加一个访问过滤器以匹配浏览过博客内容的访次。

7_BlogReaderRevenueSEgment

同时把访问条件与用户条件都应用于细分中

这两个过滤器将分两个阶段进行应用。

首先,GA将基于用户过滤器(包括所有这些用户的访问)把这符合条件的用户过滤出来。

然后,GA将再从符合第一个条件(用户条件)过滤得到的数据中选择满足第二个条件(访问条件)的访问数据筛选出来。

这个非常简单的设置可用于回答这样的问题:“我的博客内容有助于推动更多的销售和收入吗?” 在过去这确实是这个不好回答的较为纠结的问题,现在终于有了一个相对完善的解决方案。

这将对于内容营销有极大的促进作用。用原文作者的话说,所有内容营销的粉丝都流口水了吧?

创建顺序细分

顺序细分(Sequence Segments)是GA新的细分工具的另一个高级功能。这里所说的顺序可以是基于不同的访次或是基于同一次访问。这非常类似于再营销功能中所使用的顺序细分。

顺序过滤器可以把按一次的先后顺序浏览了两个页面(不一定要是页面条件,详情可见下边的示例)的用户细分出来。这有些类似购物车中的两个步骤。

细分示例:有些用户进入了购物流程但并没有最终购买。它采用了一个页面条件来表示添加货品到购物车。因为没有达成购买,交易是在会话期间为零。

7A_SequenceFilter

GA可以把那些进入购买流程但完成交易的用户细分出来

当你需要查看某两个动作之间的关系或相关数据,可以使用顺序细分。

在GA中创建用户群组

当然在新的细分功能发布之前我们是可以通过配置自定义变量的方法来跟踪和细分用户群组,这是基于代码的方法,实现起来有点麻烦。而现在我们可以直接在Google Analytics中创建基本的用户群组,这是一个巨大的进行。

群组(cohort),就是把在某个时间段内具有同一特征或同一行为的用户。一个群组基本上就是一个包含了某些日期条件的细分。例如,我要看所有在1月份中第一次访问网站的用户的相关数据。 他们在1月份之后有没有回访我们的网站呢,有没有继续产生销售呢?

要查看到这些信息,我们需要创建一个基于用户的第一次访问的群组。GA提供了这样一个新的维度:第一次访问的日期(Date of Fist Visit)。这意味着,我们为可以为第一次访问指定一个特定的日期范围。

8_Cohort

在GA中创建一个基本第一次访问日期维度的群组

注:该群组的日期范围不能超过31天。

当然,在创建其他的细分时你也可以使用第一次访问的日期作为细分的维度。例如,对于一个电商网站来说,通过需要把用户第一次访问的细分与用户产生的销售合并起来。

下边为第一次访问与电子商务的条件相合并的设置方法。

9a_RevenueOverTIme

把第一次访问与电子商务的条件相合并

由此产生的数据是这样的:

9b_RevenueOverTIme

这个例子展示了所有用户与及在特定时间内第一次访问了网站的用户的收入数据变化曲线

要注意的是,基于用户的细分只能应用于不超过90天的时间范围内。因此,任何创建的群组使用这种方法最多也只能应用于90天。

另一示例:如果我是一名出版商,我想看一下在特定的月份第一次访问网站用户他们在附后的时间里的行为表现。我可以为每一个月可以创建一个细分(第一次访问的用户群组)并查看每一个群组在随后的时间段中的数据变化情况。

10_PubReadersOverTime

在GA中查看月度首次访问群组的数据

如果对于某一个群组,你要查看的数据的时间段超过了90天,那你可能还得使用自定义变量或事件跟踪的方法来收集和查看数据。

还有一些要注意的事项:我们还不能根据转化创建群组;在GA中还没有第一次转化日期的维度,现在只有第一次访问日期的维度。

细分管理变得更简单

相比于之前,新的界面让你的细分管理变得更加简单。

现在界面提供了过滤功能,你可以直接输入过滤条件快速查找到你之前设置的细分。另外你还可以使用星标标注出哪些是你最常用的细分

若要编辑某个细分,把鼠标悬停在该细分上面,并点击弹出的齿轮工具即可。

11_OrganizingSegments

多种方式组织和查找细分

小结

这篇文章有点长(作者原话)。我较早前就看到了这个功能的介绍,但因为之前一段时间较忙一直拖着没有把它整理出来。这可能是Google Analytics有史以来最重要的升级之一。用户细分的功能将会改变人们对于的GA使用方式。而且,我们即将进入通用分析的世界,我们将会有更多的数据,因此,更有效地对用户进行细分将显得尤为重要。

205月/14

从Google Analytics升级Universal Analytics

发布在 邵珠庆

从Urchin到Google Analytics,再到如今的Universal Analytics。Google的分析工具总是在不断的升级,完善中。搞的我们这些使用者一刻也不敢懈怠。努力的跟上这升级的节奏,不敢落后。从本篇文章开始,我们的注意力将从Google Analytics转移到对Universal Analytics的关注。

 

本篇文章将分两大部分来介绍Universal Analytics的代码。第一部分是Universal Analytics的全局代码,也就是网站中每个页面都需要添加的那部分常规追踪代码。第二部分是Universal Analytics的自定义代码。下面我们来分别看下这两部分追踪代码如何设置和实施,以及和Google Analytics追踪代码的区别。

 

第一部分 Universal Analytics全局代码

1,在返回数据时的变化

在对Universal Analytics的追踪代码和实施过程进行介绍之前,我想有必要先来介绍一个细节的变化。就是Google 分析工具在向服务器返回数据时的请求URL和方式的变化。在Google Analytics中,所有追踪到的数据会以对utm.gif图像的请求参数形式返回到Google服务器。因此,我们在检查Google Analytics时最常见的是以http://www.google-analytics.com/__utm.gif开头的URL地址。

但是现在,无论是你的网站部署的是Google Analytics,还是Universal Analytics,当你对返回数据进行检查时,都会发现一些变化。返回数据不再只有之前的一个URL地址了。而是可能会变成以下三个中的一个。

三类Google 分析工具返回数据URL地址

  1. http://www.google-analytics.com/__utm.gif
  2. http://www.google-analytics.com/collect
  3. http://stats.g.doubleclick.net/__utm.gif

这三类地址都可以正常返回访问者的行为数据,产生三类不同返回数据URL地址的原因在于网站中实施的Google分析工具。其中第一个是网站部署Google Analytics默认全局代码时返回数据的URL地址,第二个是网站部署Universal Analytics默认全局代码时返回数据的URL地址。第三个URL地址比较有意思,当我们启用受众特征和兴趣报告,并对默认的全局追踪代码进行定制时返回数据URL地址。

启用受众特征和兴趣报告需对Google分析的全局代码进行修改,并且在账户中的媒体资源部分选择启用受众特征和兴趣报告

下面我们以代码示例来说明下不同情况下可能产生的返回数据URL情况。

 

如果你的网站实施的是默认的Google Analytics全局追踪代码。

1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-12347890-2']);
  _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>

那么你将看到以http://www.google-analytics.com/__utm.gif开头的返回数据URL地址。

1
http://www.google-analytics.com/__utm.gif?utmwv=5.4.6&utms=1&utmn=1896906760&utmhn= bluewhale.cc &utmcs=utf-8&utmsr=1120x700&utmvp=1103x33&utmsc=24-bit&utmul=zh-cn&utmje=1&utmfl=11.9%20r900& utmdt=%E8%93%9D%E9%B2%B8%E7%9A%84%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0%20%7C%20%E5%85%B3%E6%B3%A8Google%20Analytics%E5%BA%94%E7%94%A8%E4%B8%8E%E6%8A%80%E5%B7%A7&utmhid=1955227755&utmr=-&utmp=%2F&utmht=1387982554877&utmac=UA-24113315-1&utmcc=__utma%3D1.1231777628.1385699116.1387959194.1387982555.8%3B%2B__utmz%3D1.1387959194.7.1.utmcsr%3Dbaidu123%7Cutmccn%3D(not%2520set)%7Cutmcmd%3D(not%2520set)%3B&utmu=qFEAg~

 

如果你的网站实施的是默认的Universal Analytics全局追踪代码。

1
2
3
4
5
6
7
8
9
<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-12347890-11', 'bluewhale.cc');
  ga('send', 'pageview');
</script>

那么你将看到以http://www.google-analytics.com/collect开头的返回数据URL地址。

1
http://www.google-analytics.com/collect?v=1&_v=j15&a=2124808192&t=pageview&_s=1&dl=http%3A%2F%2Fbluewhale.cc%2Ftest%2Fua_test.html&ul=zh-cn&de=gb2312&dt=UAcode%E6%B5%8B%E8%AF%95%E9%A1%B5%E9%9D%A2&sd=24-bit&sr=1120x700&vp=1103x33&je=1&fl=11.9%20r900&_utma=127635166.34592685.1383186536.1387941519.1387981700.19&_utmz=127635166.1387352120.16.8.utmcsr%3Dgoogle%7Cutmccn%3D(organic)%7Cutmcmd%3Dorganic%7Cutmctr%3D%25E8%2593%259D%25E9%25B2%25B8%25E7%25BD%2591%25E7%25AB%2599%25E5%2588%2586%25E6%259E%2590&_utmht=1387982003772&_u=MACC~&cid=34592685.1383186536&tid=UA-12347890-11&z=994756508

 

如果你的Google分析启用了受众特征和兴趣报告,并对默认的全局追踪代码进行了定制。

1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-12347890-11']);
  _gaq.push(['_trackPageview']);
 
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

那么无论你的网站中实施Google Analytics还是Universal Analytics,你都会看到以http://stats.g.doubleclick.net/__utm.gif开头的返回数据URL地址。

1
http://stats.g.doubleclick.net/__utm.gif?utmwv=5.4.6dc&utms=1&utmn=894009105&utmhn=bluewhale.cc&utmcs=utf-8&utmsr=1120x700&utmvp=1120x33&utmsc=24-bit&utmul=zh-cn&utmje=1&utmfl=11.9%20r900&utmdt=%E8%93%9D%E9%B2%B8%E7%9A%84%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0%20%7C%20%E5%85%B3%E6%B3%A8Google%20Analytics%E5%BA%94%E7%94%A8%E4%B8%8E%E6%8A%80%E5%B7%A7&utmhid=853429841&utmr=-&utmp=%2F&utmht=1387981699675&utmac=UA-12347890-1&utmcc=__utma%3D127635166.34592685.1383186536.1387941519.1387981700.19%3B%2B__utmz%3D127635166.1387352120.16.8.utmcsr%3Dgoogle%7Cutmccn%3D(organic)%7Cutmcmd%3Dorganic%7Cutmctr%3D%25E8%2593%259D%25E9%25B2%25B8%25E7%25BD%2591%25E7%25AB%2599%25E5%2588%2586%25E6%259E%2590%3B&utmu=qAE~

 

2,返回数据的类型变化

在介绍Google Analytics的文章中我们曾说过,Google Analytics支持5种数据类型。

而在Universal Analytics中对数据类型的标记和分类更加清晰,同时支持的数据类型也有增加。

在Universal Analytics的返回数据中通过参数t来记录本次记录到的数据属于哪种类型。除了我们之前介绍的5种类型以外,Universal Analytics还支持时间类型和社交类型的返回数据。

如上表所示,当t=pageview时表示页面类的数据,t=event时表示事件类的数据,t=Transaction或Item时表示电商类的订单数据,t=Social时表示社交类的数据,t=timing时表示计时类的数据。t参数的值不存在为空的情况。后面部分我们会详细介绍对触发不同类型数据代码的定制和实施方法。

 

3,Universal Analytics全局代码定制变化

前面介绍了返回数据URL的变化和数据类型的变化情况,下面我们进入正题,开始介绍Universal Analytics的全局代码。Universal Analytics的追踪代码与Google Analytics相比,更加简单,易用,并且可读性也更强。即使是一个非技术背景的分析人员,也能大概读懂代码所表示的含义并对追踪代码进行简单的定制工作。

常用代码定制界面化

首先,对于Google Analytics中我们使用最频繁的几项代码定制的工作,如添加新搜索引擎来源,访问次数超时设置,Cmapaign来源有效期设置,以及搜索关键词排除设置等操作在Universal Analytics中都不再需要对全局追踪代码进行修改或定制,这些操作在Universal Analytics中都被以友好的界面方式呈现,并且有清晰的引导和说明信息。

 

上图是Universal Analytics中添加搜索引擎来源的操作界面,你可以在报告界面中的“管理”部分找到这些定制操作界面。在这类界面中即使没有技术背景的分析师也可以完成对代码的定制工作,并且也不需要重复的对页面中的代码进行修改。当然你也可以选择通过Google Tag Manager来减少修改代码对网站及页面的影响,但界面化的操作比直接面对代码要友好很多。

自定义追踪代码全局变量

Universal Analytics的全局代码中允许我们对全局变量进行自定义。在Universal Analytics全局代码第一段的最后一部分,是默认的全局变量ga,对于这个全局变量,我们可以进行修改和自定义。

 

这是默认的默认的Universal Analytics全局追踪代码。第一部分最后的全局变量名称是ga,同时第二部分中的创建账户以及返回数据代码也都使用了ga这个全局变量。

1
2
3
4
5
6
7
8
9
<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-12347890-11', 'bluewhale.cc');
  ga('send', 'pageview');
</script>

我们对Universal Analytics的全局变量名称进行修改,将ga修改为ua,同时代码第二部分中所使用的全局变量名称也都需要手动修改为ua。

 

1
2
3
4
5
6
7
8
9
<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','ua');
 
  ua('create', 'UA-12347890-11', 'bluewhale.cc');
  ua('send', 'pageview');
</script>

——————————————————重要提示————————————————————

注意:本部分以后的代码我们都将以ua作为Universal Analytics的全局变量进行定制和实施介绍。在使用代码时请注意,如你的网站使用默认Universal Analytics全局代码,请将ua更改为ga再使用。否则可能导致代码无法正常工作!

———————————————————————————————————————————

Cookie有效期设置及名称

在Universal Analytics中除了修改全局变量名称外,我们还可以修改记录访客的Cookie有效期。Universal Analytics默认的cookie有效期为两年,我们可以通过设置cookieExpires修改这个cookie的有效期。

在上面的截图中,我们将Universal Analytics的Cookie名称改为uaCookie,并将过期时间从2年改为1天。具体的代码修改如下:

在Universal Analytics全局代码第二部分增加cookieExpires值的设置,以秒为单位,示例中86400秒等于24小时,即1天。(86400秒/60=1440分钟/60=24小时)

1
2
3
4
5
6
7
8
9
<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','ua');
 
  ua('create', 'UA-12347890-11',{'cookieExpires': 86400});
  ua('send', 'pageview');
</script>

更改Cookie名称的方法和修改有效期类似,在Universal Analytics全局代码中相同的位置对 cookieName值进行设置即可。

 

1
2
3
4
5
6
7
8
9
<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','ua');
 
  ua('create', 'UA-12347890-11',{'cookieName':'uaCookie','cookieExpires': 86400});
  ua('send', 'pageview');
</script>

需要说明的是,对Cookie有效期及名称的修改请在代码初次实施前完成,并且需要保证所有页面代码保持一致,否则你可能会因为同时存在多个不同名称及生存期的Cookie而导致网站的数据不准确。

 

第二部分 Universal Analytics自定义代码

对于Universal Analytics自定义代码的定制和实施与Google Analytics中变化不大。下面我们分别来介绍虚拟页面事件追踪,社交追踪和电商代码的定制和实施。所有的Universal Analytics自定义代码我们都将以onclick事件为例。并且以定制后的ua作为Universal Analytics全局变量进行介绍。如你的网站中使用默认的Universal Analytics全局代码,请讲ua更改为ga。否则代码可能无法正常工作。

 

1,  虚拟页面

常规的虚拟页面代码如下,在pageview后添加虚拟页面的命名规则即可,添加的虚拟页面名称以URL的形式出现在Universal Analytics的所有页面报告中。

1
<a href="http://bluewhale.cc"onClick="javascript:ua('send', 'pageview', '/virtual_pageviews_test');">虚拟页面</a>

与Google Analytics不同的是,Universal Analytics中除了可以定制虚拟页面的URL,还可以定制虚拟页面的title。在title后添加虚拟页面的title名称即可。这将大大提高虚拟页面在报告中的数据可读性。

1
<a href="http://bluewhale.cc"onClick="javascript:ua('send', 'pageview', {'page':'/virtual_pageviews_test','title':'virtual_page'});">虚拟页面测试(自定义页面URL及title)</a>

2,  事件追踪

Universal Analytics中的事件追踪与Google Analytics没有太大差别,同样使用事件类别,行动和标签三个默认参数来标记事件。

1
<a href="http://bluewhale.cc"onClick="javascript:ua('send', 'event', 'category', 'action', 'label');">事件追踪</a>

3,  社交追踪

Universal Analytics中的社交追踪与事件非常相似,你可以对网站中的各类社交分享按钮进行追踪,这里允许记录社交媒体的名称,社交按钮的行为,目标URL等信息。具体社交追踪代码如下。

1
<a href="http://bluewhale.cc"onClick="javascript:ga('send', 'social', 'socialNetwork', 'socialAction', 'socialTarget');">社交媒体</a>

加强型的社交追踪代码除了前面介绍的三个参数外,还能标记社交按钮被触发的页面名称。

1
<a href="http://bluewhale.cc"onClick="javascript:ua('send', 'social', 'socialNetwork', 'socialAction', 'socialTarget', {'page': '/my-new-page'});">社交媒体</a>

4,电子商务追踪

最后介绍的Universal Analytics定制代码是电商代码,结构和功能与Google Analytics类似,唯一不同的是Universal Analytics为了保证analytics.js的文件大小,没有把电商的代码放在里面,因此在使用电商代码时,需要单独调用ecommerce.js文件。另外,在使用电商代码前,需要先在Google分析管理后台开通电商报告功能。

以下是Universal Analytics电子商务代码示例。所有全局变量以及改为ua,请注意。

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
26
<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','ua');
 
  ua('create', 'UA-12347890-11', 'bluewhale.cc');
  ua('send', 'pageview');
  ua('require', 'ecommerce', 'ecommerce.js');
  ua('ecommerce:addTransaction', {
  'id': '1234',                     // Transaction ID. Required.
  'affiliation': 'Acme Clothing',   // Affiliation or store name.
  'revenue': '11.99',               // Grand Total.
  'shipping': '5',                  // Shipping.
  'tax': '1.29'                     // Tax.
  });
  ua('ecommerce:addItem', {
  'id': '1234',                     // Transaction ID. Required.
  'name': 'Fluffy Pink Bunnies',    // Product name. Required.
  'sku': 'DD23444',               // SKU/code.
  'category': 'Party Toys',         // Category or variation.
  'price': '11.99',                 // Unit price.
  'quantity': '1'                   // Quantity.
  });
  ua('ecommerce:send');
</script>

 

本篇文章我们简单介绍了Universal Analytics的全局代码和自定义代码的定制和实施。更多Universal Analytics全局代码的定制内容请参看Google官方文档

—【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,转自“蓝鲸网站分析博客”。】—

155月/14

升级Universal Analytics部署代码

发布在 邵珠庆

https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced
 
<!-- Google Analytics -->
<script>
/**
 * Creates a temporary global ga object and loads analy  tics.js.
 * Paramenters o, a, and m are all used internally.  They could have been declared using 'var',
 * instead they are declared as parameters to save 4 bytes ('var ').
 *
 * @param {Window}      i The global context object.
 * @param {Document}    s The DOM document object.
 * @param {string}      o Must be 'script'.
 * @param {string}      g URL of the analytics.js script. Inherits protocol from page.
 * @param {string}      r Global name of analytics object.  Defaults to 'ga'.
 * @param {DOMElement?} a Async script tag.
 * @param {DOMElement?} m First script tag in document.
 */
(function(i, s, o, g, r, a, m){
  i['GoogleAnalyticsObject'] = r; // Acts as a pointer to support renaming.

  // Creates an initial ga() function.  The queued commands will be executed once analytics.js loads.
  i[r] = i[r] || function() {
    (i[r].q = i[r].q || []).push(arguments)
  },

  // Sets the time (as an integer) this tag was executed.  Used for timing hits.
  i[r].l = 1 * new Date();

  // Insert the script tag asynchronously.  Inserts above current tag to prevent blocking in
  // addition to using the async attribute.
  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-XXXX-Y', 'auto'); // Creates the tracker with default parameters.
ga('send', 'pageview');            // Sends a pageview hit.
</script>
<!-- End Google Analytics -->
67月/13

天猫淘宝公开课:卖家数据分析全攻略

发布在 邵珠庆

几乎每个淘宝运营一提到数据营销,基本上都能说上来这些软件:量子恒道、淘宝指数、数据魔方。但是谈及具体应用方面,到底要关注哪些指标,有了这些指标后要怎么优化,自己的店铺正处于什么阶段,有什么问题,接下来要怎么改变……很多卖家就犯难了。

古有云,知己知彼,百战不殆。数据分析其实也就是在做这两件事。知己就是要对自己的店铺状况了如指掌,而知彼则要对大环境和直接竞争对手有清晰的认识。

【知己篇】店内数据分析

店内运营如果简单来看,就是流量和转化这两件事。所以分析也主要从这两个指标出发。因为流量结构和精度直接影响转化,转化好坏再反过来影响流量,所以在分析时,先做流量盘查,再做转化分析。

一、 流量

1、 搜索流量

工具:搜索诊断助手、直通车

a基础条件:不违规,可在“卖家工作台”-“搜索诊断助手”-“宝贝诊断里”检查。

b相关性:类目属性相关性、标题关键字相关性。

C人气分:是否橱窗推荐、是否加入消保、DSR评分、支付宝使用率、旺旺效应速度、拍货与发货的时差。

D图片:很多卖家在优化主搜流量时,经常会忽略图片的优化,然而图片点击率的差距,直接影响了最后的搜索流量。买家不是直接搜索进来的,而是被图片吸引进来的,优化图片就显得非常重要。建议可以用直通车来测试图片(方法下文会介绍到)。

E价格与销量:销量相当的产品,价格高的有更多展示的机会;价格相同的产品,销量高的有更多展示机会。而检查该项指标主要检查自己与直接竞争对手的差距,尤其是7天销量的差距,以做调整。

F标题优化:在销量相对低的时候多使用长尾词,销量高的时候多使用泛词、中心词,并反复测试,得出搜索流量×搜索转化率的最大值。

2、 付费流量

工具:各付费工具的数据报表、量子。

a直通车:诊断直通车主要看点击率和转化率这两个指标。

点击率直接影响淘宝直通车的收入,在行业利润如此透明的年代,每家的出价其实都不可能差很多,而点击率越高,直通车本身的收入就越高,就会提供更好的位置给你。

查看工具:行业解析报表。

优化办法:挖掘USP。

转化率则是淘宝看重的用户体验,直通车转化率要做到约等于或略低于该宝贝整体转化率才算比较健康。

查看工具:直通车转化报表、量子-销售分析-宝贝销售排行;

优化办法:在销量较低的时候重点优化长尾词,销量高时优化泛词和定向。

b钻石展位:诊断钻展其实也和直通车原理基本一致。也是优化图片,然后选择精准的店铺来定向。

查看工具:钻展广告位对应类目数据、钻展定向报表-手工统计各项回报率;

优化办法:总结同行优秀素材的构成因素和失败素材的特点、把收集店铺ID的维度做细。

C淘客:淘客诊断只要看自己与竞争对手的销量和佣金有何差距即可。

二、 内功

1、 转化率

工具:量子、数据魔方

a、 内页:首先看销量,其次看评价质量,再来看单品转化率、页面停留时间和询单率。如果连基础销量都没有,评价很差,转化率是不可能好的。两个先决条件解决了,再看单品转化率、页面停留时间和询单率是否不低于行业均值(或店内卖的好的宝贝)。若低于,则一一优化USP卖点、逻辑顺序(是否都做到围绕USP)、展现内容多样化(数据、图表、细节图、权威认证报告、大量实证、视频等)、展现方式(字体、字号、背景色、配色)。

b、 访问深度:由于80%的顾客入店都是从内页进来,所以主要优化内页可导流的位置,分别为店招、宝贝页关联、宝贝页侧边栏、店尾进行优化。再优化首页。

查看工具:量子-销售分析-销售总览-平均访问深度、量子-流量分析-宝贝被访排行、量子-流量分析-首页被访数据(停留时间、点击率、跳失率)、量子-店铺装修。

优化办法:将店内20%的产品用导航、促销、关联等的方式做集中展示。

c、 支付率:是否做到了80%以上。

查看工具:量子-销售分析-销售总览。

优化办法:利用短电旺给顾客一个必须现在下单的理由。

d、 营销活动:定期举办营销活动可提升转化率。

e、 客服询单转化率:是否至少做到了行业均值。

查看工具:如赤兔等第三方工具。

优化方法:顾客的每一个问题都建立标准答案。

2、 客单价

工具:量子-销售分析-销售总览。

优化办法:包邮条件、满减满赠、爆款关联、客服推荐、SKU扩充、促销产品等。

3、 DSR

工具:淘宝DSR评分计算器。

优化办法:a、淘宝原有服务的升级(7天无理由升级为30天、3天发货升级为24小时发货等);b、淘宝未有服务的创新(围绕客户与商家接触点的创新,如SNS、游戏)。

4、 CRM

CRM主要查看老客户占比、老客户转化率、二次购买率、客户分组短彩邮的ROI。

工具:卖家工作台-会员关系管理、数云、客道等第三方软件。

优化的办法:建立老客户分组,根据分组创建老客户的不同特权。越高级的客户拥有越高级的特权。

【知彼篇】竞争数据分析

竞争数据主要包括整个市场数据和直接竞争对手数据。市场数据的获取能够判定市场容量、市场竞争的激烈程度,避免新产品在还未上市时就输了。直接竞争对手的数据能则能取长补短。

一、市场数据

1、市场容量

用数据魔方-行业分析-整体情况可以看到整个行业、子类目的市场容量。

2、 搜索指数

用淘宝指数查看搜索指数和成交指数

3、 细分数据

工具:淘宝指数和数据魔方

a、 买家购买分析

用数据魔方-行业分析看到买家的购买分析,可查看购买的单价和客单价及购买的频次。

b、 买家信息分析

用数据魔方-行业分析看到买家的信息分析,可查看买家的来访高峰时段、购买高峰时段、买家地域、性别分布和年龄。

c、 属性热销

用数据魔方-属性分析-属性热销排行,查看买家需求的产品属性。

4、 趋势

工具:数据魔方

a、 市场趋势

用数据魔方-行业分析-整体情况拉出最近3年、1年、半年和一季度的走势。

b、 行业关键词热搜飙升榜(数据魔方-淘词-行业热词榜-行业关键词热搜飙升榜)

5、 竞争度

用数据魔方-行业分析-卖家分析,查看卖家的数量,值越大,竞争越激励。再用核心关键词在淘宝上搜索,按销量排序,看前3名,第3和第40名的销售笔数的差额,值越低,竞争越激烈。

6、 空白市场

需要细心的留意,并对整个行业的动态有清晰的掌握。

二、 竞争对手数据

竞争对手的数据建议是每周都收集,然后和自己店内数据进行对比。

1、 销售额

用数据魔方-品牌分析-品牌详情来查询

2、 转化率

用数据魔方-品牌分析-品牌详情来查询

3、 客单价

用数据魔方-品牌分析-品牌详情来查询

4、 营销活动

定期收集竞争对手的营销活动,包括活动商品品类、商品价格、活动政策、互动平台和媒介投放等。

5、 爆款

定期收集竞争对手的主要爆款,包括产品名、价格、转化率、销量、单品活动、单品卖点、关联、流量来源、直通车卡位、直通车图片、钻展图片、老客户优惠等。查看工具:数据魔方-品牌分析-品牌详情-热销宝贝排行、手工收集。

6、特色

对竞争对手的赠品、包裹、优惠券、客户互动等相关信息进行收集。

数据分析说到底就是和自己的过去比,和竞争对手的现在比,和我们期望的未来比。找出现在店铺存在的问题,再思考可以用什么方法来改善它,这样的数据分析才有意义。

37月/13

韩国电子商务网站集锦

发布在 邵珠庆

女装店铺:

http://www.qng.co.kr/(推荐!)

http://www.cherrykoko.com/(推荐!)

http://www.ribbontie.co.kr/(新!)

http://www.niponjjuya.com/(推荐!)

http://www.bongjashop.com/

http://www.misspanda.co.kr/(新!休闲学院)

http://www.izabel.co.kr/(新!)

http://www.ddaddadda.co.kr/(新!)

http://www.vividress.com/

http://www.ippiya.co.kr/(有大码 清新学院)

http://www.ssunny.co.kr/

http://stylebymas.com/

http://www.anappletree.com/

http://www.janebrush.com/

http://www.j-doubleu.co.kr/

http://www.e-jade.co.kr/

http://www.09women.com/(大码 学院休闲)

http://www.styleberry.co.kr/(新!知性优雅)

http://www.styleonme.com/(成熟职业)

http://www.aka.co.kr/

http://www.pinknbabi.com/

http://www.sultang.co.kr/

http://www.pinkbanana.co.kr/

http://www.choper.kr/

http://www.naning9.com/

http://www.stylenanda.com/

http://www.pippin.co.kr/

http://www.gumzzi.co.kr/

http://www.naingirl.com/

http://www.mersh.co.kr/

http://www.flora2.co.kr/

http://www.dodostyle.com/

http://www.bagazimuri.com/

http://www.redopin.co.kr/

http://www.rabibi.co.kr/(大码 混搭)
http://loloten.com/(大码 雅致)
http://www.yuuls.com/(大码 雅致)
http://www.nanastore.co.kr/(大码 可爱风)
http://www.romine.co.kr/(大码 名媛风)
http://www.jstyleshop.net/(大码 学院风)
http://www.build.co.kr/(大码 成熟)

http://www.misscandy.co.kr/(欧美范儿)

http://papa-l.com/(欧美范儿)

http://www.tomnrabbit.co.kr/

http://www.sonyunara.com/

http://www.stlyeroo.com/

http://www.2fb.co.kr/

http://www.bubbleandchic.co.kr

http://www.partysu.co.kr/

http://www.clicknfunny.com

男装店铺:
http://www.styledump.co.kr/(男士大码 推荐)

http://www.theaction.co.kr/(新!)

http://www.smallman.co.kr/(新!)

http://www.namjadot.com/(新!)

http://www.zinif.com/

http://www.mitoshop.co.kr/

http://www.beanpole.com/(高档男装)

http://www.hazzys.com/

http://www.mindbridge.co.kr/(高端商务)

http://www.mutnam.com/

http://www.aboki.co.kr/

http://www.cityandman.com/

http://palus.co.kr/

http://www.zeroback.com/

http://www.10milligram.com/

运动品牌专卖:

http://www.abcmart.co.kr/

孕妇装:

http://www.soim.co.kr/

http://www.momnuri.com/

http://www.loui.co.kr/

http://www.happymaman.co.kr/

童装:

http://www.akakids.co.kr/

床上用品:
http://www.annamong.com/(田园森林系 推荐)

http://www.sandybell.co.kr/(清新田园)

http://www.annstory.com/(价格适中)

http://www.dawonmall.com/

http://www.its-design.co.kr/

http://www.designdaroom.com/

http://www.yarnkraf.co.kr/

http://www.nubee.co.kr/

http://www.beddingandco.com/

http://www.nubizio.co.kr/

http://www.maryhouse.co.kr/

睡衣家居服专卖:

http://www.lullaby.co.kr/

女士内衣专卖:

http://www.seminanda.co.kr/

假发专卖:

http://www.pinkage.co.kr/

包包专卖:

http://www.itsbag.com/

http://www.louisquatorze.com/(高档包和配件)

206月/13

Google Analytics UTM参数

发布在 邵珠庆

Google Analytics UTM参数

我们知道,页面设置好Google Analytics基本跟踪代码后,用以下UTM广告些列参数对着陆页面的url进行标注,可以区别衡量各种营销渠道所带来的访客价值。因此,我们需要想法在访客分享页面时,在被分享的url后添加UTM参数。

 

参数 说明 描述
广告系列来源(utm_source) 必填 使用 utm_source 来标识 搜索 引擎、简报名称或其他来源。
示例:utm_source=google
广告系列媒介(utm_medium) 必填 使用 utm_medium 来标识 电子邮件 或每次点击 费用等媒介。
示例:utm_medium=cpc
广告系列字词 (utm_term) 用于付费搜索。 使用 utm_term 来注明此广告的关键字。
示例: utm_term=running+shoes
广告系列内容 (utm_content) 用于 A/B 测试和 以网页内容定位的 广告。 使用 utm_content 区分指向同一网址的 广告或链接。
示例:utm_content=logolink utm_content=textlink
广告系列名称 (utm_campaign) 必填,用于关键字分析。 使用 utm_campaign 来标识特定的产品促销活动或战略性广告系列。
示例:utm_campaign=spring_sale

 

关于自定义广告系列

https://support.google.com/analytics/answer/1033863?hl=zh-Hans

网址构建工具

https://support.google.com/analytics/answer/1033867?hl=zh-Hans&ref_topic=1032998

 

1212月/12

Google Analytics ga.js格式化源代码

发布在 邵珠庆

 

    (function() {

    var g = void 0,

    h = !0,

    j = null,

    l = !1,

    aa = encodeURIComponent,

    ba = Infinity,

    ca = setTimeout,

    n = Math,

    da = decodeURIComponent;

    function ea(a, b) {

    return a.name = b

    }

    var p = "push",

    fa = "test",

    ia = "slice",

    q = "replace",

    ja = "load",

    ka = "floor",

    la = "charAt",

    ma = "value",

    r = "indexOf",

    na = "match",

    oa = "port",

    pa = "createElement",

    qa = "path",

    s = "name",

    v = "host",

    w = "toString",

    x = "length",

    y = "prototype",

    ra = "clientWidth",

    z = "split",

    sa = "stopPropagation",

    ta = "scope",

    A = "location",

    ua = "search",

    B = "protocol",

    va = "clientHeight",

    wa = "href",

    C = "substring",

    xa = "apply",

    ya = "navigator",

    D = "join",

    E = "toLowerCase",

    F;

    function za(a, b) {

    switch (b) {

    case 0:

    return "" + a;

    case 1:

    return 1 * a;

    case 2:

    return !! a;

    case 3:

    return 1E3 * a

    }

    return a

    }

    function Aa(a) {

    return "function" == typeof a

    }

    function Ba(a) {

    return a != g && -1 < (a.constructor + "")[r]("String")

    }

    function G(a, b) {

    return g == a || "-" == a && !b || "" == a

    }

    function Ca(a) {

    if (!a || "" == a) return "";

    for (; a && -1 < " \n\r\t" [r](a[la](0));) a = a[C](1);

    for (; a && -1 < " \n\r\t" [r](a[la](a[x] - 1));) a = a[C](0, a[x] - 1);

    return a

    }

    function Da() {

    return n.round(2147483647 * n.random())

    }

    function Ea() {}

    function H(a, b) {

    if (aa instanceof Function) return b ? encodeURI(a) : aa(a);

    I(68);

    return escape(a)

    }

    function J(a) {

    a = a[z]("+")[D](" ");

    if (da instanceof Function) try {

    return da(a)

    } catch(b) {

    I(17)

    } else I(68);

    return unescape(a)

    }

    var Fa = function(a, b, c, d) {

    a.addEventListener ? a.addEventListener(b, c, !!d) : a.attachEvent && a.attachEvent("on" + b, c)

    },

    Ga = function(a, b, c, d) {

    a.removeEventListener ? a.removeEventListener(b, c, !!d) : a.detachEvent && a.detachEvent("on" + b, c)

    };

    function Ha(a, b) {

    if (a) {

    var c = K[pa]("script");

    c.type = "text/javascript";

    c.async = h;

    c.src = a;

    c.id = b;

    var d = K.getElementsByTagName("script")[0];

    d.parentNode.insertBefore(c, d);

    return c

    }

    }

    function L(a) {

    return a && 0 < a[x] ? a[0] : ""

    }

    function Ia(a) {

    var b = a ? a[x] : 0;

    return 0 < b ? a[b - 1] : ""

    }

    var Ja = function() {

    this.prefix = "ga.";

    this.R = {}

    };

    Ja[y].set = function(a, b) {

    this.R[this.prefix + a] = b

    };

    Ja[y].get = function(a) {

    return this.R[this.prefix + a]

    };

    Ja[y].contains = function(a) {

    return this.get(a) !== g

    };

    function Ka(a) {

    0 == a[r]("www.") && (a = a[C](4));

    return a[E]()

    }

    function La(a, b) {

    var c, d = {

    url: a,

    protocol: "http",

    host: "",

    path: "",

    d: new Ja,

    anchor: ""

    };

    if (!a) return d;

    c = a[r]("://");

    0 <= c && (d.protocol = a[C](0, c), a = a[C](c + 3));

    c = a[ua]("/|\\?|#");

    if (0 <= c) d.host = a[C](0, c)[E](),

    a = a[C](c);

    else return d.host = a[E](),

    d;

    c = a[r]("#");

    0 <= c && (d.anchor = a[C](c + 1), a = a[C](0, c));

    c = a[r]("?");

    0 <= c && (Ma(d.d, a[C](c + 1)), a = a[C](0, c));

    d.anchor && b && Ma(d.d, d.anchor);

    a && "/" == a[la](0) && (a = a[C](1));

    d.path = a;

    return d

    }

    function Oa(a, b) {

    function c(a) {

    var b = (a.hostname || "")[z](":")[0][E](),

    c = (a[B] || "")[E](),

    c = 1 * a[oa] || ("http:" == c ? 80 : "https:" == c ? 443 : "");

    a = a.pathname || "";

    0 == a[r]("/") || (a = "/" + a);

    return [b, "" + c, a]

    }

    var d = b || K[pa]("a");

    d.href = K[A][wa];

    var e = (d[B] || "")[E](),

    f = c(d),

    k = d[ua] || "",

    m = e + "//" + f[0] + (f[1] ? ":" + f[1] : "");

    0 == a[r]("//") ? a = e + a: 0 == a[r]("/") ? a = m + a: !a || 0 == a[r]("?") ? a = m + f[2] + (a || k) : 0 > a[z]("/")[0][r](":") && (a = m + f[2][C](0, f[2].lastIndexOf("/")) + "/" + a);

    d.href = a;

    e = c(d);

    return {

    protocol: (d[B] || "")[E](),

    host: e[0],

    port: e[1],

    path: e[2],

    Oa: d[ua] || "",

    url: a || ""

    }

    }

    function Ma(a, b) {

    function c(b, c) {

    a.contains(b) || a.set(b, []);

    a.get(b)[p](c)

    }

    for (var d = Ca(b)[z]("&"), e = 0; e < d[x]; e++) if (d[e]) {

    var f = d[e][r]("=");

    0 > f ? c(d[e], "1") : c(d[e][C](0, f), d[e][C](f + 1))

    }

    }

    function Pa(a, b) {

    if (G(a) || "[" == a[la](0) && "]" == a[la](a[x] - 1)) return "-";

    var c = K.domain;

    return a[r](c + (b && "/" != b ? b: "")) == (0 == a[r]("http://") ? 7 : 0 == a[r]("https://") ? 8 : 0) ? "0": a

    };

    var Qa = 0;

    function Ra(a, b, c) { ! (1 <= Qa) && !(1 <= 100 * n.random()) && (a = ["utmt=error", "utmerr=" + a, "utmwv=5.3.8", "utmn=" + Da(), "utmsp=1"], b && a[p]("api=" + b), c && a[p]("msg=" + H(c[C](0, 100))), M.w && a[p]("aip=1"), Sa(a[D]("&")), Qa++)

    };

    var Ta = 0,

    Ua = {};

    function N(a) {

    return Va("x" + Ta++, a)

    }

    function Va(a, b) {

    Ua[a] = !!b;

    return a

    }

    var Wa = N(),

    Xa = Va("anonymizeIp"),

    Ya = N(),

    $a = N(),

    ab = N(),

    bb = N(),

    O = N(),

    P = N(),

    cb = N(),

    db = N(),

    eb = N(),

    fb = N(),

    gb = N(),

    hb = N(),

    ib = N(),

    jb = N(),

    kb = N(),

    lb = N(),

    nb = N(),

    ob = N(),

    pb = N(),

    qb = N(),

    rb = N(),

    sb = N(),

    tb = N(),

    ub = N(),

    vb = N(),

    wb = N(),

    xb = N(),

    yb = N(),

    zb = N(),

    Ab = N(),

    Bb = N(),

    Cb = N(),

    Db = N(),

    Eb = N(),

    Fb = N(h),

    Gb = Va("currencyCode"),

    Hb = Va("page"),

    Ib = Va("title"),

    Jb = N(),

    Kb = N(),

    Lb = N(),

    Mb = N(),

    Nb = N(),

    Ob = N(),

    Pb = N(),

    Qb = N(),

    Rb = N(),

    Q = N(h),

    Sb = N(h),

    Tb = N(h),

    Ub = N(h),

    Vb = N(h),

    Wb = N(h),

    Zb = N(h),

    $b = N(h),

    ac = N(h),

    bc = N(h),

    cc = N(h),

    R = N(h),

    dc = N(h),

    ec = N(h),

    fc = N(h),

    gc = N(h),

    hc = N(h),

    ic = N(h),

    jc = N(h),

    S = N(h),

    kc = N(h),

    lc = N(h),

    mc = N(h),

    nc = N(h),

    oc = N(h),

    pc = N(h),

    qc = N(h),

    rc = Va("campaignParams"),

    sc = N(),

    tc = Va("hitCallback"),

    uc = N();

    N();

    var vc = N(),

    wc = N(),

    xc = N(),

    yc = N(),

    zc = N(),

    Ac = N(),

    Bc = N(),

    Cc = N(),

    Dc = N(),

    Ec = N(),

    Fc = N(),

    Gc = N(),

    Hc = N(),

    Ic = N();

    N();

    var Mc = N(),

    Nc = N(),

    Oc = N();

    function Pc(a) {

    var b = this.plugins_;

    if (b) return b.get(a)

    }

    var T = function(a, b, c, d) {

    a[b] = function() {

    try {

    return d != g && I(d),

    c[xa](this, arguments)

    } catch(a) {

    throw Ra("exc", b, a && a[s]),

    a;

    }

    }

    },

    Qc = function(a, b, c, d) {

    U[y][a] = function() {

    try {

    return I(c),

    za(this.a.get(b), d)

    } catch(e) {

    throw Ra("exc", a, e && e[s]),

    e;

    }

    }

    },

    V = function(a, b, c, d, e) {

    U[y][a] = function(f) {

    try {

    I(c),

    e == g ? this.a.set(b, za(f, d)) : this.a.set(b, e)

    } catch(k) {

    throw Ra("exc", a, k && k[s]),

    k;

    }

    }

    };

    var Rc = RegExp(/(^|\.)doubleclick\.net$/i),

    Sc = function(a, b) {

    return Rc[fa](K[A].hostname) ? h: "/" !== b ? l: (0 == a[r]("www.google.") || 0 == a[r](".google.") || 0 == a[r]("google.")) && !( - 1 < a[r]("google.org")) ? h: l

    },

    Tc = function(a) {

    var b = a.get(bb),

    c = a.c(P, "/");

    Sc(b, c) && a[sa]()

    };

    var Zc = function() {

    var a = {},

    b = {},

    c = new Uc;

    this.g = function(a, b) {

    c.add(a, b)

    };

    var d = new Uc;

    this.e = function(a, b) {

    d.add(a, b)

    };

    var e = l,

    f = l,

    k = h;

    this.T = function() {

    e = h

    };

    this.j = function(a) {

    this[ja]();

    this.set(sc, a, h);

    a = new Vc(this);

    e = l;

    d.execute(this);

    e = h;

    b = {};

    this.n();

    a.Ja()

    };

    this.load = function() {

    e && (e = l, this.Ka(), Wc(this), f || (f = h, c.execute(this), Xc(this), Wc(this)), e = h)

    };

    this.n = function() {

    if (e) if (f) e = l,

    Xc(this),

    e = h;

    else this[ja]()

    };

    this.get = function(c) {

    Ua[c] && this[ja]();

    return b[c] !== g ? b[c] : a[c]

    };

    this.set = function(c, d, e) {

    Ua[c] && this[ja]();

    e ? b[c] = d: a[c] = d;

    Ua[c] && this.n()

    };

    this.z = function(b) {

    a[b] = this.b(b, 0) + 1

    };

    this.b = function(a, b) {

    var c = this.get(a);

    return c == g || "" === c ? b: 1 * c

    };

    this.c = function(a, b) {

    var c = this.get(a);

    return c == g ? b: c + ""

    };

    this.Ka = function() {

    if (k) {

    var b = this.c(bb, ""),

    c = this.c(P, "/");

    Sc(b, c) || (a[O] = a[hb] && "" != b ? Yc(b) : 1, k = l)

    }

    }

    };

    Zc[y].stopPropagation = function() {

    throw "aborted";

    };

    var Vc = function(a) {

    var b = this;

    this.q = 0;

    var c = a.get(tc);

    this.Ua = function() {

    0 < b.q && c && (b.q--, b.q || c())

    };

    this.Ja = function() { ! b.q && c && ca(c, 10)

    };

    a.set(uc, b, h)

    };

    function $c(a, b) {

    b = b || [];

    for (var c = 0; c < b[x]; c++) {

    var d = b[c];

    if ("" + a == d || 0 == d[r](a + ".")) return d

    }

    return "-"

    }

    var bd = function(a, b, c) {

    c = c ? "": a.c(O, "1");

    b = b[z](".");

    if (6 !== b[x] || ad(b[0], c)) return l;

    c = 1 * b[1];

    var d = 1 * b[2],

    e = 1 * b[3],

    f = 1 * b[4];

    b = 1 * b[5];

    if (! (0 <= c && 0 < d && 0 < e && 0 < f && 0 <= b)) return l;

    a.set(Q, c);

    a.set(Vb, d);

    a.set(Wb, e);

    a.set(Zb, f);

    a.set($b, b);

    return h

    },

    cd = function(a) {

    var b = a.get(Q),

    c = a.get(Vb),

    d = a.get(Wb),

    e = a.get(Zb),

    f = a.b($b, 1);

    return [a.b(O, 1), b != g ? b: "-", c || "-", d || "-", e || "-", f][D](".")

    },

    dd = function(a) {

    return [a.b(O, 1), a.b(cc, 0), a.b(R, 1), a.b(dc, 0)][D](".")

    },

    ed = function(a, b, c) {

    c = c ? "": a.c(O, "1");

    var d = b[z](".");

    if (4 !== d[x] || ad(d[0], c)) d = j;

    a.set(cc, d ? 1 * d[1] : 0);

    a.set(R, d ? 1 * d[2] : 10);

    a.set(dc, d ? 1 * d[3] : a.get(ab));

    return d != j || !ad(b, c)

    },

    fd = function(a, b) {

    var c = H(a.c(Tb, "")),

    d = [],

    e = a.get(Fb);

    if (!b && e) {

    for (var f = 0; f < e[x]; f++) {

    var k = e[f];

    k && 1 == k[ta] && d[p](f + "=" + H(k[s]) + "=" + H(k[ma]) + "=1")

    }

    0 < d[x] && (c += "|" + d[D]("^"))

    }

    return c ? a.b(O, 1) + "." + c: j

    },

    gd = function(a, b, c) {

    c = c ? "": a.c(O, "1");

    b = b[z](".");

    if (2 > b[x] || ad(b[0], c)) return l;

    b = b[ia](1)[D](".")[z]("|");

    0 < b[x] && a.set(Tb, J(b[0]));

    if (1 >= b[x]) return h;

    b = b[1][z]( - 1 == b[1][r](",") ? "^": ",");

    for (c = 0; c < b[x]; c++) {

    var d = b[c][z]("=");

    if (4 == d[x]) {

    var e = {};

    ea(e, J(d[1]));

    e.value = J(d[2]);

    e.scope = 1;

    a.get(Fb)[d[0]] = e

    }

    }

    return h

    },

    hd = function(a) {

    var b;

    b = function(b, e) {

    if (!G(a.get(b))) {

    var f = a.c(b, ""),

    f = f[z](" ")[D]("%20"),

    f = f[z]("+")[D]("%20");

    c[p](e + "=" + f)

    }

    };

    var c = [];

    b(ic, "utmcid");

    b(nc, "utmcsr");

    b(S, "utmgclid");

    b(kc, "utmgclsrc");

    b(lc, "utmdclid");

    b(mc, "utmdsid");

    b(jc, "utmccn");

    b(oc, "utmcmd");

    b(pc, "utmctr");

    b(qc, "utmcct");

    return (b = c[D]("|")) ? [a.b(O, 1), a.b(ec, 0), a.b(fc, 1), a.b(gc, 1), b][D](".") : ""

    },

    id = function(a, b, c) {

    c = c ? "": a.c(O, "1");

    b = b[z](".");

    if (5 > b[x] || ad(b[0], c)) return a.set(ec, g),

    a.set(fc, g),

    a.set(gc, g),

    a.set(ic, g),

    a.set(jc, g),

    a.set(nc, g),

    a.set(oc, g),

    a.set(pc, g),

    a.set(qc, g),

    a.set(S, g),

    a.set(kc, g),

    a.set(lc, g),

    a.set(mc, g),

    l;

    a.set(ec, 1 * b[1]);

    a.set(fc, 1 * b[2]);

    a.set(gc, 1 * b[3]);

    var d = b[ia](4)[D](".");

    b = function(a) {

    return (a = d[na](a + "=(.*?)(?:\\|utm|$)")) && 2 == a[x] ? a[1] : g

    };

    c = function(b, c) {

    c ? (c = e ? J(c) : c[z]("%20")[D](" "), a.set(b, c)) : a.set(b, g)

    }; - 1 == d[r]("=") && (d = J(d));

    var e = "2" == b("utmcvr");

    c(ic, b("utmcid"));

    c(jc, b("utmccn"));

    c(nc, b("utmcsr"));

    c(oc, b("utmcmd"));

    c(pc, b("utmctr"));

    c(qc, b("utmcct"));

    c(S, b("utmgclid"));

    c(kc, b("utmgclsrc"));

    c(lc, b("utmdclid"));

    c(mc, b("utmdsid"));

    return h

    },

    ad = function(a, b) {

    return b ? a != b: !/^\d+$/ [fa](a)

    };

    var Uc = function() {

    this.filters = []

    };

    Uc[y].add = function(a, b) {

    this.filters[p]({

    name: a,

    s: b

    })

    };

    Uc[y].execute = function(a) {

    try {

    for (var b = 0; b < this.filters[x]; b++) this.filters[b].s.call(W, a)

    } catch(c) {}

    };

    function jd(a) {

    100 != a.get(vb) && a.get(Q) % 1E4 >= 100 * a.get(vb) && a[sa]()

    }

    function kd(a) {

    ld(a.get(Wa)) && a[sa]()

    }

    function md(a) {

    "file:" == K[A][B] && a[sa]()

    }

    function nd(a) {

    a.get(Ib) || a.set(Ib, K.title, h);

    a.get(Hb) || a.set(Hb, K[A].pathname + K[A][ua], h)

    };

    var od = new

    function() {

    var a = [];

    this.set = function(b) {

    a[b] = h

    };

    this.Xa = function() {

    for (var b = [], c = 0; c < a[x]; c++) a[c] && (b[n[ka](c / 6)] = b[n[ka](c / 6)] ^ 1 << c % 6);

    for (c = 0; c < b[x]; c++) b[c] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" [la](b[c] || 0);

    return b[D]("") + "~"

    }

    };

    function I(a) {

    od.set(a)

    };

    var W = window,

    K = document,

    ld = function(a) {

    var b = W._gaUserPrefs;

    return b && b.ioo && b.ioo() || !!a && W["ga-disable-" + a] === h

    },

    pd = function(a) {

    var b = [],

    c = K.cookie[z](";");

    a = RegExp("^\\s*" + a + "=\\s*(.*?)\\s*$");

    for (var d = 0; d < c[x]; d++) {

    var e = c[d][na](a);

    e && b[p](e[1])

    }

    return b

    },

    X = function(a, b, c, d, e, f) {

    e = ld(e) ? l: Sc(d, c) ? l: h;

    if (e) {

    if (b && 0 <= W[ya].userAgent[r]("Firefox")) {

    b = b[q](/\n|\r/g, " ");

    e = 0;

    for (var k = b[x]; e < k; ++e) {

    var m = b.charCodeAt(e) & 255;

    if (10 == m || 13 == m) b = b[C](0, e) + "?" + b[C](e + 1)

    }

    }

    b && 2E3 < b[x] && (b = b[C](0, 2E3), I(69));

    a = a + "=" + b + "; path=" + c + "; ";

    f && (a += "expires=" + (new Date((new Date).getTime() + f)).toGMTString() + "; ");

    d && (a += "domain=" + d + ";");

    K.cookie = a

    }

    };

    var qd, rd, sd = function() {

    if (!qd) {

    var a = {},

    b = W[ya],

    c = W.screen;

    a.Q = c ? c.width + "x" + c.height: "-";

    a.P = c ? c.colorDepth + "-bit": "-";

    a.language = (b && (b.language || b.browserLanguage) || "-")[E]();

    a.javaEnabled = b && b.javaEnabled() ? 1 : 0;

    a.characterSet = K.characterSet || K.charset || "-";

    try {

    var d = K.documentElement,

    e = K.body,

    f = e && e[ra] && e[va],

    b = [];

    d && (d[ra] && d[va]) && ("CSS1Compat" === K.compatMode || !f) ? b = [d[ra], d[va]] : f && (b = [e[ra], e[va]]);

    a.Wa = b[D]("x")

    } catch(k) {

    I(135)

    }

    qd = a

    }

    },

    td = function() {

    sd();

    for (var a = qd, b = W[ya], a = b.appName + b.version + a.language + b.platform + b.userAgent + a.javaEnabled + a.Q + a.P + (K.cookie ? K.cookie: "") + (K.referrer ? K.referrer: ""), b = a[x], c = W.history[x]; 0 < c;) a += c--^b++;

    return Yc(a)

    },

    ud = function(a) {

    sd();

    var b = qd;

    a.set(Lb, b.Q);

    a.set(Mb, b.P);

    a.set(Pb, b.language);

    a.set(Qb, b.characterSet);

    a.set(Nb, b.javaEnabled);

    a.set(Rb, b.Wa);

    if (a.get(ib) && a.get(jb)) {

    if (! (b = rd)) {

    var c, d, e;

    d = "ShockwaveFlash";

    if ((b = (b = W[ya]) ? b.plugins: g) && 0 < b[x]) for (c = 0; c < b[x] && !e; c++) d = b[c],

    -1 < d[s][r]("Shockwave Flash") && (e = d.description[z]("Shockwave Flash ")[1]);

    else {

    d = d + "." + d;

    try {

    c = new ActiveXObject(d + ".7"),

    e = c.GetVariable("$version")

    } catch(f) {}

    if (!e) try {

    c = new ActiveXObject(d + ".6"),

    e = "WIN 6,0,21,0",

    c.AllowScriptAccess = "always",

    e = c.GetVariable("$version")

    } catch(k) {}

    if (!e) try {

    c = new ActiveXObject(d),

    e = c.GetVariable("$version")

    } catch(m) {}

    e && (e = e[z](" ")[1][z](","), e = e[0] + "." + e[1] + " r" + e[2])

    }

    b = e ? e: "-"

    }

    rd = b;

    a.set(Ob, rd)

    } else a.set(Ob, "-")

    };

    var vd = function(a) {

    if (Aa(a)) this.s = a;

    else {

    var b = a[0],

    c = b.lastIndexOf(":"),

    d = b.lastIndexOf(".");

    this.h = this.i = this.l = ""; - 1 == c && -1 == d ? this.h = b: -1 == c && -1 != d ? (this.i = b[C](0, d), this.h = b[C](d + 1)) : -1 != c && -1 == d ? (this.l = b[C](0, c), this.h = b[C](c + 1)) : c > d ? (this.i = b[C](0, d), this.l = b[C](d + 1, c), this.h = b[C](c + 1)) : (this.i = b[C](0, d), this.h = b[C](d + 1));

    this.k = a[ia](1);

    this.Ma = !this.l && "_require" == this.h;

    this.J = !this.i && !this.l && "_provide" == this.h

    }

    },

    Y = function() {

    T(Y[y], "push", Y[y][p], 5);

    T(Y[y], "_getPlugin", Pc, 121);

    T(Y[y], "_createAsyncTracker", Y[y].Sa, 33);

    T(Y[y], "_getAsyncTracker", Y[y].Ta, 34);

    this.I = new Ja;

    this.p = []

    };

    F = Y[y];

    F.Na = function(a, b, c) {

    var d = this.I.get(a);

    if (!Aa(d)) return l;

    b.plugins_ = b.plugins_ || new Ja;

    b.plugins_.set(a, new d(b, c || {}));

    return h

    };

    F.push = function(a) {

    var b = Z.Va[xa](this, arguments),

    b = Z.p.concat(b);

    for (Z.p = []; 0 < b[x] && !Z.O(b[0]) && !(b.shift(), 0 < Z.p[x]););

    Z.p = Z.p.concat(b);

    return 0

    };

    F.Va = function(a) {

    for (var b = [], c = 0; c < arguments[x]; c++) try {

    var d = new vd(arguments[c]);

    d.J ? this.O(d) : b[p](d)

    } catch(e) {}

    return b

    };

    F.O = function(a) {

    try {

    if (a.s) a.s[xa](W);

    else if (a.J) this.I.set(a.k[0], a.k[1]);

    else {

    var b = "_gat" == a.i ? M: "_gaq" == a.i ? Z: M.u(a.i);

    if (a.Ma) {

    if (!this.Na(a.k[0], b, a.k[2])) {

    if (!a.Pa) {

    var c = Oa("" + a.k[1]);

    var d = c[B],

    e = K[A][B];

    var f;

    if (f = "https:" == d || d == e ? h: "http:" != d ? l: "http:" == e) {

    var k;

    a: {

    var m = Oa(K[A][wa]);

    if (! (c.Oa || 0 <= c.url[r]("?") || 0 <= c[qa][r]("://") || c[v] == m[v] && c[oa] == m[oa])) for (var t = "http:" == c[B] ? 80 : 443, u = M.S, b = 0; b < u[x]; b++) if (c[v] == u[b][0] && (c[oa] || t) == (u[b][1] || t) && 0 == c[qa][r](u[b][2])) {

    k = h;

    break a

    }

    k = l

    }

    f = k && !ld()

    }

    f && (a.Pa = Ha(c.url))

    }

    return h

    }

    } else a.l && (b = b.plugins_.get(a.l)),

    b[a.h][xa](b, a.k)

    }

    } catch(Za) {}

    };

    F.Sa = function(a, b) {

    return M.r(a, b || "")

    };

    F.Ta = function(a) {

    return M.u(a)

    };

    var yd = function() {

    function a(a, b, c, d) {

    g == f[a] && (f[a] = {});

    g == f[a][b] && (f[a][b] = []);

    f[a][b][c] = d

    }

    function b(a, b, c) {

    if (g != f[a] && g != f[a][b]) return f[a][b][c]

    }

    function c(a, b) {

    if (g != f[a] && g != f[a][b]) {

    f[a][b] = g;

    var c = h,

    d;

    for (d = 0; d < k[x]; d++) if (g != f[a][k[d]]) {

    c = l;

    break

    }

    c && (f[a] = g)

    }

    }

    function d(a) {

    var b = "",

    c = l,

    d, e;

    for (d = 0; d < k[x]; d++) if (e = a[k[d]], g != e) {

    c && (b += k[d]);

    for (var c = [], f = g, ha = g, ha = 0; ha < e[x]; ha++) if (g != e[ha]) {

    f = "";

    ha != mb && g == e[ha - 1] && (f += ha[w]() + Za);

    for (var Cd = e[ha], Jc = "", Yb = g, Kc = g, Lc = g, Yb = 0; Yb < Cd[x]; Yb++) Kc = Cd[la](Yb),

    Lc = Na[Kc],

    Jc += g != Lc ? Lc: Kc;

    f += Jc;

    c[p](f)

    }

    b += m + c[D](u) + t;

    c = l

    } else c = h;

    return b

    }

    var e = this,

    f = [],

    k = ["k", "v"],

    m = "(",

    t = ")",

    u = "*",

    Za = "!",

    Na = {

    "'": "'0"

    };

    Na[t] = "'1";

    Na[u] = "'2";

    Na[Za] = "'3";

    var mb = 1;

    e.Ra = function(a) {

    return g != f[a]

    };

    e.A = function() {

    for (var a = "", b = 0; b < f[x]; b++) g != f[b] && (a += b[w]() + d(f[b]));

    return a

    };

    e.Qa = function(a) {

    if (a == g) return e.A();

    for (var b = a.A(), c = 0; c < f[x]; c++) g != f[c] && !a.Ra(c) && (b += c[w]() + d(f[c]));

    return b

    };

    e.f = function(b, c, d) {

    if (!wd(d)) return l;

    a(b, "k", c, d);

    return h

    };

    e.o = function(b, c, d) {

    if (!xd(d)) return l;

    a(b, "v", c, d[w]());

    return h

    };

    e.getKey = function(a, c) {

    return b(a, "k", c)

    };

    e.N = function(a, c) {

    return b(a, "v", c)

    };

    e.L = function(a) {

    c(a, "k")

    };

    e.M = function(a) {

    c(a, "v")

    };

    T(e, "_setKey", e.f, 89);

    T(e, "_setValue", e.o, 90);

    T(e, "_getKey", e.getKey, 87);

    T(e, "_getValue", e.N, 88);

    T(e, "_clearKey", e.L, 85);

    T(e, "_clearValue", e.M, 86)

    };

    function wd(a) {

    return "string" == typeof a

    }

    function xd(a) {

    return "number" != typeof a && (g == Number || !(a instanceof Number)) || n.round(a) != a || NaN == a || a == ba ? l: h

    };

    var zd = function(a) {

    var b = W.gaGlobal;

    a && !b && (W.gaGlobal = b = {});

    return b

    },

    Ad = function() {

    var a = zd(h).hid;

    a == j && (a = Da(), zd(h).hid = a);

    return a

    },

    Dd = function(a) {

    a.set(Kb, Ad());

    var b = zd();

    if (b && b.dh == a.get(O)) {

    var c = b.sid;

    c && ("0" == c && I(112), a.set(Zb, c), a.get(Sb) && a.set(Wb, c));

    b = b.vid;

    a.get(Sb) && b && (b = b[z]("."), 1 * b[1] || I(112), a.set(Q, 1 * b[0]), a.set(Vb, 1 * b[1]))

    }

    };

    var Ed, Fd = function(a, b, c) {

    var d = a.c(bb, ""),

    e = a.c(P, "/"),

    f = a.b(cb, 0);

    a = a.c(Wa, "");

    X(b, c, e, d, a, f)

    },

    Xc = function(a) {

    var b = a.c(bb, "");

    a.b(O, 1);

    var c = a.c(P, "/"),

    d = a.c(Wa, "");

    X("__utma", cd(a), c, b, d, a.get(cb));

    X("__utmb", dd(a), c, b, d, a.get(db));

    X("__utmc", "" + a.b(O, 1), c, b, d);

    var e = hd(a, h);

    e ? X("__utmz", e, c, b, d, a.get(eb)) : X("__utmz", "", c, b, "", -1);

    (e = fd(a, l)) ? X("__utmv", e, c, b, d, a.get(cb)) : X("__utmv", "", c, b, "", -1)

    },

    Wc = function(a) {

    var b = a.b(O, 1);

    if (!bd(a, $c(b, pd("__utma")))) return a.set(Ub, h),

    l;

    var c = !ed(a, $c(b, pd("__utmb")));

    a.set(bc, c);

    id(a, $c(b, pd("__utmz")));

    gd(a, $c(b, pd("__utmv")));

    Ed = !c;

    return h

    },

    Gd = function(a) { ! Ed && !(0 < pd("__utmb")[x]) && (X("__utmd", "1", a.c(P, "/"), a.c(bb, ""), a.c(Wa, ""), 1E4), 0 == pd("__utmd")[x] && a[sa]())

    };

    var Jd = function(a) {

    a.get(Q) == g ? Hd(a) : a.get(Ub) && !a.get(Mc) ? Hd(a) : a.get(bc) && Id(a)

    },

    Kd = function(a) {

    a.get(hc) && !a.get(ac) && (Id(a), a.set(fc, a.get($b)))

    },

    Hd = function(a) {

    var b = a.get(ab);

    a.set(Sb, h);

    a.set(Q, Da() ^ td(a) & 2147483647);

    a.set(Tb, "");

    a.set(Vb, b);

    a.set(Wb, b);

    a.set(Zb, b);

    a.set($b, 1);

    a.set(ac, h);

    a.set(cc, 0);

    a.set(R, 10);

    a.set(dc, b);

    a.set(Fb, []);

    a.set(Ub, l);

    a.set(bc, l)

    },

    Id = function(a) {

    a.set(Wb, a.get(Zb));

    a.set(Zb, a.get(ab));

    a.z($b);

    a.set(ac, h);

    a.set(cc, 0);

    a.set(R, 10);

    a.set(dc, a.get(ab));

    a.set(bc, l)

    };

    var Ld = "daum:q eniro:search_word naver:query pchome:q images.google:q google:q yahoo:p yahoo:q msn:q bing:q aol:query aol:q lycos:q lycos:query ask:q netscape:query cnn:query about:terms mamma:q voila:rdata virgilio:qs live:q baidu:wd alice:qs yandex:text najdi:q seznam:q rakuten:qt biglobe:q goo.ne:MT wp:szukaj onet:qt yam:k kvasir:q ozu:q terra:query rambler:query conduit:q babylon:q search-results:q avg:q comcast:q incredimail:q startsiden:q go.mail.ru:q search.centrum.cz:q".split(" "),

    Sd = function(a) {

    if (a.get(kb) && !a.get(Mc)) {

    for (var b = !G(a.get(ic)) || !G(a.get(nc)) || !G(a.get(S)) || !G(a.get(lc)), c = {},

    d = 0; d < Md[x]; d++) {

    var e = Md[d];

    c[e] = a.get(e)

    } (d = a.get(rc)) ? (I(149), e = new Ja, Ma(e, d), d = e) : d = La(K[A][wa], a.get(gb)).d;

    if (! ("1" == Ia(d.get(a.get(ub))) && b)) {

    var f = d,

    k = function(b, c) {

    c = c || "-";

    var d = Ia(f.get(a.get(b)));

    return d && "-" != d ? J(d) : c

    },

    d = Ia(f.get(a.get(nb))) || "-",

    e = Ia(f.get(a.get(qb))) || "-",

    m = Ia(f.get(a.get(pb))) || "-",

    t = Ia(f.get("gclsrc")) || "-",

    u = Ia(f.get("dclid")) || "-",

    Za = k(ob, "(not set)"),

    Na = k(rb, "(not set)"),

    mb = k(sb),

    k = k(tb);

    if (G(d) && G(m) && G(u) && G(e)) d = l;

    else {

    var Xb = !G(m) && !G(t),

    Xb = G(e) && (!G(u) || Xb),

    Bd = G(mb);

    if (Xb || Bd) {

    var ga = Nd(a),

    ga = La(ga, h);

    if ((ga = Od(a, ga)) && !G(ga[1] && !ga[2])) Xb && (e = ga[0]),

    Bd && (mb = ga[1])

    }

    Pd(a, d, e, m, t, u, Za, Na, mb, k);

    d = h

    }

    d = d || Qd(a); ! d && (!b && a.get(ac)) && (Pd(a, g, "(direct)", g, g, g, "(direct)", "(none)", g, g), d = h);

    if (d && (a.set(hc, Rd(a, c)), b = "(direct)" == a.get(nc) && "(direct)" == a.get(jc) && "(none)" == a.get(oc), a.get(hc) || a.get(ac) && !b)) a.set(ec, a.get(ab)),

    a.set(fc, a.get($b)),

    a.z(gc)

    }

    }

    },

    Qd = function(a) {

    var b = Nd(a),

    c = La(b, h);

    if (! (b != g && b != j && "" != b && "0" != b && "-" != b && 0 <= b[r]("://")) || c && -1 < c[v][r]("google") && c.d.contains("q") && "cse" == c[qa]) return l;

    if ((b = Od(a, c)) && !b[2]) return Pd(a, g, b[0], g, g, g, "(organic)", "organic", b[1], g),

    h;

    if (b || !a.get(ac)) return l;

    a: {

    for (var b = a.get(Bb), d = Ka(c[v]), e = 0; e < b[x]; ++e) if ( - 1 < d[r](b[e])) {

    a = l;

    break a

    }

    Pd(a, g, d, g, g, g, "(referral)", "referral", g, "/" + c[qa]);

    a = h

    }

    return a

    },

    Od = function(a, b) {

    for (var c = a.get(zb), d = 0; d < c[x]; ++d) {

    var e = c[d][z](":");

    if ( - 1 < b[v][r](e[0][E]())) {

    var f = b.d.get(e[1]);

    if (f && (f = L(f), !f && -1 < b[v][r]("google.") && (f = "(not provided)"), !e[3] || -1 < b.url[r](e[3]))) {

    a: {

    for (var c = f, d = a.get(Ab), c = J(c)[E](), k = 0; k < d[x]; ++k) if (c == d[k]) {

    c = h;

    break a

    }

    c = l

    }

    return [e[2] || e[0], f, c]

    }

    }

    }

    return j

    },

    Pd = function(a, b, c, d, e, f, k, m, t, u) {

    a.set(ic, b);

    a.set(nc, c);

    a.set(S, d);

    a.set(kc, e);

    a.set(lc, f);

    a.set(jc, k);

    a.set(oc, m);

    a.set(pc, t);

    a.set(qc, u)

    },

    Md = [jc, ic, S, lc, nc, oc, pc, qc],

    Rd = function(a, b) {

    function c(a) {

    a = ("" + a)[z]("+")[D]("%20");

    return a = a[z](" ")[D]("%20")

    }

    function d(c) {

    var d = "" + (a.get(c) || "");

    c = "" + (b[c] || "");

    return 0 < d[x] && d == c

    }

    if (d(S) || d(lc)) return I(131),

    l;

    for (var e = 0; e < Md[x]; e++) {

    var f = Md[e],

    k = b[f] || "-",

    f = a.get(f) || "-";

    if (c(k) != c(f)) return h

    }

    return l

    },

    Td = RegExp(/^https:\/\/(www\.)?google(\.com?)?(\.[a-z]{2}t?)?\/?$/i),

    Nd = function(a) {

    a = Pa(a.get(Jb), a.get(P));

    try {

    if (Td[fa](a)) return I(136),

    a + "?q="

    } catch(b) {

    I(145)

    }

    return a

    };

    var Ud, Vd, Wd = function(a) {

    Ud = a.c(S, "");

    Vd = a.c(kc, "")

    },

    Xd = function(a) {

    var b = a.c(S, ""),

    c = a.c(kc, "");

    b != Ud && ( - 1 < c[r]("ds") ? a.set(mc, g) : !G(Ud) && -1 < Vd[r]("ds") && a.set(mc, Ud))

    };

    var Zd = function(a) {

    Yd(a, K[A][wa]) ? (a.set(Mc, h), I(12)) : a.set(Mc, l)

    },

    Yd = function(a, b) {

    if (!a.get(fb)) return l;

    var c = La(b, a.get(gb)),

    d = L(c.d.get("__utma")),

    e = L(c.d.get("__utmb")),

    f = L(c.d.get("__utmc")),

    k = L(c.d.get("__utmx")),

    m = L(c.d.get("__utmz")),

    t = L(c.d.get("__utmv")),

    c = L(c.d.get("__utmk"));

    if (Yc("" + d + e + f + k + m + t) != c) {

    d = J(d);

    e = J(e);

    f = J(f);

    k = J(k);

    f = $d(d + e + f + k, m, t, c);

    if (!f) return l;

    m = f[0];

    t = f[1]

    }

    if (!bd(a, d, h)) return l;

    ed(a, e, h);

    id(a, m, h);

    gd(a, t, h);

    ae(a, k, h);

    return h

    },

    ce = function(a, b, c) {

    var d;

    d = cd(a) || "-";

    var e = dd(a) || "-",

    f = "" + a.b(O, 1) || "-",

    k = be(a) || "-",

    m = hd(a, l) || "-";

    a = fd(a, l) || "-";

    var t = Yc("" + d + e + f + k + m + a),

    u = [];

    u[p]("__utma=" + d);

    u[p]("__utmb=" + e);

    u[p]("__utmc=" + f);

    u[p]("__utmx=" + k);

    u[p]("__utmz=" + m);

    u[p]("__utmv=" + a);

    u[p]("__utmk=" + t);

    d = u[D]("&");

    if (!d) return b;

    e = b[r]("#");

    if (c) return 0 > e ? b + "#" + d: b + "&" + d;

    c = "";

    f = b[r]("?");

    0 < e && (c = b[C](e), b = b[C](0, e));

    return 0 > f ? b + "?" + d + c: b + "&" + d + c

    },

    $d = function(a, b, c, d) {

    for (var e = 0; 3 > e; e++) {

    for (var f = 0; 3 > f; f++) {

    if (d == Yc(a + b + c)) return I(127),

    [b, c];

    var k = b[q](/ /g, "%20"),

    m = c[q](/ /g, "%20");

    if (d == Yc(a + k + m)) return I(128),

    [k, m];

    k = k[q](/\+/g, "%20");

    m = m[q](/\+/g, "%20");

    if (d == Yc(a + k + m)) return I(129),

    [k, m];

    try {

    var t = b[na]("utmctr=(.*?)(?:\\|utm|$)");

    if (t && 2 == t[x] && (k = b[q](t[1], H(J(t[1]))), d == Yc(a + k + c))) return I(139),

    [k, c]

    } catch(u) {}

    b = J(b)

    }

    c = J(c)

    }

    };

    var de = "|",

    fe = function(a, b, c, d, e, f, k, m, t) {

    var u = ee(a, b);

    u || (u = {},

    a.get(Cb)[p](u));

    u.id_ = b;

    u.affiliation_ = c;

    u.total_ = d;

    u.tax_ = e;

    u.shipping_ = f;

    u.city_ = k;

    u.state_ = m;

    u.country_ = t;

    u.items_ = u.items_ || [];

    return u

    },

    ge = function(a, b, c, d, e, f, k) {

    a = ee(a, b) || fe(a, b, "", 0, 0, 0, "", "", "");

    var m;

    a: {

    if (a && a.items_) {

    m = a.items_;

    for (var t = 0; t < m[x]; t++) if (m[t].sku_ == c) {

    m = m[t];

    break a

    }

    }

    m = j

    }

    t = m || {};

    t.transId_ = b;

    t.sku_ = c;

    t.name_ = d;

    t.category_ = e;

    t.price_ = f;

    t.quantity_ = k;

    m || a.items_[p](t);

    return t

    },

    ee = function(a, b) {

    for (var c = a.get(Cb), d = 0; d < c[x]; d++) if (c[d].id_ == b) return c[d];

    return j

    };

    var he, ie = function(a) {

    if (!he) {

    var b;

    b = K[A].hash;

    var c = W[s],

    d = /^#?gaso=([^&]*)/;

    if (c = (b = (b = b && b[na](d) || c && c[na](d)) ? b[1] : L(pd("GASO"))) && b[na](/^(?:[|!]([-0-9a-z.]{1,40})[|!])?([-.\w]{10,1200})$/i)) Fd(a, "GASO", "" + b),

    M._gasoDomain = a.get(bb),

    M._gasoCPath = a.get(P),

    a = c[1],

    Ha("https://www.google.com/analytics/web/inpage/pub/inpage.js?" + (a ? "prefix=" + a + "&": "") + Da(), "_gasojs");

    he = h

    }

    };

    var ae = function(a, b, c) {

    c && (b = J(b));

    c = a.b(O, 1);

    b = b[z]("."); ! (2 > b[x]) && /^\d+$/ [fa](b[0]) && (b[0] = "" + c, Fd(a, "__utmx", b[D](".")))

    },

    be = function(a, b) {

    var c = $c(a.get(O), pd("__utmx"));

    "-" == c && (c = "");

    return b ? H(c) : c

    };

    var ke = function(a, b) {

    var c = n.min(a.b(Dc, 0), 100);

    if (a.b(Q, 0) % 100 >= c) return l;

    a: {

    if (c = (c = W.performance || W.webkitPerformance) && c.timing) {

    var d = c.navigationStart;

    if (0 == d) I(133);

    else {

    c = [c.loadEventStart - d, c.domainLookupEnd - c.domainLookupStart, c.connectEnd - c.connectStart, c.responseStart - c.requestStart, c.responseEnd - c.responseStart, c.fetchStart - d, c.domInteractive - d, c.domContentLoadedEventStart - d];

    break a

    }

    }

    c = g

    }

    c || (W.top != W ? c = g: (d = (c = W.external) && c.onloadT, c && !c.isValidLoadTime && (d = g), 2147483648 < d && (d = g), 0 < d && c.setPageReadyTime(), c = d == g ? g: [d]));

    if (c == g) return l;

    d = c[0];

    if (d == g || d == ba || isNaN(d)) return l;

    if (0 < d) {

    a: {

    for (d = 1; d < c[x]; d++) if (isNaN(c[d]) || c[d] == ba || 0 > c[d]) {

    d = l;

    break a

    }

    d = h

    }

    d ? b(je(c)) : b(je(c[ia](0, 1)))

    } else Fa(W, "load",

    function() {

    ke(a, b)

    },

    l);

    return h

    },

    me = function(a, b, c, d) {

    var e = new yd;

    e.f(14, 90, b[C](0, 64));

    e.f(14, 91, a[C](0, 64));

    e.f(14, 92, "" + le(c));

    d != g && e.f(14, 93, d[C](0, 64));

    e.o(14, 90, c);

    return e

    },

    le = function(a) {

    return isNaN(a) || 0 > a ? 0 : 5E3 > a ? 10 * n[ka](a / 10) : 5E4 > a ? 100 * n[ka](a / 100) : 41E5 > a ? 1E3 * n[ka](a / 1E3) : 41E5

    },

    je = function(a) {

    for (var b = new yd, c = 0; c < a[x]; c++) b.f(14, c + 1, "" + le(a[c])),

    b.o(14, c + 1, a[c]);

    return b

    };

    var U = function(a, b, c) {

    function d(a) {

    return function(b) {

    if ((b = b.get(Nc)[a]) && b[x]) for (var c = {

    type: a,

    target: e,

    stopPropagation: function() {

    throw "aborted";

    }

    },

    d = 0; d < b[x]; d++) b[d].call(e, c)

    }

    }

    var e = this;

    this.a = new Zc;

    this.get = function(a) {

    return this.a.get(a)

    };

    this.set = function(a, b, c) {

    this.a.set(a, b, c)

    };

    this.set(Wa, b || "UA-XXXXX-X");

    this.set($a, a || "");

    this.set(Ya, c || "");

    this.set(ab, n.round((new Date).getTime() / 1E3));

    this.set(P, "/");

    this.set(cb, 63072E6);

    this.set(eb, 15768E6);

    this.set(db, 18E5);

    this.set(fb, l);

    this.set(yb, 50);

    this.set(gb, l);

    this.set(hb, h);

    this.set(ib, h);

    this.set(jb, h);

    this.set(kb, h);

    this.set(lb, h);

    this.set(ob, "utm_campaign");

    this.set(nb, "utm_id");

    this.set(pb, "gclid");

    this.set(qb, "utm_source");

    this.set(rb, "utm_medium");

    this.set(sb, "utm_term");

    this.set(tb, "utm_content");

    this.set(ub, "utm_nooverride");

    this.set(vb, 100);

    this.set(Dc, 1);

    this.set(Ec, l);

    this.set(wb, "/__utm.gif");

    this.set(xb, 1);

    this.set(Cb, []);

    this.set(Fb, []);

    this.set(zb, Ld[ia](0));

    this.set(Ab, []);

    this.set(Bb, []);

    this.B("auto");

    this.set(Jb, K.referrer);

    a = this.a;

    try {

    var f = La(K[A][wa], l),

    k = da(Ia(f.d.get("utm_referrer"))) || "";

    k && a.set(Jb, k);

    var m = W.gaData && W.gaData.expId;

    m || (m = da(L(f.d.get("utm_expid"))) || "");

    m && a.set(Oc, "" + m)

    } catch(t) {

    I(146)

    }

    this.set(Nc, {

    hit: [],

    load: []

    });

    this.a.g("0", Zd);

    this.a.g("1", Wd);

    this.a.g("2", Jd);

    this.a.g("3", Sd);

    this.a.g("4", Xd);

    this.a.g("5", Kd);

    this.a.g("6", d("load"));

    this.a.g("7", ie);

    this.a.e("A", kd);

    this.a.e("B", md);

    this.a.e("C", Jd);

    this.a.e("D", jd);

    this.a.e("E", Tc);

    this.a.e("F", ne);

    this.a.e("G", Gd);

    this.a.e("H", nd);

    this.a.e("I", ud);

    this.a.e("J", Dd);

    this.a.e("K", d("hit"));

    this.a.e("L", oe);

    this.a.e("M", pe);

    0 === this.get(ab) && I(111);

    this.a.T();

    this.H = g

    };

    F = U[y];

    F.m = function() {

    var a = this.get(Db);

    a || (a = new yd, this.set(Db, a));

    return a

    };

    F.La = function(a) {

    for (var b in a) {

    var c = a[b];

    a.hasOwnProperty(b) && this.set(b, c, h)

    }

    };

    F.K = function(a) {

    if (this.get(Ec)) return l;

    var b = this,

    c = ke(this.a,

    function(c) {

    b.set(Hb, a, h);

    b.t(c)

    });

    this.set(Ec, c);

    return c

    };

    F.Fa = function(a) {

    a && Ba(a) ? (I(13), this.set(Hb, a, h)) : "object" === typeof a && a !== j && this.La(a);

    this.H = a = this.get(Hb);

    this.a.j("page");

    this.K(a)

    };

    F.F = function(a, b, c, d, e) {

    if ("" == a || (!wd(a) || "" == b || !wd(b)) || c != g && !wd(c) || d != g && !xd(d)) return l;

    this.set(wc, a, h);

    this.set(xc, b, h);

    this.set(yc, c, h);

    this.set(zc, d, h);

    this.set(vc, !!e, h);

    this.a.j("event");

    return h

    };

    F.Ha = function(a, b, c, d, e) {

    var f = this.a.b(Dc, 0);

    1 * e === e && (f = e);

    if (this.a.b(Q, 0) % 100 >= f) return l;

    c = 1 * ("" + c);

    if ("" == a || (!wd(a) || "" == b || !wd(b) || !xd(c) || isNaN(c) || 0 > c || 0 > f || 100 < f) || d != g && ("" == d || !wd(d))) return l;

    this.t(me(a, b, c, d));

    return h

    };

    F.Ga = function(a, b, c, d) {

    if (!a || !b) return l;

    this.set(Ac, a, h);

    this.set(Bc, b, h);

    this.set(Cc, c || K[A][wa], h);

    d && this.set(Hb, d, h);

    this.a.j("social");

    return h

    };

    F.Ea = function() {

    this.set(Dc, 10);

    this.K(this.H)

    };

    F.Ia = function() {

    this.a.j("trans")

    };

    F.t = function(a) {

    this.set(Eb, a, h);

    this.a.j("event")

    };

    F.ia = function(a) {

    this.v();

    var b = this;

    return {

    _trackEvent: function(c, d, e) {

    I(91);

    b.F(a, c, d, e)

    }

    }

    };

    F.ma = function(a) {

    return this.get(a)

    };

    F.xa = function(a, b) {

    if (a) if (Ba(a)) this.set(a, b);

    else if ("object" == typeof a) for (var c in a) a.hasOwnProperty(c) && this.set(c, a[c])

    };

    F.addEventListener = function(a, b) {

    var c = this.get(Nc)[a];

    c && c[p](b)

    };

    F.removeEventListener = function(a, b) {

    for (var c = this.get(Nc)[a], d = 0; c && d < c[x]; d++) if (c[d] == b) {

    c.splice(d, 1);

    break

    }

    };

    F.qa = function() {

    return "5.3.8"

    };

    F.B = function(a) {

    this.get(hb);

    a = "auto" == a ? Ka(K.domain) : !a || "-" == a || "none" == a ? "": a[E]();

    this.set(bb, a)

    };

    F.va = function(a) {

    this.set(hb, !!a)

    };

    F.na = function(a, b) {

    return ce(this.a, a, b)

    };

    F.link = function(a, b) {

    if (this.a.get(fb) && a) {

    var c = ce(this.a, a, b);

    K[A].href = c

    }

    };

    F.ua = function(a, b) {

    this.a.get(fb) && (a && a.action) && (a.action = ce(this.a, a.action, b))

    };

    F.za = function() {

    this.v();

    var a = this.a,

    b = K.getElementById ? K.getElementById("utmtrans") : K.utmform && K.utmform.utmtrans ? K.utmform.utmtrans: j;

    if (b && b[ma]) {

    a.set(Cb, []);

    for (var b = b[ma][z]("UTM:"), c = 0; c < b[x]; c++) {

    b[c] = Ca(b[c]);

    for (var d = b[c][z](de), e = 0; e < d[x]; e++) d[e] = Ca(d[e]);

    "T" == d[0] ? fe(a, d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8]) : "I" == d[0] && ge(a, d[1], d[2], d[3], d[4], d[5], d[6])

    }

    }

    };

    F.$ = function(a, b, c, d, e, f, k, m) {

    return fe(this.a, a, b, c, d, e, f, k, m)

    };

    F.Y = function(a, b, c, d, e, f) {

    return ge(this.a, a, b, c, d, e, f)

    };

    F.Aa = function(a) {

    de = a || "|"

    };

    F.ea = function() {

    this.set(Cb, [])

    };

    F.wa = function(a, b, c, d) {

    var e = this.a;

    if (0 >= a || a > e.get(yb)) a = l;

    else if (!b || !c || 128 < b[x] + c[x]) a = l;

    else {

    1 != d && 2 != d && (d = 3);

    var f = {};

    ea(f, b);

    f.value = c;

    f.scope = d;

    e.get(Fb)[a] = f;

    a = h

    }

    a && this.a.n();

    return a

    };

    F.ka = function(a) {

    this.a.get(Fb)[a] = g;

    this.a.n()

    };

    F.ra = function(a) {

    return (a = this.a.get(Fb)[a]) && 1 == a[ta] ? a[ma] : g

    };

    F.Ca = function(a, b, c) {

    this.m().f(a, b, c)

    };

    F.Da = function(a, b, c) {

    this.m().o(a, b, c)

    };

    F.sa = function(a, b) {

    return this.m().getKey(a, b)

    };

    F.ta = function(a, b) {

    return this.m().N(a, b)

    };

    F.fa = function(a) {

    this.m().L(a)

    };

    F.ga = function(a) {

    this.m().M(a)

    };

    F.ja = function() {

    return new yd

    };

    F.W = function(a) {

    a && this.get(Ab)[p](a[E]())

    };

    F.ba = function() {

    this.set(Ab, [])

    };

    F.X = function(a) {

    a && this.get(Bb)[p](a[E]())

    };

    F.ca = function() {

    this.set(Bb, [])

    };

    F.Z = function(a, b, c, d, e) {

    if (a && b) {

    a = [a, b[E]()][D](":");

    if (d || e) a = [a, d, e][D](":");

    d = this.get(zb);

    d.splice(c ? 0 : d[x], 0, a)

    }

    };

    F.da = function() {

    this.set(zb, [])

    };

    F.ha = function(a) {

    this.a[ja]();

    var b = this.get(P),

    c = be(this.a);

    this.set(P, a);

    this.a.n();

    ae(this.a, c);

    this.set(P, b)

    };

    F.ya = function(a, b) {

    if (0 < a && 5 >= a && Ba(b) && "" != b) {

    var c = this.get(Fc) || [];

    c[a] = b;

    this.set(Fc, c)

    }

    };

    F.V = function(a) {

    a = "" + a;

    if (a[na](/^[A-Za-z0-9]{1,5}$/)) {

    var b = this.get(Ic) || [];

    b[p](a);

    this.set(Ic, b)

    }

    };

    F.v = function() {

    this.a[ja]()

    };

    F.Ba = function(a) {

    a && "" != a && (this.set(Tb, a), this.a.j("var"))

    };

    var ne = function(a) {

    "trans" !== a.get(sc) && 500 <= a.b(cc, 0) && a[sa]();

    if ("event" === a.get(sc)) {

    var b = (new Date).getTime(),

    c = a.b(dc, 0),

    d = a.b(Zb, 0),

    c = n[ka](1 * ((b - (c != d ? c: 1E3 * c)) / 1E3));

    0 < c && (a.set(dc, b), a.set(R, n.min(10, a.b(R, 0) + c)));

    0 >= a.b(R, 0) && a[sa]()

    }

    },

    pe = function(a) {

    "event" === a.get(sc) && a.set(R, n.max(0, a.b(R, 10) - 1))

    };

    var qe = function() {

    var a = [];

    this.add = function(b, c, d) {

    d && (c = H("" + c));

    a[p](b + "=" + c)

    };

    this.toString = function() {

    return a[D]("&")

    }

    },

    re = function(a, b) { (b || 2 != a.get(xb)) && a.z(cc)

    },

    se = function(a, b) {

    b.add("utmwv", "5.3.8");

    b.add("utms", a.get(cc));

    b.add("utmn", Da());

    var c = K[A].hostname;

    G(c) || b.add("utmhn", c, h);

    c = a.get(vb);

    100 != c && b.add("utmsp", c, h)

    },

    te = function(a, b) {

    b.add("utmac", Ca(a.get(Wa)));

    a.get(Oc) && b.add("utmxkey", a.get(Oc), h);

    a.get(vc) && b.add("utmni", 1);

    var c = a.get(Ic);

    c && 0 < c[x] && b.add("utmdid", c[D]("."));

    var c = function(a, b) {

    b && d[p](a + "=" + b + ";")

    },

    d = [];

    c("__utma", cd(a));

    c("__utmz", hd(a, l));

    c("__utmv", fd(a, h));

    c("__utmx", be(a));

    b.add("utmcc", d[D]("+"), h);

    a.get(Xa) !== l && (a.get(Xa) || M.w) && b.add("aip", 1);

    b.add("utmu", od.Xa())

    },

    ue = function(a, b) {

    for (var c = a.get(Fc) || [], d = [], e = 1; e < c[x]; e++) c[e] && d[p](e + ":" + H(c[e][q](/%/g, "%25")[q](/:/g, "%3A")[q](/,/g, "%2C")));

    d[x] && b.add("utmpg", d[D](","))

    },

    ve = function(a, b) {

    a.get(ib) && (b.add("utmcs", a.get(Qb), h), b.add("utmsr", a.get(Lb)), a.get(Rb) && b.add("utmvp", a.get(Rb)), b.add("utmsc", a.get(Mb)), b.add("utmul", a.get(Pb)), b.add("utmje", a.get(Nb)), b.add("utmfl", a.get(Ob), h))

    },

    we = function(a, b) {

    a.get(lb) && a.get(Ib) && b.add("utmdt", a.get(Ib), h);

    b.add("utmhid", a.get(Kb));

    b.add("utmr", Pa(a.get(Jb), a.get(P)), h);

    b.add("utmp", H(a.get(Hb), h), h)

    },

    xe = function(a, b) {

    for (var c = a.get(Db), d = a.get(Eb), e = a.get(Fb) || [], f = 0; f < e[x]; f++) {

    var k = e[f];

    k && (c || (c = new yd), c.f(8, f, k[s]), c.f(9, f, k[ma]), 3 != k[ta] && c.f(11, f, "" + k[ta]))

    } ! G(a.get(wc)) && !G(a.get(xc), h) && (c || (c = new yd), c.f(5, 1, a.get(wc)), c.f(5, 2, a.get(xc)), e = a.get(yc), e != g && c.f(5, 3, e), e = a.get(zc), e != g && c.o(5, 1, e));

    c ? b.add("utme", c.Qa(d), h) : d && b.add("utme", d.A(), h)

    },

    ye = function(a, b, c) {

    var d = new qe;

    re(a, c);

    se(a, d);

    d.add("utmt", "tran");

    d.add("utmtid", b.id_, h);

    d.add("utmtst", b.affiliation_, h);

    d.add("utmtto", b.total_, h);

    d.add("utmttx", b.tax_, h);

    d.add("utmtsp", b.shipping_, h);

    d.add("utmtci", b.city_, h);

    d.add("utmtrg", b.state_, h);

    d.add("utmtco", b.country_, h);

    xe(a, d);

    ve(a, d);

    we(a, d);

    (b = a.get(Gb)) && d.add("utmcu", b, h);

    c || (ue(a, d), te(a, d));

    return d[w]()

    },

    ze = function(a, b, c) {

    var d = new qe;

    re(a, c);

    se(a, d);

    d.add("utmt", "item");

    d.add("utmtid", b.transId_, h);

    d.add("utmipc", b.sku_, h);

    d.add("utmipn", b.name_, h);

    d.add("utmiva", b.category_, h);

    d.add("utmipr", b.price_, h);

    d.add("utmiqt", b.quantity_, h);

    xe(a, d);

    ve(a, d);

    we(a, d);

    (b = a.get(Gb)) && d.add("utmcu", b, h);

    c || (ue(a, d), te(a, d));

    return d[w]()

    },

    Ae = function(a, b) {

    var c = a.get(sc);

    if ("page" == c) c = new qe,

    re(a, b),

    se(a, c),

    xe(a, c),

    ve(a, c),

    we(a, c),

    b || (ue(a, c), te(a, c)),

    c = [c[w]()];

    else if ("event" == c) c = new qe,

    re(a, b),

    se(a, c),

    c.add("utmt", "event"),

    xe(a, c),

    ve(a, c),

    we(a, c),

    b || (ue(a, c), te(a, c)),

    c = [c[w]()];

    else if ("var" == c) c = new qe,

    re(a, b),

    se(a, c),

    c.add("utmt", "var"),

    !b && te(a, c),

    c = [c[w]()];

    else if ("trans" == c) for (var c = [], d = a.get(Cb), e = 0; e < d[x]; ++e) {

    c[p](ye(a, d[e], b));

    for (var f = d[e].items_, k = 0; k < f[x]; ++k) c[p](ze(a, f[k], b))

    } else "social" == c ? b ? c = [] : (c = new qe, re(a, b), se(a, c), c.add("utmt", "social"), c.add("utmsn", a.get(Ac), h), c.add("utmsa", a.get(Bc), h), c.add("utmsid", a.get(Cc), h), xe(a, c), ve(a, c), we(a, c), ue(a, c), te(a, c), c = [c[w]()]) : "feedback" == c ? b ? c = [] : (c = new qe, re(a, b), se(a, c), c.add("utmt", "feedback"), c.add("utmfbid", a.get(Gc), h), c.add("utmfbpr", a.get(Hc), h), xe(a, c), ve(a, c), we(a, c), ue(a, c), te(a, c), c = [c[w]()]) : c = [];

    return c

    },

    oe = function(a) {

    var b, c = a.get(xb),

    d = a.get(uc),

    e = d && d.Ua,

    f = 0;

    if (0 == c || 2 == c) {

    var k = a.get(wb) + "?";

    b = Ae(a, h);

    for (var m = 0, t = b[x]; m < t; m++) Sa(b[m], e, k, h),

    f++

    }

    if (1 == c || 2 == c) {

    b = Ae(a);

    m = 0;

    for (t = b[x]; m < t; m++) try {

    Sa(b[m], e),

    f++

    } catch(u) {

    u && Ra(u[s], g, u.message)

    }

    }

    d && (d.q = f)

    };

    var Be = function() {

    return "https:" == K[A][B] || M.G ? "https://ssl.google-analytics.com": "http://www.google-analytics.com"

    },

    Ce = function(a) {

    ea(this, "len");

    this.message = a + "-8192"

    },

    De = function(a) {

    ea(this, "ff2post");

    this.message = a + "-2036"

    },

    Sa = function(a, b, c, d) {

    b = b || Ea;

    if (d || 2036 >= a[x]) {

    var e = b;

    b = c || Be() + "/__utm.gif?";

    var f = new Image(1, 1);

    f.src = b + a;

    f.onload = function() {

    f.onload = j;

    f.onerror = j;

    e()

    };

    f.onerror = function() {

    f.onload = j;

    f.onerror = j;

    e()

    }

    } else if (8192 >= a[x]) {

    var k = b;

    if (0 <= W[ya].userAgent[r]("Firefox") && ![].reduce) throw new De(a[x]);

    var m;

    b = Be() + "/p/__utm.gif";

    if (c = W.XDomainRequest) m = new c,

    m.open("POST", b);

    else if (c = W.XMLHttpRequest) c = new c,

    "withCredentials" in c && (m = c, m.open("POST", b, h), m.setRequestHeader("Content-Type", "text/plain"));

    m ? (m.onreadystatechange = function() {

    4 == m.readyState && (k(), m = j)

    },

    m.send(a), b = h) : b = g;

    b || Ee(a, k)

    } else throw new Ce(a[x]);

    },

    Ee = function(a, b) {

    if (K.body) {

    a = aa(a);

    try {

    var c = K[pa]('<iframe name="' + a + '"></iframe>')

    } catch(d) {

    c = K[pa]("iframe"),

    ea(c, a)

    }

    c.height = "0";

    c.width = "0";

    c.style.display = "none";

    c.style.visibility = "hidden";

    var e = K[A],

    e = Be() + "/u/post_iframe.html#" + aa(e[B] + "//" + e[v] + "/favicon.ico"),

    f = function() {

    c.src = "";

    c.parentNode && c.parentNode.removeChild(c)

    };

    Fa(W, "beforeunload", f);

    var k = l,

    m = 0,

    t = function() {

    if (!k) {

    try {

    if (9 < m || c.contentWindow[A][v] == K[A][v]) {

    k = h;

    f();

    Ga(W, "beforeunload", f);

    b();

    return

    }

    } catch(a) {}

    m++;

    ca(t, 200)

    }

    };

    Fa(c, "load", t);

    K.body.appendChild(c);

    c.src = e

    } else ca(function() {

    Ee(a, b)

    },

    100)

    };

    var $ = function() {

    this.G = this.w = l;

    this.C = {};

    this.D = [];

    this.U = 0;

    this.S = [["www.google-analytics.com", "", "/plugins/"]];

    this._gasoCPath = this._gasoDomain = g;

    var a = function(a, c, d) {

    T($[y], a, c, d)

    };

    a("_createTracker", $[y].r, 55);

    a("_getTracker", $[y].oa, 0);

    a("_getTrackerByName", $[y].u, 51);

    a("_getTrackers", $[y].pa, 130);

    a("_anonymizeIp", $[y].aa, 16);

    a("_forceSSL", $[y].la, 125);

    a("_getPlugin", Pc, 120);

    a = function(a, c, d) {

    T(U[y], a, c, d)

    };

    Qc("_getName", $a, 58);

    Qc("_getAccount", Wa, 64);

    Qc("_visitCode", Q, 54);

    Qc("_getClientInfo", ib, 53, 1);

    Qc("_getDetectTitle", lb, 56, 1);

    Qc("_getDetectFlash", jb, 65, 1);

    Qc("_getLocalGifPath", wb, 57);

    Qc("_getServiceMode", xb, 59);

    V("_setClientInfo", ib, 66, 2);

    V("_setAccount", Wa, 3);

    V("_setNamespace", Ya, 48);

    V("_setAllowLinker", fb, 11, 2);

    V("_setDetectFlash", jb, 61, 2);

    V("_setDetectTitle", lb, 62, 2);

    V("_setLocalGifPath", wb, 46, 0);

    V("_setLocalServerMode", xb, 92, g, 0);

    V("_setRemoteServerMode", xb, 63, g, 1);

    V("_setLocalRemoteServerMode", xb, 47, g, 2);

    V("_setSampleRate", vb, 45, 1);

    V("_setCampaignTrack", kb, 36, 2);

    V("_setAllowAnchor", gb, 7, 2);

    V("_setCampNameKey", ob, 41);

    V("_setCampContentKey", tb, 38);

    V("_setCampIdKey", nb, 39);

    V("_setCampMediumKey", rb, 40);

    V("_setCampNOKey", ub, 42);

    V("_setCampSourceKey", qb, 43);

    V("_setCampTermKey", sb, 44);

    V("_setCampCIdKey", pb, 37);

    V("_setCookiePath", P, 9, 0);

    V("_setMaxCustomVariables", yb, 0, 1);

    V("_setVisitorCookieTimeout", cb, 28, 1);

    V("_setSessionCookieTimeout", db, 26, 1);

    V("_setCampaignCookieTimeout", eb, 29, 1);

    V("_setReferrerOverride", Jb, 49);

    V("_setSiteSpeedSampleRate", Dc, 132);

    a("_trackPageview", U[y].Fa, 1);

    a("_trackEvent", U[y].F, 4);

    a("_trackPageLoadTime", U[y].Ea, 100);

    a("_trackSocial", U[y].Ga, 104);

    a("_trackTrans", U[y].Ia, 18);

    a("_sendXEvent", U[y].t, 78);

    a("_createEventTracker", U[y].ia, 74);

    a("_getVersion", U[y].qa, 60);

    a("_setDomainName", U[y].B, 6);

    a("_setAllowHash", U[y].va, 8);

    a("_getLinkerUrl", U[y].na, 52);

    a("_link", U[y].link, 101);

    a("_linkByPost", U[y].ua, 102);

    a("_setTrans", U[y].za, 20);

    a("_addTrans", U[y].$, 21);

    a("_addItem", U[y].Y, 19);

    a("_clearTrans", U[y].ea, 105);

    a("_setTransactionDelim", U[y].Aa, 82);

    a("_setCustomVar", U[y].wa, 10);

    a("_deleteCustomVar", U[y].ka, 35);

    a("_getVisitorCustomVar", U[y].ra, 50);

    a("_setXKey", U[y].Ca, 83);

    a("_setXValue", U[y].Da, 84);

    a("_getXKey", U[y].sa, 76);

    a("_getXValue", U[y].ta, 77);

    a("_clearXKey", U[y].fa, 72);

    a("_clearXValue", U[y].ga, 73);

    a("_createXObj", U[y].ja, 75);

    a("_addIgnoredOrganic", U[y].W, 15);

    a("_clearIgnoredOrganic", U[y].ba, 97);

    a("_addIgnoredRef", U[y].X, 31);

    a("_clearIgnoredRef", U[y].ca, 32);

    a("_addOrganic", U[y].Z, 14);

    a("_clearOrganic", U[y].da, 70);

    a("_cookiePathCopy", U[y].ha, 30);

    a("_get", U[y].ma, 106);

    a("_set", U[y].xa, 107);

    a("_addEventListener", U[y].addEventListener, 108);

    a("_removeEventListener", U[y].removeEventListener, 109);

    a("_addDevId", U[y].V);

    a("_getPlugin", Pc, 122);

    a("_setPageGroup", U[y].ya, 126);

    a("_trackTiming", U[y].Ha, 124);

    a("_initData", U[y].v, 2);

    a("_setVar", U[y].Ba, 22);

    V("_setSessionTimeout", db, 27, 3);

    V("_setCookieTimeout", eb, 25, 3);

    V("_setCookiePersistence", cb, 24, 1);

    a("_setAutoTrackOutbound", Ea, 79);

    a("_setTrackOutboundSubdomains", Ea, 81);

    a("_setHrefExamineLimit", Ea, 80)

    };

    F = $[y];

    F.oa = function(a, b) {

    return this.r(a, g, b)

    };

    F.r = function(a, b, c) {

    b && I(23);

    c && I(67);

    b == g && (b = "~" + M.U++);

    a = new U(b, a, c);

    M.C[b] = a;

    M.D[p](a);

    return a

    };

    F.u = function(a) {

    a = a || "";

    return M.C[a] || M.r(g, a)

    };

    F.pa = function() {

    return M.D[ia](0)

    };

    F.aa = function() {

    this.w = h

    };

    F.la = function() {

    this.G = h

    };

    var Fe = function(a) {

    if ("prerender" == K.webkitVisibilityState) return l;

    a();

    return h

    };

    var M = new $;

    var Ge = W._gat;

    Ge && Aa(Ge._getTracker) ? M = Ge: W._gat = M;

    var Z = new Y;

    var He = function() {

    var a = W._gaq,

    b = l;

    if (a && Aa(a[p]) && (b = "[object Array]" == Object[y][w].call(Object(a)), !b)) {

    Z = a;

    return

    }

    W._gaq = Z;

    b && Z[p][xa](Z, a)

    };

    if (!Fe(He)) {

    I(123);

    var Ie = l,

    Je = function() { ! Ie && Fe(He) && (Ie = h, Ga(K, "webkitvisibilitychange", Je))

    };

    Fa(K, "webkitvisibilitychange", Je)

    };

    function Yc(a) {

    var b = 1,

    c = 0,

    d;

    if (a) {

    b = 0;

    for (d = a[x] - 1; 0 <= d; d--) c = a.charCodeAt(d),

    b = (b << 6 & 268435455) + c + (c << 14),

    c = b & 266338304,

    b = 0 != c ? b ^ c >> 21 : b

    }

    return b

    };

    })();

1212月/12

Google Analytics Tracking Code 跟踪代码分析

发布在 邵珠庆

 

The Google Analytics tracking API consists of two global objects; _gat for standard tracking and _gaq for asynchronous tracking. Both of these global objects contain methods for creating tracker objects. Tracker objects are used to track your pages and they have many methods to configure how that tracking will work.

This page is a complete reference of all the methods available in _gat, _gaq, and tracker objects.

_gat Object Methods

_gaq Object Methods

Tracker Object Methods

1610月/12

Google Analytics 关于社交分析(The Social Relationship)

发布在 邵珠庆

这些天我这边对GA关于社交功能的学习和测试,得到了以下结论:
 
业界主要的社交有两个指标分享量回流量,GA提供了以社交网络来源和社交分享网页两个维度来进行查看详细的分享数据(我们主要使用的两个功能),数据准确度来说GA社交同GA其他功能一样,数据是基本准确的,但对整体流量趋势还是可以作为参考的,GA社交相关统计只要正确部署GA统计代码即可,不需要其他特殊部署方式
个人认为社交功能是对引荐流量的一种细化,将外部的引荐流量中的社交网络单独出来了,目前GA社交功能主要的功能包括:
1、来源(来自哪些社交网络)
社交网络来源->共享网址->完整引荐来源网址
这个功能还是可以帮助我们分析自己网站社交网络的分布和推广情况

问题:且此工具目前统计的流量来源中没有包含腾讯微博、QQ空间、朋友网、花瓣网等这些社交网络平台?

Google已经有很多的社交网络加入,目前我没有找到可以自己定义的社交网络,搜索了大量网上资料,是需要符合社交网络的网站自己向谷歌提交申请通过后才可以显示在社交功能里面    参考网址:https://developers.google.com/analytics/devguides/socialdata/ 

 
2、网页(哪些网页被社交网络分享,并获得回流)
共享网址->社交网络->完整引荐来源网址
可以获取用户比较喜欢分享并获得回流的页面是哪些,通过这些页面分享到的社交网络有哪些,被分享到的社交网络网址是什么
典型的例子:被分享到人人有一篇叫《机场内部人员都是这么定的机票的》 文章带来了较高的社交网络分享回流量
 
3、转化(根据我们设定的转换目标,来查看哪些社交网络带来的转换高)
在社交流量没有达到一定基数时此功能可以暂时先不设定转化
 
4、社交插件(主要是统计一些社交按钮Google[+1]按钮、Facebook[Like]按钮、Twitter[Follow] )
此插件对国内大多数站点基本没太大作用,大多相关社交插件国内都不能访问
 
5、社交访问流(根据社交网络带来的流量查看访问流)

 

 

 

作为一种营销渠道,社交网络的重要性与日俱增。不过,您应当如何衡量社交举措的影响力和效果呢?四个要素决定了您的社交影响力:

 

转化
来源
网页
社交插件
您的
社交影响力

 

  • 来源:随着您的内容在网上传播,吸引人们来到您的网站,您有必要了解不同社交来源的访问者如何与您的网站进行互动。
  • 转化:共享内容网址成为了您的网站的进入点,从各种社交来源为您吸引流量。通过衡量这种流量的转化和货币价值,有助于您了解社交网络对您的业务的影响力。
  • 网页:人们正越来越多地通过社交网络与内容互动、分享它们、讨论它们。您有必要了解哪些网页和内容正在被人们共享、在何处共享以及如何共享。
  • 社交插件:为您的网站添加社交插件按钮(例如 Google“+1”按钮),让您的用户可以直接从您的网站将内容共享到社交网络中。您的社交插件数据可显示哪些内容正在被人们共享,以及此共享活动发生在哪些网络中。

社交报告允许您集中分析所有这些信息,从宏观上了解社交网络如何影响您的业务。

社交报告

概览

通过概览报告,您可以对社交渠道产生的转化价值一目了然。社交价值图表的目的是对比所有达到的目标数量和货币价值,与通过社交引荐达到的目标数量和货币价值。

来自社交引荐的访问可能立即带来转化,也可能间接促成日后的转化。在该图表中,立即带来转化的引荐标为最终互动社交转化。如果来自社交来源的引荐没有立即带来转化,但相应访问者日后返回并发生转化,则该次引荐将被列为辅助社交转化。最好并列参考辅助转化和最终互动转化,这对了解社交网络在业务成效中发挥的作用至关重要。

来源

转到来源部分可查看各种参与度指标(网页浏览量、平均网站停留时间、每次访问页数等),这些指标反映的是来自各个社交网络的流量。通过这种方式,您可以了解哪些社交网络带来了最优质的流量。例如,对于带来的访问虽然不多,但流量的质量却较高的社交网络,您可以考虑增加投资。

来源报告还融入了针对社交数据中心合作伙伴网络的站外数据。点击具体合作伙伴网络,即可查看在该网站上共享的网址、其共享方式(例如通过“+1”或“转发”操作)以及围绕您的内容发生的对话(活动流)。请阅读活动流数据简介,了解此类数据的收集方式。

网页

转到网页部分可查看各种参与度指标(网页浏览量、平均网站停留时间、每次访问页数),这些指标针对的是各个网址。在表中按社交活动排序,可找出您的传播最快的内容。 

点击表中的具体网址可查看该网址的来源社交网络。对于社交数据中心合作伙伴网络,您还可以查看相应网址的站外共享:该网址的共享方式(例如通过“+1”或“转发”操作)、发生共享操作的网络以及发生的对话(活动流)。请阅读活动流数据简介,了解此类数据的收集方式。

转化

通过转化报告,您可以量化社交网络的价值。该报告可显示各个网络的引荐带来的总转化次数及其货币价值。点击辅助转化与最终互动转化对比分析(位于报告顶部的“探索”标签下方),了解各个网络通过“辅助点击”和“最终点击”为转化和收入做出了怎样的贡献。

  • 辅助转化次数辅助转化价值
    此指标是指社交网络辅助促成的销售和转化的数量(和货币价值)。“辅助点击”是指:某用户访问了您的网站,没有发生转化便离开,后来又返回您的网站并在后续访问期间发生了转化。这些数字的值越大,社交网络的辅助作用就越重要。
  • 最终互动转化次数最终互动转化价值
    此指标是指最终点击销售和转化的数量(和货币价值)。当某用户访问您的网站并发生转化时,此次访问就会被视为“最终点击”。这些数字的值越大,社交网络在促进销售和转化方面的作用就越重要。
  • 辅助转化次数/最终互动转化次数
    此比值是对社交网络整体作用的整体反映。接近 0 的值表示社交网络的主要作用是产生最终点击。接近 1 的值表示社交网络在产生辅助点击和最终点击方面作用相当。该值比 1 大得越多,就表示社交网络在产生辅助点击方面发挥的作用越大。

请注意,您必须定义目标和目标价值,然后才能在此报告中看到数据。

社交插件

如果您的网站上有 Google“+1”和 Facebook“赞”(Like) 按钮,那么了解哪些按钮获得了点击以及访问者因为哪些内容而进行点击,就具有重要意义。举例来说,如果您在自己的网站上发表文章,您会希望了解哪些文章最常得到访问者的“赞”或分享,以及访问者通过哪些社交网络(例如,Google+ 或 Facebook)分享这些文章。掌握了这些信息,您就可以创作更多访问者喜欢的内容。此外,如果您发现有些按钮很少使用,可以删除这些按钮,保持简洁。

社交插件报告可显示在您的网站上,哪些文章的共享次数最多,还有用户共享这些文章时使用了哪些社交按钮(例如 Google“+1”或 Facebook“赞”)。

社交访问流

社交访问流可显示各社交网络的访问者进入您的网站的初始路径。例如,如果您投放了宣传特定产品的广告系列,则可以查看来自各社交网络的访问者是否通过这些产品页面进入您的网站、他们是否继续访问了网站的其他版块或他们是否退出了网站。将鼠标悬停在图表上的某个来源(例如 Google+)上,选择仅查看此细分,即可重点关注来自该来源的流量。

设置社交分析报告

要想在报告中看到具体价值,您需要为目标确定价值并/或设置电子商务跟踪。要人工设置非电子商务目标的价值,一个理想的方法是评估达到目标的访问者成为客户的比例。例如,如果您的销售团队能够对提出联系请求的访问者中的 10% 完成销售目标,而您的平均交易额为人民币 500 元,您就可以为“请与我联系”目标指定 50 元(即 500 元的 10%)的价值。相比之下,如果只有 1% 的邮件列表注册用户达成交易,您就可以只为“电子邮件注册”目标指定人民币 5 元的价值。

后续操作

请阅读以下内容,详细了解“社交分析”报告应用实例和使用技巧。

  • 评估社交来源一文介绍了三个比率,您可以利用它们来评估为您带来流量的社交网络的效果。