自定义变量是可插入到跟踪代码中以优化 Google Analytics(分析)跟踪的名称/值对标记。借助自定义变量,您可以定义除了 Google Analytics(分析)已提供的访问者细分之外的其他细分。本文档介绍了自定义变量以及如何设置它们。
概览
了解 Google Analytics(分析)中使用的基本访问者互动模型后,您就可以充分利用自定义变量。在此模型中,访问者在一段时间内与您的内容互动,与您网站的互动被划分为一个层级结构。
该图显示了访问您网站的单个访问者的模型,其中每个方块代表用户会话数和来自特定用户的互动。
此模型中的每个级别定义如下:
- 访问者 - 访问网站的客户端,如用户操作的浏览器或手机。
- 会话 - 访问者在网站上处于活动状态的时间段。
- 网页 - 代表用户向 Google Analytics(分析)服务器发送 GIF 请求的活动。
这类情况通常以网页浏览量为特征,但也可能包括:
- 网页浏览
- 事件(例如,点击某个电影按钮)
这三个互动级别中的每一个都定义了一个具体的访问者互动范围。 这种区别对自定义变量来说非常重要,因为每个自定义变量都被限制在一个特定范围内。 例如,您可能想知道访问者从其购物车中移除了商品的会话数。对于这种特定情况,您可以在会话一级定义该自定义变量,以便将该访问者的整个会话标记为从在线购物车中移除物品。
使用自定义变量
由于您可以设置各种自定义变量来跟踪网站的用户活动,因此您通常会创建自己的 JavaScript 实用程序来管理它们。您的脚本将使用基本的自定义变量创建方法,如下所示:
_setCustomVar(index, name, value, opt_scope)
此方法接受四个参数:
- index - 自定义变量的位置。必需。此参数的值介于
1
-5
(含)之间。自定义变量应仅放置在 1 个位置,不得在不同位置重复使用。 - name - 自定义变量的名称。必需。这是一个字符串,用于标识自定义变量并显示在 Google Analytics(分析)报告的顶级“自定义变量”报告中。
- value - 自定义变量的值。必需。这是一个与名称配对的字符串。您可以将多个值与一个自定义变量名称配对。该值会显示在所选变量名称的界面表格列表中。通常,指定名称有两个或更多值。例如,您可以定义一个自定义变量名称
gender
,并提供male
和female
两个可能的值。 - opt_scope - 自定义变量的范围。可选。如上所述,范围定义了用户与您网站的互动情况。此变量是一个数字,可能的值包括
1
(访问者级)、2
(会话级)或3
(网页级)。如果未定义,则自定义变量范围默认为网页级互动。
以下代码段说明了如何设置自定义变量,以跟踪用户从购物车中移除商品的访问行为。此处,_setCustomVar()
方法会在 _trackEvent()
方法之前调用,这样便会在通过 _trackEvent()
方法发送的 GIF 请求中传递。它使用名称 Items Removed
和值 Yes
来定义网站用户的相应活动。此外,还应该为 Items Removed
和 No
设置默认自定义变量。这样,您就可以获得从购物车中移除商品的访问计数,以及未移除商品的访问计数。
异步代码段(推荐)
_gaq.push(['_setCustomVar', 1, // This custom var is set to slot #1. Required parameter. 'Items Removed', // The name acts as a kind of category for the user activity. Required parameter. 'Yes', // This value of the custom variable. Required parameter. 2 // Sets the scope to session-level. Optional parameter. ]); _gaq.push(['_trackEvent', 'Shopping', // category of activity 'Item Removal', // Action ]);
设置自定义变量后,您可以使用 _deleteCustomVar(index)
方法移除自定义变量。
实际应用示例
可通过多种不同的方式实现自定义变量,具体取决于您的网站模型和业务需求。这些示例探索了不同的用例,其中每个用例都说明了不同级别的范围:
网页级自定义变量
使用页面级自定义变量为您的用户定义一组网页级活动。
例如,假设您管理一家在线报纸的网站,访问者在该网站上查看许多不同的文章。虽然很容易确定哪些特定文章最受欢迎,但现在您还可以使用自定义变量来确定报纸的哪些“版块”是热门的。具体方法是在每篇文章的网页级设置自定义变量,并将相应文章部分设置为自定义变量。例如,您可能拥有生活与时尚、观点和商业等版块。您可以设置一个自定义变量来跟踪各个版块的文章。
异步代码段(推荐)
_gaq.push(['_setCustomVar', 1, // This custom var is set to slot #1. Required parameter. 'Section', // The top-level name for your online content categories. Required parameter. 'Life & Style', // Sets the value of "Section" to "Life & Style" for this particular aricle. Required parameter. 3 // Sets the scope to page-level. Optional parameter. ]);
让我们继续讨论此示例,并假设您不仅想为特定文章的版块添加标签,还要为子版块添加标签。例如,报纸的生活与时尚版块也可能有多个子版块,如“食品与饮料”、“时尚”和“体育”。 因此,您可以跟踪特定版块和子版块。 您可以设置附加自定义变量以按子板块跟踪所有文章。
异步代码段(推荐)
_gaq.push(['_setCustomVar', 2, // This custom var is set to slot #2. Required parameter. 'Sub-Section', // The 2nd-level name for your online content categories. Required parameter. 'Fashion', // Sets the value of "Sub-section" to "Fashion" for this particular article. Required parameter. 3 // Sets the scope to page-level. Optional parameter. ]);
在此示例中,您为单个网页同时设置了两个网页级自定义变量。对于任何单个网页,您最多可以跟踪 5 个自定义变量,且每个变量都具有单独的插槽。这意味着,您可以在同一网页上另外分配 3 个自定义变量。对于您网站上的所有文章,您可以设置一组网页级自定义变量,以按各种版块和子版块跟踪它们。如需详细了解如何正确使用网页级自定义变量,请参阅下文中的使用指南。
会话级自定义变量
使用会话级自定义变量可跨会话区分不同的访问者体验。
例如,如果您的网站为用户提供登录功能,您可以针对用户登录状态使用会话级自定义变量。这样,您就可以根据已登录的成员与匿名访问者的访问,对访问进行细分。
异步代码段(推荐)
_gaq.push(['_setCustomVar', 1, // This custom var is set to slot #1. Required parameter. 'User Type', // The name of the custom variable. Required parameter. 'Member', // Sets the value of "User Type" to "Member" or "Visitor" depending on status. Required parameter. 2 // Sets the scope to session-level. Optional parameter. ]);
假设您想同时跟踪用户类型以及给定会话期间是否发生购买尝试。如果我们假设每个网页都为用户提供登录功能,我们要为 User Type 自定义变量预留广告位 1,并尝试使用另一个广告位进行购买交易:
异步代码段(推荐)
_gaq.push(['_setCustomVar', 2, // This custom var is set to slot #2. Required parameter. 'Shopping Attempts', // The name of the custom variable. Required parameter. 'Yes', // The value of the custom variable. Required parameter. // (you might set this value by default to No) 2 // Sets the scope to session-level. Optional parameter. ]);
访问者级自定义变量
使用访问者级自定义变量可区分多个会话的访问者类别。
例如,如果您的网站为付费订阅者提供付费内容,您可以设置访问级自定义变量,分析哪些用户是付费会员、处于何种付款水平,以及哪些用户正在使用该网站的免费服务等级。您可能会将此自定义变量设置为一次性函数,因为该值会在访问者 Cookie 的整个生命周期内持续存在。
异步代码段(推荐)
_gaq.push(['_setCustomVar', 1, // This custom var is set to slot #1. Required parameter. 'Member Type', // The name of the custom variable. Required parameter. 'Premium', // The value of the custom variable. Required parameter. // (possible values might be Free, Bronze, Gold, and Platinum) 1 // Sets the scope to visitor-level. Optional parameter. ]);
使用指南
本部分介绍了不同类型的自定义变量之间的区别以及如何正确使用它们:
自定义变量类型
下表定义了不同变量类型的关键特性。请注意,当不同的变量使用相同的槽时,存在某些限制。
任何自定义变量名称和值的总长度不能超过 128 个字符。
时长 | 与其他变量共享槽时 | 所允许的数量 | |
---|---|---|---|
页面级 | 单个网页浏览、事件或交易调用。 |
要在网页上调用的最后一个网页级变量是应用于该网页的变量。 | 对于任何网络媒体资源(网页集合),可以设置许多唯一的网页级变量,并且可以重复使用广告位。仅受给定会话中命中次数的限制。 对于任何单个网页,您最多可同时设置 5 个自定义变量。 |
会话级 |
访问者的当前会话。 |
会话中调用的最后一个会话级变量就是用于该会话的变量。 覆盖在同一会话中调用的任何先前设置的网页级变量。 |
对于任何网站媒体资源,您可以创建任意数量的不同会话级自定义变量(可使用 128 个字符的键值对限制来定义)。 对于任何给定的用户会话,您可以设置最多五个会话级变量。 |
访问者级 | 访问者 Cookie 的当前会话及其生命周期内所有将来的会话。 |
为某个访问者设置的最后一个值就是应用于当前及将来的会话的值。 |
对于任何网站媒体资源,您最多可以创建五个不同的访问者级变量。 |
混用不同类型的变量时须小心
通常,不建议将同一自定义变量位与不同类型的变量混合使用,因为这样可能会导致计算指标奇怪。
为网站媒体资源使用多个网页级、会话级和访问者级自定义变量时,您需要谨慎确定槽的重复使用情况。如果您的网站在设置了网页级变量或网页级自定义变量的情况下同时使用同一广告位,系统将仅记录会话级(或网页级)变量。
以下场景显示了由同一浏览器上的单个用户设置的网页级、会话级和访问者级变量的混合用例。 在每个示例中,位置由括号中的数字指示,S: 指示变量的范围。
示例 1 - 最终的会话级变量优先级最高
在本例中,最后一个网页重复使用了广告位 1 中的会话级自定义变量,因此它的优先级较高。
访问 1 | 第 1 页 (1) S:网页级 section=opinion |
第 2 页 (1) S:会话级 login=true |
第 3 页 (1) S:会话级 converted=true |
---|
访问报告是:
- # visits for section=opinion: 0
- # visits for login=true: 0
- # visits for converted=true: 1
示例 2 - 最初的访问者级变量优先级最高
在本例中,位置 1 首先由访问者级自定义变量在第一次访问时使用,然后由网页级自定义变量在第三次访问时使用。按此顺序,访问者级变量不会覆盖网页级变量。
第 1 次访问 | 第 1 页 (1) S:访问者级 gender=male |
---|---|
第 2 次访问 |
第 1 页 (2) S:会话级 converted=false |
第 3 次访问 |
第 1 页 (1) S:网页级 section=opinion |
访问报告是:
- # visits for gender=male: 2
- # visits for converted=false: 1
- # visits for section=opinion: 1
推荐做法
- 不要为各个槽使用重复的键名称。
- 如果可以在网页浏览或事件 GIF 请求之前设置
_setCustomVar()
函数,请调用该函数。
在某些情况下,可能无法这样做,您需要在设置自定义变量之后再设置一次_trackPageview()
请求。通常,只有在用户触发会话级或访问级自定义变量(无法将其与网页浏览、事件或电子商务跟踪调用进行捆绑)的情况下,才需要执行此操作。 - 使用槽矩阵跟踪大量自定义变量。
如果您有复杂的跟踪要求,其中混合了可能存在冲突的网页级变量和会话级变量,则您应构建槽矩阵,以确保会话级变量不会无意中覆盖网页级变量。 - 考虑为某些应用使用事件跟踪,而不是自定义变量。
例如,假设您有一家在线音乐商店,并且要跟踪登录会话、购买尝试会话以及播放音乐示例的会话。建议您使用事件跟踪来跟踪尝试播放音乐的次数,而不是使用会话级变量来实现这一目标。在这里,您可以使用事件跟踪调用的第 4 个值参数从您自己的 Cookie 传入会话数据。 - 请勿使用会话级变量跟踪您可以使用网页级变量跟踪的行为。
例如,假设您按会话跟踪登录状态和购物尝试状态,并且您的网站提供了一个同时想跟踪的“会员”特殊页面。由于网页级自定义变量将显示对该变量的访问次数,因此您已至少有一次包含该网页的访问次数。