实践复盘:产品经理该怎么写埋点文档?

23 评论 20721 浏览 311 收藏 9 分钟

​编辑导语:埋点,就是在用户使用产品时记录下用户行为数据,以便后面对用户行为进行数据分析。对于产品经理来说,工作内容可能经常涉及到埋点文档。那么,对于产品经理新人来说,如何上手写埋点文档呢?本文作者通过复盘自己的实操经历,为我们做出了总结。

就我而言,今年最大的提升就是对产品开发全流程有了更多的实践。除此之外,还在友盟上搭起了埋点,以及学会了 SQL 查询数据。

这些对我分析数据,以及后续做产品决策起到了巨大的帮助。毕竟我们做产品,不能光靠着主观意识的“我觉得”、“我认为”,而是要有客观的方式支持。

下面先分享我对埋点的实操经验,希望对你能有些启发。

一、什么是埋点?

每个人在 App 上操作时,都可以看做一个行为,比如点击某个按钮、在某个页面停留了多长时间。

而埋点,就是将这些行为记录下来的技术手段。

从流程上来说,在定义好用户行为(点击、停留、输入等),技术上植入代码进行捕捉处理 →发送返回 → 呈现结果,这样就得到了用户操作数据。

二、埋点的分类

1. 页面埋点

页面即将展示时触发,比如我们统计页面的访问情况,访问人数(UV)和访问量(PV),就会用到页面埋点。

2. 事件埋点

也叫行为埋点,在点击页面上的元素(按钮等)的时候触发。结合页面埋点,像是商品 UV 点击率 = 商品点击 UV ÷ 商品曝光 UV ,用来判断用户对商品的喜爱程度。

三、埋点怎么做?

1. 常规的埋点方式

拿我们公司用的友盟平台为例,产品这边需要提供的是埋点文档,如下图:

分享一下命名思路和规范,先看第一列的页面,具体看红色字体部分。

A01-首页 → A0105 点击 XX 按钮(事件埋点) → A010501-进入XX列表页(页面埋点),两个页面之间是通过点击按钮触发,而我们在命名时也这么做。

这样做的好处,是自己在梳理埋点时,既不会重复,也不会逻辑混乱。以上是命名的基本逻辑,下面看一下命名规范,这也是参考大厂朋友的思路。

  • 页面埋点:以英文字母大小写 + “_”组成。
  • 事件埋点:以页面埋点 + “.行为”组成,行为由英文字母(大小写)构成。

实例看下上图的蓝色字体部分:monitor  → monitor.search →monitor_search → monitor_search.back。

以上都是常规的方式,也都是可以拿来复用的,但这里还有个情况不得不考虑:如果一个功能按钮在多个页面都有,那该怎么办?

2. key 和 value 怎么用在埋点中?

拿分享图片行为来说,它一定的多入口的,举个例子:

如果按上面的方式,需要做 N 个事件,对比加入 key 和 value 以后方式二,如下图:

对于分享图片,我们只需要定义一个事件,然后确定页面来源(key)和多个页面名称(value)即可。

最后附上我在埋点文档中的应用,如下图红色字体部分:

当然,这块我做的时候是存在问题的,其实分享渠道也是可以归位key(value),像蓝色字体部分一样,整理后如下图:

那么,我为什么说用key(value)更好呢?我举个分析场景的例子说明一下。

3. 方式一多事件,对比方式二 key(value)

假设一个场景:我们要分析 N 天用户的整体分享行为(微信 + QQ + 钉钉),以及在 A 页面产生了多少分享行为。

我们用脑图对比不同方式,在两个问题下的解决方式。

发现了没有?如果是做多事件的埋点,在分析时得找出所有的事件。

用 key(value)呢?只需要找到一个事件,并选择对应的 value 值即可,简单列举一下这种方式的好处:

1)减少多事件的维护成本

如果后续功能迭代增加了分享图片的页面,此时只需要多加一个 value 即可。

2)提升数据分析效率

当我们分析分享情况时,只需要选择一个事件即可。

3)白嫖友盟平台

友盟只提供500个免费的事件数量,能省一个就剩一个。因此在做埋点的时候,还是要有意识的用 key(value)值去做,对自己,对开发都好。

当然了,也并不是所有的埋点都要命名一个事件 ID 配上 key(value),我总结了几个标准:

  1. 同种类型的多事件埋点
  2. 有拓展可能的事件埋点

