Google Analytics “事件追踪” 功能使用详解

Google Developers 网站专门介绍了 Google Analytics 的 Event Tracking 的使用方法,但是它还没有中文版的,我大概翻译并整理了一下,形成这篇文章。

简介

事件追踪是 ga.js 跟踪代码中提供的一个方法,你可以追踪访客和网站的互动,尤其是追踪那些不产生新页面的访问行为(例如下载文件)。事件追踪在 Google Analytics 中单独有一个报表来显示数据,并且和 pageview 数据不互相影响。

使用事件追踪,最新的 Google Analytics 异步统计代码就可以使用,不用修改或添加内容。

设置事件追踪

利用 _trackEvent() 方法来进行事件追踪。它的详细参数如下:

_trackEvent(category, action, opt_label, opt_value, opt_noninteraction)
  • category(必需):类别
  • action(必需):和用户的行为对应,例如“下载”
  • label:标签,其他有关信息
  • value:提供数值型数据
  • non-interaction:布尔值。如果设定为 true,表明这个事件不会参与跳出率的计算(详见后文)

如果你在链接中使用事件追踪,那么再简单不过了。给需要追踪的链接调用_trackEvent()方法并设置参数。例如:

<a href="#" onclick="_gaq.push(['_trackEvent', 'category', 'action', 'label', 'value', 'true']);">link_name</a>

上面的代码中,把#换成你的链接,把categoryactionlabelvaluetrue按照说明换成相应参数(有的是可选的)。

Event Tracking 详解

下面将详细介绍 Event Tracking 所包含的参数。

Categories(类别)

Category 是事件追踪的根分类,用于划分事件类别,是必须的参数。一个典型情况就是,使用同一个 Category 名称,其中包含许多不同的动作。例如,你想跟踪一个视频播放工具的使用情况,需要用到:

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Pause', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Stop', 'Gone With the Wind']);

假设你也想跟踪视频被下载了多少次,你可以使用:

_gaq.push(['_trackEvent', 'Videos', 'Downloaded', 'Gone With the Wind']);

在这种情况下,只有一个 Category — Videos 在报告里出现,你可以查看 Video 下事件发生次数的总计。

然而,很可能你有多个 Category 需要追踪,这时你应该考虑好你要怎么组织报表,然后再在你的网站插入代码。例如,你想把所有的不同视频都放在 Video 这个分类下,因为这样你就可以看有关“视频”的总计事件发生次数了(而不管具体是哪个视频)。

另一方面,你也可能会建立不同的 Categories 来划分不同类型的视频——电影、音乐,以及一个单独的 Category 负责“下载”。那么,你需要三个 Category:

  • Videos - Movies
  • Videos - Music
  • Downloads

这种情况下,你可以查看这三个类别的“事件总数”(在 Total Events 报表),此报表会显示所有 Categories 的所有事件。然而你不能排除 Downloads 而单独查看所有 Videos 的事件数,因为只有各自 Category 内才能查看详细内容。

所以,你应该先规划好你需要的报表的结构,再使用 _trackEvent() 方法进行跟踪统计。注意:Category 的名字必须保持一致。例如你之前使用 Video 作为类别,一段时间后添加新的代码时误用了 Videos,那么你的报表将同时出现这两个类别,并且他们是不能合并的。

Actions(动作)

这个参数也是必要的,是_trackEvent() 方法的第二个参数。一般来说你用这个参数定义事件的类型或动作的名称。例如,对于一个 Videos 类别,你可以指定不同的动作,类似播放、停止、暂停,以及“视频加载时间”。

和 Categories 一样,Actions 的命名也是自定的。但是注意 Actions 在报表中的两个特点:

  • 所有的 Actions 都是独立于他们从属的 Category 而列出的。(有点类似于 WordPress 中的“标签”系统——这给了你另一种划分事件数据的方法)
  • 一个独立事件是以一个独立的 Action 名称划分的。(你可以在不同的 Categories 中使用相同的事件)详情请看后文“计算方法”。

为了更好地管理大量事件,请注意下列关于 Actions 的建议:

Action 名称应该与你的报表数据相关。

  • Event Tracking(事件追踪)会把不同 Categories 下的相同 Action 的事件合并。例如,如果你用 Click 同时作为 Download 类别以及 Video 类别下的某一 Action 名称,那么在 Top Actions 报表中 Click 的数据将是两个类别中 Click 数据的总和。你可以进一步把 Click 动作按类别划分。然而,如果你滥用 Click 作为动作名称,上述分层次浏览方式的有效性就会被削弱。

使用 Action 名称的两种方式。

  • 方式一:例如,你把 Play 作为动作名称应用到所有的视频中。这时,你可以浏览所有 Play 的事件数,也可以把 Play 和其他类似动作(如 Pause)进行比较。
  • 方式二:假设你只想建立一个 Videos 类别,但是想追踪不同类型的事件。这是你可以使用不同的 Action 名称来区分(例如分别建立 Play - Mac,Play - Windows 两个动作)。

Actions 并不总是意味着“动作”。

  • 一切都是根据你的需要出发,你可以给这些参数指定任意字串作为名称。例如,你想追踪下载,那么 Actions 就可以命名为 pdf, doc, zip,这样一来,你的 “下载” 类别就可以根据不同文件类型进行细分。

