Google Analytics(分析)中的自定义维度为我们节省了不止一次

通过Google Analytics(GA)设置分析时,通常会忽略用户参数或CD( 自定义维度 )。 这是由于难以理解其范围:目前尚不清楚CD如何帮助收集和分析数据以及如何配置CD。 本文讨论了我们在Adventum中用于许多项目的主要CD,以及安装过程。

什么是用户选项


要在Google Analytics(分析)中生成报告,可以使用200多种不同的参数和指标,例如“来源”,“城市”,“浏览器”,“操作系统”等。 但是标准参数并不总是足以进行分析,因此Google为用户提供了创建自己的功能。 CD的价值可以随用户的需求而转移。 例如,使用自定义参数,您可以在自适应条件下分析网站的效果。

共有4个CD行动领域:

  • 命中
  • 届会
  • 用户名
  • 产品介绍

例如,我们有一张CD,其中存储了用户授权参数(0-未授权,1-已授权)。 在会话开始时,未授权所有用户。 让我们看看在输入后此参数发生变化时会发生什么情况,具体取决于CD的范围。



  • 对于具有Hit范围的CD,将单元分配给发生授权的匹配中的授权参数;
  • 对于具有会话范围的CD,对于发生事件的会话的所有匹配,授权参数将等于1(覆盖此会话中CD的旧值);
  • 对于具有用户范围的CD,对于所有用户会话,授权参数将等于1,从进行登录的会话开始。

有时,您需要分析产品的特性,而Google Analytics(分析)的基本参数并未提供支持,例如,重量。 由于可以一次发送有关多种产品的信息,因此我们将需要一个更详细的范围。 出于这种粒度,使用了“产品”范围:



光盘安装


设置用户参数包括两个步骤:在GA中创建参数和从站点发送数据。 接下来,我们描述设置CD的步骤顺序。

在Google Analytics(分析)中创建CD


  1. 转到“管理员”部分
  2. 在“用户参数”部分的“资源设置”中,选择“特殊参数”子部分:
  3. 点击按钮“ +特殊参数”
  4. 表格打开:

    选择参数范围:

    • 命中
    • 届会
    • 用户名
    • 产品介绍

    并在“活动”对面保留复选标记,以便开始收集数据并使CD反映在报告中。
CD标题建议
我们已经开发了自己的系统来命名用户参数。
在每张CD的开头,我们为示波器添加了一个符号。 对于命中,会话是h_(例如,h_hitId),对于会话来说是s_(例如,s_sessionId)。 这有助于我们浏览用户参数并始终知道其范围,而无需检查计数器设置。 有时有必要创建两个具有相同名称但范围不同的参数。 例如,我们进行A / B测试,并想检查它是否配置正确,在会话期间测试变体是否发生变化。 为此,请创建两个具有相同值的参数:名称+测试版本,用户已进入该参数,但其中一个是第二个会话。 在这种情况下,建议的命名将非常方便。

设置Google跟踪代码管理器


有两种方法可以配置从站点发送参数:

  • 直接通过网站上的HTML代码。
  • 通过Google跟踪代码管理器(GTM)。

对于这两种方法,我们都需要Google Analytics(分析)中的CD索引。 您可以在“特殊设置”部分中看到它:



通过网站上的HTML发送

通过在其中添加custom_map来更新Google Analytics(分析)跟踪代码中资源的配置(您需要添加注释两侧突出显示的内容):