到目前为止,还只是产品经理梳理思路的部分,但如何体现在产品方案,也就是 PRD 上面呢?

四、埋点与 PRD 文档

拿我现在的产出为例,我在 PRD 上会分为这几部分,如下图。

在需求评审后,也就是 UI 设计图都做完之后,我会同步进去。

  • 从开发流程上来说,埋点都是最后做的,不会影响他们进度;
  • 从产品方案上来说,评审后基本不会改页面,会避免返工,同时埋点也需要在设计图上标注。

以上文提到的页面埋点:monitor → monitor.search →monitor_search → monitor_search.back 举例,如下图:

在每个页面中标记埋点的命名,给到开发那边即可。对于友盟来说,需要产品经理批量导入 txt 埋点文档,这部分看一下就懂了,就不展开说了。

五、写在最后

以上就是数据收集的上半部分,主要分享的是埋点怎么做,通用性也还是蛮强的。不过话说回来,埋点只是手段,重要的还是如何借助数据做分析,让自己的决策更加的客观。

希望上面的分享对你能有些启发~

 

作者:空;公众号:小木盒产品记

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

题图来自 Unsplash,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 您好,可以加您微信吗

    来自北京 回复
  2. 请问下作者,这份文档里有一点没有搞明白,因为埋点的结果最终是要将事件发生的次数落到数据库表的,就是要告诉开发给什么字段赋一个值,比如【分享图片至微信的次数】统计出来是10次,通过您上面那份文档,我可以理解为是要给3600shareimage_Source.0(假设您文档里的0代表微信)这个字段赋值10么。就是我没太明白key-value方式是怎么定义具体的字段的

    来自浙江 回复
  3. 你好,作者,我想问一下,减少多事件的维护成本里面的,如果后续功能迭代增加了分享图片的页面,此时只需要多加一个 value 即可—>不应该是如果后续功能迭代增加了分享图片的页面,此时只需要多加一个key即可,这样吗?

    来自江苏 回复
    1. 因为你已经加了分享图片的埋点事件,已经定义了key(页面来源),value(页面A、B、C),此时在某个页面增加了分享图片,只需要在key(页面来源)下,增加一个value(页面D)即可

      来自浙江 回复
  4. 脱敏PRD能来一份吗

    来自上海 回复
  5. 学习了

    来自广东 回复
    1. 谢谢关注~

      来自浙江 回复
  6. 您好,我看您的事件列表里,都有页面ID和功能ID,例如B01这种得,请问这块是如何统一定义得?另外如果是多个入口,每个入口的ID是否要单独定义(以确保开发人员能够明确入口)

    来自辽宁 回复
    1. 1、问题:例如B01这种得,请问这块是如何统一定义得?
      产品定规范,便于自己分析和管理,交付给开发是最后那张图,也就是页面+英文命名;
      2、问题:另外如果是多个入口,每个入口的ID是否要单独定义?
      多入口的不需要重复定义,即定义一个功能ID,不同页面用key-value确保开发人员明确入口即可;

      来自浙江 回复
  7. 命名一般是自己定还是开发定呢

    来自广东 回复
    1. 产品定,开发写入代码,但要注意能对得上,否则后面分析的时候就懵了

      来自浙江 回复
    2. 好的,谢谢~!

      来自广东 回复
  8. 感谢分享牛逼, 想请教一点的就是,数据埋点完,你们最后有没有类似数据展示的一个东西,

    来自浙江 回复
    1. 我们是在友盟上做的埋点,实时监控、事件分析、漏斗分析都可以实现,对于小B企业来说足够了~

      来自浙江 回复
  9. 感谢分享 不错

    来自山东 回复
    1. 谢谢~

      来自浙江 回复
  10. 图中的埋点文档可以分享一下吗,作者大大

    来自河南 回复
    1. 写法都是一样的,要根据你们App的情况来写。我这边要是整体脱敏文档,工作量太大啦- –

      来自浙江 回复
    2. 我也想要文档学习一下,一个简单的demo就可以

      来自上海 回复
    3. 隐私问题,那你加我吧,我发给你~

      来自浙江 回复
    4. 怎么加啊,我想要一份文档学习永无止境

      来自河南 回复
    5. 文章末尾有的哈~

      来自浙江 回复
    6. 同求脱敏文档。

      来自北京 回复