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>
上面的代码中,把#
换成你的链接,把category
、action
、label
、value
、true
按照说明换成相应参数(有的是可选的)。
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 这个词作为最后一个参数(同时也是可选参数)出现,它是一个布尔变量(只能设置为 true
或 false
)。这个变量允许你决定网站中包含事件追踪的页面的跳出率的定义。例如,你的主页有一个视频嵌入其中。你很可能想要知道主页的跳出率,但是你想如何定义它?你是否想把访问者观看视频作为一个参与的信号?是的话,你将希望把观看视频加入到跳出率的计算中——这样一来只访问主页,但却看了视频的访问是不算跳出的。相反,如果你想得到更加严格意义上的“跳出率”,那么你会希望把所有只访问主页(而不管是否观看了视频)的访问都计算到跳出率中。
这就是 opt_noninteration 参数负责的地方。按照默认设置(false
),事件属于“互动事件”,即触发事件追踪的访问是不算作跳出访问的。如果这个参数设置为 true
,这类事件就算作“非互动事件”,触发事件而只访问一页也算作跳出访问。所以你可以用这个参数来校正页面跳出率的计算方法。
计算方法
报表中,Total Events 计算的是总事件数。如果一个用户的一次访问中触发了多次事件,那么这在报表中将被体现为一次“包含事件的访问(Visit w/Event)”或“独立事件(Unique Event)”。
下表展示了数据是如何处理的。在这个例子中,两个视频播放器使用了同一个类别,每个播放器有一个标签。这些播放器都有 Play、Stop 动作。
Action Type | Label: "Gone With the Wind" | Label: "Mr Smith Goes to Washington" | Totals |
---|---|---|---|
Play | 10 visits w/Event | 5 visits w/Event | 15 unique events "Play" |
Pause | 2 visits w/Event | 8 visits w/Event | 10 unique events "Pause" |
Stop | 2 visits w/Event | 3 visits w/Event | 5 unique events "Stop" |
总计 | 14 unique events for GWTW | 16 unique events for Mr Smith | 30 unique events for category "videos" |
上表假设每次访问中,访问者使用 Gone with the wind 和 Mr Smith goes to Washington 是独立的。然而下表展示了更复杂、更典型的情况下事件的计算方法。有些访客只在一个视频中按下 Play 按钮,而其它访客在一次访问中会使用多个视频。
Action Type | Label: "Gone With the Wind" | Label: "Mr Smith Goes to Washington" | Totals |
---|---|---|---|
Play | 10 visits w/event | 10 unique events "Play" | |
Play | 5 visits w/event | 5 unique events "Play" | |
Play | 1 visit w/event on BOTH movies (two clicks on "Play") | 1 unique event "Play" | |
总计 | 11 unique play events for GWTW | 6 unique play events for Mr Smith | 16 unique events for category "Videos" and 16 unique events for action "Play" |
我们注意到总计是 16 次事件而非 17 次,这是符合事实的。
注意
每次访问有 500 次请求的限制(包括事件和页面浏览)。所以要注意这一点,不要设置容易发生很多次的事件(例如鼠标经过触发事件),以免影响统计。