详解设计埋点过程中的“who when where how what”

5 评论 4396 浏览 33 收藏 14 分钟

继《如何用数据驱动产品迭代》之后,埋点设计的问题引起了很多朋友的兴趣,本篇文章将通过埋点设计的知识介绍,让人们了解设计埋点过程中的“who when where how what”。

上次写了一篇《如何用数据驱动产品迭代》,其中提到了一点设计埋点的方法,很多朋友留言说需要设计埋点的指南,像我这种从来不拒需求的人,这两天下班闲下来之后就整理了一下埋点设计的一些知识,希望能有所帮助。

在诸多招聘 JD 中提到的数据分析能力,主要是数据利用能力,利用数据的前提是有数据,并且在真正做数据分析的时候,经常会出现数据不足的情况,需要通过设计埋点去采集,当你有数据需求的时候,连需求都不知道怎么提,这岂不是产品经理最大的悲哀。

所以我们不仅要学会利用数据,更要知道如何通过埋点来采集数据,接下来说一说如何设计埋点。

一、想清楚为什么埋

1. 想验证什么?

如何用数据驱动产品迭代》中,我们明确了要验证的指标(北极星指标、方向指标、负面指标和行为指标),方向指标和负面指标是我们的项目中的关键指标(没理解的话可以先看上一篇文章),通过埋点验证这两个项目指标,这就是我们的需求。

2. 确定分析思路

一个页面那么多行为,也不能都埋点啊,我的埋点原则是:没有需求就别加,既能解决问题,又不浪费资源是最好的平衡点。

在真正设计埋点之前,就要想好怎么分析这些埋点,因为只有确定好了分析思路,你才知道需要哪些埋点,数据分析的方式比较多,这里不重点拆开说,列一些我们常用的一些分析方式,如果需要拆开讲,请继续提需求。

常用的分析思路:

对比分析

通常用于对比前后变化,比如功能上线前后日活人数对比。

分布分析

通常用于分析一个行为的在某个维度的分布情况,如美团外卖APP,点外卖这个行为,一天24h的下单量分布,来确定运力(骑手)高峰期。

多维度拆解

通常用于定位问题原因,如摩拜APP12月份使用人数暴跌,通过地区、版本等不同维度拆解,发现只有东北地区的使用数据暴跌,因为12月处于冬季,大冬天的东北,你想想骑车不得冻死手啊,这就找到了原因。

漏斗分析

评估一个使用路径的流畅程度,比如电商下单流程的转化率。

路径分析

分析用户的流向和路径,比如从首页开始,有多少去了商品详情页,然后又有多少去看李佳琪直播了,接着又去了哪里。

留存分析

留存的定义有很多:活跃留存、新增留存和精准留存。精准留存较少被提及,精准留存可以更好地评估功能价值,比如进过李佳琪直播间的用户列为精准用户,那这部分用户之后的留存情况,就一定程度反映了李佳琪对这个平台的影响效果了。

粘性分析

评估一个功能对用户的粘性,比如一个月内进李佳琪直播间29天,那这个用户粘性达到了29次/月,粘性很高,就是李佳琪的忠实粉丝无疑了(OMG,买ta!!哈哈)。

这是一些常用的分析思路,除此之外还有很多,如果不是做深入数据分析的话足够用了,而且不同的分析思路之间组合使用,可以得出更多结论,这些分析思路组合使用可以指数级提升分析能力。

好,根据验证指标,明确分析思路之后,接下来就需要梳理埋点了。

3.梳理埋点

怎么埋呢?很像我们阐述需求背景,无非“who when where how what”这些信息,但是一旦细究就很可怕,但这都是我们需要和开发同学明确好的,来一个个看。

who

  • 设备区分
  • 账号区分

设备区分多用于不需要登录的产品,通过设备独有的编码来标记用户。账号区分是常用的方式,通过账号id、手机号等信息来标记用户。

when

  • 设备时间
  • 服务器时间(时间戳)

设备时间可能会因为不同时区的原因,用户之间各不相同,比如跨国业务,需要分析用户的使用时间分布,北京的白天就已是美国的深夜,通过设备时间分析会更方便,北京的8:00不是美国的8:00,但都是早晨。

服务器时间就是常说的Unix时间戳,是全球统一时间,不受时区的干扰,如果不考虑业务特殊情况,一般都是使用服务器时间。

where

  • GPS定位
  • IP判断

常用的就是获取用户的定位权限,然后通过gps进行定位,还有就是通过设备ip判断用户位置。

how

  • 操作系统
  • 设备品牌和型号
  • 运营商
  • 屏幕尺寸
  • 用户来源等等

用户是怎么完成这个行为的,像上述这些信息都算,不止于此,看业务需要,可以继续扩充。

what

  • 商品下单(事件)
    • 商品ID(属性)
    • 期望收货时间
    • 快递方式
  • 商品退货
    • 商品ID
    • 退货原因
    • 退货价格
    • 商品是否已寄回

what就要看业务行为了,举了上面两个例子,并引入了“事件”和“属性”两个概念,事件是指具体的行为,属性是指行为相关的一些信息,如商品下单这个事件:

  • 商品ID属性用来分析什么商品卖的好;
  • 期望收货时间的属性用来分析物流方面的高峰期;
  • 快递方式用来判断哪个合作物流对用户服务质量更好。

这个要根据不同的业务需要,在埋事件的同时,增加必要的属性,以便深入分析数据。

想验证什么 → 明确分析思路 → 梳理埋点,就明确了我们的埋点需求,接下来就要把我们的埋点表达出来。

二、说明白怎么埋

1. 前端埋?后端埋?