gtag('config', 'GA_MEASUREMENT_ID' , //  { 'custom_map': {'dimension<Index>': 'dimension_name'} } //  ); 

其中GA_MEASUREMENT_ID是您的Google Analytics(分析)计数器标识符。 将<Index>替换为GA中参数的索引,而不是Dimension_name来指定其名称。

如果您有多个用户参数,则必须为每个参数指定'dimension <Index>''dimension_name'

例如:

 gtag('config', 'UA-XXXXXXXXX', { 'custom_map': {'dimension1': 'projectName', 'dimension2': 'hitId', 'dimension3': 'sessionId', 'dimension4': 'screenWindow'} }); 

为了与页面视图一起发送CD,需要在上述代码之前将这些参数分配给所需的值:

 gtag('set', { 'dimension_name': 'dimension_value'}); 

其中Dimension_Name应该与您在“ custom_map”中指定的匹配,而Dimension_value应该是您要传输到CD的值。

例如:

 gtag('set', {'projectName': 'shop', 'hitId': '1121243'}); 

与事件一起发送CD值时,必须发送代码:
 gtag('event', 'action_value', {'event_category': 'category_value', 'event_label': 'label_value', 'value': 'event_value', 'dimension_name': 'dimension_value'}); 

而不是:

action_value-事件动作
category_value-事件类别
label_value-事件标签
event_value-事件值(非负整数)
Dimensions_name-我们在前面的代码中指定的参数的名称
Dimension_Value -CD的值

一个例子:

 gtag('event', 'clickButton', {'event_category': 'conversion', 'event_label': 'registration', 'projectName': 'shop', 'hitId': '1121243'}); 

在我们的项目中,我们使用第二个选项-通过GTM进行调整。 让我们更详细地考虑它。

通过GTM将带有点击数的CD提交给GA

在GA中设置发送CD以及点击数(页面浏览量,事件)是通过“ Google Analytics(分析)设置”类型的变量完成的。 如果您已经配置了此变量,则将其打开。 如果没有,那么您需要创建它。 转到“高级设置”部分的“特殊设置”子部分。 在这里,您必须添加之前在GA中创建的所有用户参数:



跟踪ID必须包含GA计数器编号。 在“索引”字段中,写入您要将GA数据传输到的CD的标识符。

在“参数值”字段中,必须指定将使用指定的索引传输到CD的值。 可以通过两种方式指定此值:

  • 手动(如果所有事件都相同);
  • 使用存储该参数值的变量(其名称写在双大括号中)。 例如,{{SCREEN_WINDOW}}-“浏览器窗口大小”。



使用此用户参数设置,重要的是要考虑:

  1. 首次处理代码时,将不会创建具有Google用户ID(clientID)的cookie。 如果要配置此参数到CD的传输,则在第一次查看页面时将无法执行此操作。
  2. 如果要在将数据发送到不同的用户参数时使用相同的变量,则将针对每个用户参数再次计算该变量。 例如,当将标签处理时间标签发送给两个不同的用户参数时,您可能会注意到几毫秒的值差异。

您可以使用customTask避免这些困难。

使用customTask


customTask是具有最高优先级的函数,您可以自行定义其代码和逻辑。 不久前,Google提供了在GTM中使用此功能的机会。

customTask使用来自模型对象(包括跟踪计数器的所有字段),cookie等的数据。 该功能的优先级高于所有其他功能的优先级,并且对标签有效。 因此,您可以从第一次查看页面开始配置用户ID的发送。

要通过customTask配置CD,请创建一个名称为JS_customTask且类型为“本地JavaScript代码”的GTM变量:



现在,在“要设置的字段”部分中,将我们创建的JS_customTask添加到Google Analytics(分析)设置变量中:

  • 在“字段名称”中,编写customTask
  • 在“值”中,写下我们在上面创建的变量的名称。 所有变量必须用大括号括起来。



GTM标签中只能定义一个customTask。 因此,可以通过此方法确定的所有CD都将写入先前创建的JS_customTask变量中。

常用CD


用户名


挑战。 计数器记录了会话数的大幅增长。 同时,用户数量略有增长。 关于机器人流量的假设来自某些用户。 默认情况下,无法以方便的格式查看GA中各个用户的特征。

解决方法。 Google Analytics(分析)为站点的每个访问者分配一个唯一的标识符-客户ID。 您只能在一个报告-“用户统计信息”(用户浏览器)中在Google Analytics(分析)界面中看到它。 使用它很不方便,因为在一个屏幕上您只能看到一个用户的操作顺序,并且不能在报表中添加其他参数。

理想的解决方案是能够在标准报告或用户报告中将clientID显示为单独的参数。 这可以使用GTM来完成。

技术设置。 作为ClientId,我们使用GA中用户ID的数字序列(它存储在名为_ga的cookie中。例如,_ga = GA1.2.1111111111.111111111,其中ClientId = 111111111.111111111)。 要查看此值,请右键单击站点页面,然后选择“查看代码”:



然后,在“应用程序”选项卡的左侧菜单中,选择“ Cookies”和站点名称,然后在表中查找_ga变量:



除cookie外,GA用户ID还存储在模型对象中,可以使用.get('clientId')方法进行检索。 我们使用customTask检索此值并将其传递给GA。 将以下代码添加到名为JS_customTask的变量中:

 function() { var customDimensionIndex_client = 5; return function(model) { model.set('dimension' + customDimensionIndex_client, model.get('clientId')); } } 

在变量customDimensionIndex_client的等号后,您需要指定GA中与ClientId对应的CD索引。 这样,我们从计数器中获得了客户端ID,并将其发送给用户参数。

结果。 我们针对单个用户建立了一个报告,发现其中一些实际上有1000个会话。 所有会议的跳出率均为100%,显然对我们没有任何价值。 我们设置了细分以排除这些用户,并且能够分析流量动态,而无需不必要的访问。

命中编号


挑战。 您需要查看用户在网站上的行为,他执行的操作以及执行的顺序。 基于这些数据,可以提出业务发展的假设。

解决方法。 在每个会话中创建带有用户命中编号的CD。 按照点击次数的升序排序,我们可以看到用户的方式。

技术设置。 为了方便起见,作为HitId,我们以时间戳格式传递ClientId和命中时间。 因此,对于每个事件,页面视图,事务都会有一个值。 可以通过customTask配置此参数(类似于ClientId)。

单个GTM标签中只能定义一个customTask。 因此,我们在前面创建的“ Custom JavaScript”变量中添加了用注释在两侧突出显示的代码,其中来自GA的名为h_HitId的CD索引将存储在变量customDimensionIndex_hit中:

 function() { var customDimensionIndex_client = 5; //    var customDimensionIndex_hit = 2; var now = new Date(); //    return function(model) { model.set('dimension' + customDimensionIndex_client, model.get('clientId')); //    model.set('dimension' + customDimensionIndex_hit, model.get('clientId').concat('_', now.getTime())); //    } } 

参数类型为命中。 由于它还包含时间戳格式的时间,因此可以按执行顺序对所有用户/会话匹配进行排序,而无需使用其他参数。

如果您进行完全相同的设置,则仅在GA中选择参数的范围-会话,然后我们将获得一张CD,其中将存储用户的会话标识符。

结果。 建立了两个报告:

  • 用户标识符,匹配标识符,事件类别,事件操作,事件标签,添加。 参数。
  • 用户ID,匹配ID,添加。 参数。

然后,他们从GA卸载了这些数据,然后将它们合并到Excel(或数据库)中。 如果我们按ClientId然后按HitId对行进行排序,则将获得站点上每个用户的路径。 现在,我们可以创建数据透视表并对其进行可视化。

A / B测试


挑战。 该公司决定进行AB测试。 设置是由开发人员进行的,没有使用Google Optimize。 问题出现了:如何将测试选项转移到Google Analytics(分析)以分析实验的有效性。

解决方法。 在这种情况下,CD将帮助我们比较GA中的测试结果。 配置一个用户参数就足够了,该参数将使用带有测试标识符和用户所属选项的值。 因此,我们可以根据测试选项将受众分为几类,并比较结果。

技术设置。 在GA中创建自定义参数,类似于我们之前配置的参数。 我们选择“范围”(命中),以便可以在进行测试之前和之后将事件划分为用户提交的事件。 调用它,例如h_AB-Test。 一次可以通过多个测试将数据传输到CD。 您可以使用测试名称和版本中未出现的符号来分隔它们,例如“ |”。

如果您自己进行测试并将有关数据存储在Cookie中,则需要使用“本地JavaScript代码”之类的变量来提取它们:

 function(){ var cookie_name ='{{test_variant}}'; var matches = document.cookie.match(new RegExp( "(?:^|; )" + cookie_name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : '(not set)'; } 

您必须指定存储测试名称和变体的Cookie的名称,而不是{{test_variant}}。 不要忘记将其添加到GA设置变量中。

通过向报表添加h_AB-Test参数,我们将在Google Analytics(分析)中看到会话所属的测试选项。 根据此参数的值,您可以细分用户。

结果。 我们创建的段数与条件h_AB-Test的测试用例一样多。 它必须与值“名称+测试用例”匹配。 我们在报告中查看了我们感兴趣的事件。

整页地址


挑战。 上下文广告经理在Yandex.Direct中发起了一个广告活动。 几天后,他查看了Google Analytics(分析)来源报告,发现他创建的广告活动带来的用户会话次数远远少于Yandex.Direct中的广告点击次数。

解决方法。 Google Analytics(分析)具有用于跟踪广告的必需参数-utm_source。 如果是,则将其值添加到标准参数“广告系列来源”。 同样,Google会与其他UTM标签一起记录相应的参数。

所有UTM标签都会自动从网站页面上的报告中删除,您无法在那里进行分析。 在这种情况下,如果未设置utm_source标签,则Google只会删除在页面上的报告中找到的所有UTM标签,并且不会将其内容记录在相应的内置参数中。

即使广告配置不正确,我们也会使用全页地址配置参数以查看所有标签。 我们称之为h_fullPage。

技术设置。 让我们在“全局变量名称”部分中创建一个类型为“ JavaScript变量”的变量,并指定document.URL:



由于变量集的范围-命中。

结果。 在整个广告系列中使用了以下UTM标签序列:utm_medium,utm_source,utm_campaign。 查看页面的完整地址后,我们注意到utm_medium和utm_source之间的广告之间跳过了&符。 由于utm_source是任何广告系列的必需utm标签,并且Google Analytics(分析)没有在特殊字符(?,&)之后找到它,因此该广告的点击记录为直接点击。 由于使用了h_fullPage参数,可以检测到问题并将其修复在广告面板的设置中。

活动选项


另外两个有用的参数(没有设置说明):

  • 挑战。 我们通过GTM自行标记网站。 发现了一个错误,迅速将其修复,但带有错误的事件继续到达GA。

    解决方法。 为了快速找到问题的根源,您可以将每个事件的CD转移:
    容器的名称(如果站点上有多个容器)-内置变量GTM;
    容器版本是GTM内置变量;
    标签名称-您需要自行配置。

    您可以通过“常量”类型的变量中的任何分隔符传递这三个参数:



    该参数的范围已命中。

    结果。 使用配置的变量,我们发现某些用户仍然具有旧版本的容器,因此事件继续发送。 用户很可能根本没有刷新页面或页面已被缓存,因此您需要稍等一下。
  • 挑战。 我们通过开发人员标记该站点。 他们介绍了我们写的新指令。 检查后,发现某些事件发送有错误。
    重要说明:

    • 当我们在测试现场检查事件时,请勿将测试事件发送到GA工作视图;
    • 如果在展开战斗后我们发现我们检查了标记错误的事件/在网站更新后出现问题,重要的是迅速停止将事件发送到工作视图。

    解决方法。 我们会将事件划分为新事件/不正确工作并正确标记。 第一个可以标记为测试,第二个可以标记为prod。

    为此,让开发人员将数据添加到dataLayer,我们将获取数据并将其发送到GA。 任何推送将如下所示:

     <script> dataLayer.push({ 'event': '{{ }}', 'event_id': '{{id }}', 'eventCategory': '{{ }}', 'eventAction': '{{  }}', 'eventLabel': '{{ }}', }); </script> 

    在大括号中的是在开发人员方面存储数据的变量的名称。

    我们将需要创建“查找表”变量来分隔事件:



    {{event_id}}是一个变量,用于从DataLayer检索事件标识符。

    我们在“设置默认值”前面和“默认值”列中写一个复选标记。 因此,最初对于所有事件,此变量将等于test。 确保正确标记了事件后,将其event_id添加到“输入”单元格。 在“结果”字段中,我们发送产品。

    因此,我们将所有事件分为正确标记和新标记/错误标记。 我们建议您在Google Analytics(分析)中创建一个单独的视图,在该视图中只会有带有prod标签的事件(可以使用“视图”过滤器来完成),在此您只会看到正确标记的事件。

    结果。 由于消除了指令中事件标记的错误,因此我们将GTM中这些事件的参数值从测试更改为生产。 由于有了此参数,我们仅在报告中包括带有标签prod的正确标记的事件。

自定义维度的功能广泛,并且不限于所描述的配置和应用方法。 对于每种类型的业务,分析和假设,您都可以找到自己的用户定义参数应用程序,并且所描述的配置方法将有助于简化此过程。

Source: https://habr.com/ru/post/zh-CN468079/


All Articles