独立事件数是根据独立的 actions 来计算的。

  • 一个访客触发了某 action 的事件,这个 action 的 “独立事件数” 会增加。但是此后该访客触发任何同一action 的事件是不会增加 “独立事件” 数目的(即使该访客后来是在别的地方触发,只要还是之前的 action,就如此)。这会在报表中带来两个值得注意的结果。第一,假设一个使用者从两个不同的视频播放器分别触发了两个 Category 下的同一 Play 动作,“Top Actions” 报表中 Play 将会计算一次独立事件。第二,针对每个 Category 的 “Action” 报表都会分别记录一次独立事件(详情见后文“计算方法”)。

Labels(标签)

“Label” 这个词是事件追踪 _trackEvent() 方法的第三个参数,而且不是必须的。你可以利用 Labels 来设定更多的信息,比如视频的名字,或者下载文件的名称。

_gaq.push(['_trackEvent', 'Downloads', 'PDF', '/salesForms/orderForm1.pdf']);

就像 Categories 和 Actions 一样,所有 Labels 在报表中都有独自的显示空间。你可以把 Labels 看作是对事件进行分类的另一个角度。例如,你在网页中有五个播放器,你想跟踪它们的使用情况。每个播放器都可以使用 Videos 这个类别,以及 Play 这个动作;但是每个播放器都有不同的 Label(例如视频名称),这样一来它们在报表中就可以区分出来了。

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Huckleberry Finn']);

Values(数值)

Value 是第四个,也是可选的参数。这个参数和其他几个的不同在于它是整数型而非字串,所以它用来给被跟踪的对象定义一个“数值型”属性。例如,你可以用它来提供一个播放器加载所消耗的秒数。

_gaq.push(['_trackEvent', 'Videos', 'Video Load Time', 'Gone With the Wind', downloadTime]);

这个参数是一个非负数值,所以报表可以把 Values 加和,并进一步求平均值。在上例中, Video Load Time 动作在视频加载完毕后触发,并执行 _trackEvent() 方法。标签就是视频的名字,每次视频加载完毕后由系统以某种方式计算出加载时间,然后通知 Google。经过统计,你便可以得到平均加载时间。假设你有 5 次不同的下载,每次的秒数分别为 10、25、8、5、5,那么报表会计算出总和为 53,平均为 10.6。

Non-Ineraction 事件

Non-interation 这个词作为最后一个参数(同时也是可选参数)出现,它是一个布尔变量(只能设置为 truefalse)。这个变量允许你决定网站中包含事件追踪的页面的跳出率的定义。例如,你的主页有一个视频嵌入其中。你很可能想要知道主页的跳出率,但是你想如何定义它?你是否想把访问者观看视频作为一个参与的信号?是的话,你将希望把观看视频加入到跳出率的计算中——这样一来只访问主页,但却看了视频的访问是不算跳出的。相反,如果你想得到更加严格意义上的“跳出率”,那么你会希望把所有只访问主页(而不管是否观看了视频)的访问都计算到跳出率中。

这就是 opt_noninteration 参数负责的地方。按照默认设置(false),事件属于“互动事件”,即触发事件追踪的访问是不算作跳出访问的。如果这个参数设置为 true,这类事件就算作“非互动事件”,触发事件而只访问一页也算作跳出访问。所以你可以用这个参数来校正页面跳出率的计算方法。

计算方法

报表中,Total Events 计算的是总事件数。如果一个用户的一次访问中触发了多次事件,那么这在报表中将被体现为一次“包含事件的访问(Visit w/Event)”或“独立事件(Unique Event)”。

下表展示了数据是如何处理的。在这个例子中,两个视频播放器使用了同一个类别,每个播放器有一个标签。这些播放器都有 Play、Stop 动作。

Action TypeLabel: "Gone With the Wind"Label: "Mr Smith Goes to Washington"Totals
Play10 visits w/Event5 visits w/Event15 unique events "Play"
Pause2 visits w/Event8 visits w/Event10 unique events "Pause"
Stop2 visits w/Event3 visits w/Event5 unique events "Stop"
总计14 unique events for GWTW16 unique events for Mr Smith30 unique events for category "videos"

上表假设每次访问中,访问者使用 Gone with the wind 和 Mr Smith goes to Washington 是独立的。然而下表展示了更复杂、更典型的情况下事件的计算方法。有些访客只在一个视频中按下 Play 按钮,而其它访客在一次访问中会使用多个视频。

Action TypeLabel: "Gone With the Wind"Label: "Mr Smith Goes to Washington"Totals
Play10 visits w/event10 unique events "Play"
Play5 visits w/event5 unique events "Play"
Play1 visit w/event on BOTH movies (two clicks on "Play")1 unique event "Play"
总计11 unique play events for GWTW6 unique play events for Mr Smith16 unique events for category "Videos" and 16 unique events for action "Play"

我们注意到总计是 16 次事件而非 17 次,这是符合事实的。

注意

每次访问有 500 次请求的限制(包括事件和页面浏览)。所以要注意这一点,不要设置容易发生很多次的事件(例如鼠标经过触发事件),以免影响统计。

本文作者为,最后修订于

讨论