这个问题江湖上也是议论纷纷,说哪个好的都有,我没有明确的结论,更喜欢和开发哥哥沟通协定,技术层面他们更专业,以下是我对这种埋点方式的一些看法,仅供参考。

  • 前端埋的弊端
    • 需要发版,出现问题时调整不及时且成本高
    • 影响性能,影响用户体验(微乎其微的那种)
    • 数据不足,相比于后端数据量少,脱离用户使用层的数据缺失
  • 后端埋的弊端
    • 不易验证前端页面设计效果,诸多交互行为不易记录
    • 也会出现数据不足,比如页面停留时长等数据,需要前端专门提供

我建议还是和拉着前后端开发哥哥一起聊聊,让他们在技术层面会给出专业的建议,我们得到一系列专业信息之后再去做决策,这才是我们擅长的事情。

2. 埋点的技巧和注意事项

a.漏斗分析要闭环

这也是《如何用数据驱动产品迭代》中讲过的,不赘述了。

b.上报时机要准确

一个行为的发生要经历事件触发(前端) → 数据入库(后端) → 事件发生(前端)的过程,以电商购买这个操作为例,点击购买按钮(事件触发) → 后端验证库存等信息后返给前端结果(数据入库) → 跳转到下单页(事件发生)。

我们应该选哪个环节上报呢?高精度的埋点需求建议如下:

  • 后端埋点:数据入库环节,数据入库时上报
  • 前端埋点:事件发生环节,收到后端返回结果时上报

以上这两种方式可以保证数据结果的准确性,我们也会有一些低精度的埋点需求,比如只想大致了解一下页面各按钮和操作的使用情况,可以采用事件触发环节上报。

c.事件要尽量合并

出于维护和使用方便的考虑,能用属性解决就不要徒增事件。

还是以商品下单流程为例,我们想验证直播带货的能力,就需要区分直播间下单和普通浏览下单,有以下两种方案:

  • 方案1:两种下单方式各埋一个点,也就是两个下单成功事件。
  • 方案2:只埋一个点,一个下单成功事件,然后增加一个“下单来源”的属性,属性值分别是“直播间下单”和“普通浏览下单”。

从埋点的简洁性和易用性来看,第二种方案是更好的,便于分析的同时,避免了埋点的臃肿。就像写代码一样,很多种写法都能实现需求,但是三行代码就是比三十行代码优秀!

d.抽离出公共属性

在上面的“who when where how what”中,罗列了很多埋点信息,其中有些属性是很多事件中都会用到的,比如用户身份是否vip、省份,以及使用的设备型号和操作系统,这些属性我们可以抽离出来作为公共属性,不需要每个事件都单独上报这些属性,统一上报,这样做了之后,追求代码效率的开发哥哥肯定会喜欢你的。

一些不常用的属性就不要抽离出来了,比如商品退货行为中的“退货原因”这个属性,只有在退货这一个行为中有,在其他地方都是用不到的,所以在退货事件上单独上报更合适。

3. 写数据需求文档(DRD)

电商APP商品详情页访问事件DRD示例:

(点击放大查看)

DRD所需信息:

  • 事件位置 ———— 所在页面
  • 事件英文变量 ——– 驼峰命名法(可自行百度了解)
  • 事件名称 ———— 中文名称
  • 事件定义 ———— 统计的是什么行为的什么数据
  • 属性英文变量 ——– 驼峰命名法
  • 属性名称 ———— 中文名称
  • 属性值类型 ———– 数据类型:字符串,数值型等
  • 属性定义 ———— 属性取值来源是哪,或者上报的值是哪些
  • 上报时机 ———— 就是上面说到的啥时候上报
  • 添加版本 ———— 哪个版本添加的埋点
  • 备注 —————— 一些需要的备注信息

和PRD一样,也是团队内部信息传达和留存的重要文档,需要做到完整且清晰易懂,写完DRD就等着开发哥哥给你加埋点吧!

三、验证埋点对不对

看本次埋点是否正确以外,一定要验证其他相关埋点是否正确,不确定会影响哪些埋点的话可以提前和开发哥哥沟通代码影响面,因为可能会在增加埋点的时候涉及了其他埋点的代码,导致埋点上报错误。

数据分析,以及驱动业务,是当前产品经理的必备能力(90%的人都会,剩下的10%你能活的舒服吗?),利用数据的前提是有数据,所以采集数据的能力也很重要,而且想要啥数据的时候,直接可以自己去采集,岂不是很爽?哈哈。

四、最后总结一下

  1. 想清楚为什么埋,梳理好埋点需求
  2. 说明白要怎么埋,写清楚埋点文档
  3. 验证埋点对不对,相关埋点也要验

 

作者:十八线产品,微信公众号:十八线产品

本文由 @十八线产品 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自 Unsplash,基于CC0协议

给作者打赏,鼓励TA抓紧创作!
更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 十八线产品 怎么找不到这个公众号呢

    回复
    1. 改了个名字哦 人生沸腾记录

      回复
  2. 公共属性的统一上报有一点迷惑~

    回复
    1. 举个例子,用户下单和用户退货这两个行为,用户下单包括“用户ID”、“用户身份是否vip”、“用户地址”、和“商品ID”这四个属性,用户退货包括“用户ID”、“用户身份是否vip”、“退货原因”和“商品是否已寄回”这四个属性,对比可以看出来,“用户ID”和“用户身份是否vip”是每个事件中都需要的,那就没必要每次在事件发生时单独上报了,可以抽离出来作为公共属性,由服务端统一推送上报,这对代码的处理效率以及日后维护都是很便捷的。但是除此之外的属性都是每个事件独有的,需要在每个埋点上单独处理,较麻烦,所以尽量抽离公共属性,希望能解开你的疑惑

      回复
    2. 这样 明白了

      回复