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

2023-11-05

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

在诸多招聘 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. 验证埋点对不对,相关埋点也要验

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

埋点系统:详解设计埋点过程中的“who when where how what” 的相关文章

  • 【计算机开题报告】基于JAVA的酒店管理系统的设计与实现

    1 毕业设计 论文 综述 随着社会经济和科技的迅速发展 人们对衣食住行的要求也逐渐提高 酒店 宾馆在服务行业中扮演着越来越重要的角色 本课程设计的内容旨在以管理系统的方式给人们出行提供酒店预订服务 从而能够更方便快捷的帮助酒店工作人员办理客
  • Redis Geo:掌握地理空间数据的艺术

    欢迎来到我的博客 代码的世界里 每一行都是一个故事 Redis Geo 掌握地理空间数据的艺术 前言 Redis Geo基本概念 Geo模块的目的 工作原理 地理坐标系统
  • 【计算机开题报告】 网上茶叶销售平台设计与开发

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着社会经济的迅速发展和科学技术的全面进步 以计算机与网络技术为基础的信息系统正处于蓬勃发展的时期 随着经济文化水平的提高 近年来 随着科学
  • 【计算机开题报告】 医药信息管理系统

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着医药事业的不断壮大 相关单位对于医药信息的管理变得越来越重要 传统的手工管理效率低 易出错 费时费力 不能及时精确的收集 传递 存储 加
  • 【计算机开题报告】图书管理系统

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 国内外研究现状 国外研究现状 在很多发达国家 图书管理系统的应用和技术发展已经相对完善 并且还建立了数字图书馆 各方面的情况也非常成熟 而图书管理的应用价
  • Kali Linux 安全渗透核心总结,444页核心知识点

    就像IT人离不开Linux系统一样 网安人也离不开Kali Linux 作为攻击性防御和渗透测试的代名词 越来越多的人开始学习Kali 如果你也对kali感兴趣 又想深入了解这方面内容 不妨收藏一下这份Kali Linux安全渗透教程 共4
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • 软件开发和网络安全哪个更好找工作?

    为什么今年应届毕业生找工作这么难 有时间去看看张雪峰今年为什么这么火就明白了 这么多年人才供给和需求错配的问题 在经济下行的今年 集中爆发 供给端 大学生越来越多 需求端 低端工作大家不愿去 高端岗位又太少 很多基础行业 比如机械 土木 所
  • 亚信安慧AntDB引领数字化转型:浙江移动成功实现CRM系统全域改造

    数字时代 通信运营商在不断迭代的背景下 需要不断探索数字化转型的路径 以适应快速发展的市场和技术环境 在这一浪潮中 浙江移动站在前沿 率先完成了其CRM系统的全域改造 采用了亚信安慧公司研发的AntDB数据库 为整个行业树立了数字化转型的标
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 【计算机毕业设计】北工国际健身俱乐部

    本系统为会员而设计制作北工国际健身俱乐部 旨在实现北工国际健身俱乐部智能化 现代化管理 本北工国际健身俱乐部管理自动化系统的开发和研制的最终目的是将北工国际健身俱乐部的运作模式从手工记录数据转变为网络信息查询管理 从而为现代管理人员的使用提
  • 【计算机毕业设计】二手家电管理平台

    时代在飞速进步 每个行业都在努力发展现在先进技术 通过这些先进的技术来提高自己的水平和优势 二手家电管理平台当然不能排除在外 二手家电管理平台是在实际应用和软件工程的开发原理之上 运用java语言以及前台VUE框架 后台SpringBoot
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 【计算机毕业设计】宝鸡文理学院学生成绩动态追踪系统

    研究开发宝鸡文理学院学生成绩动态追踪系统的目的是让使用者可以更方便的将人 设备和场景更立体的连接在一起 能让用户以更科幻的方式使用产品 体验高科技时代带给人们的方便 同时也能让用户体会到与以往常规产品不同的体验风格 与安卓 iOS相比较起来
  • Oracle EBS AP发票导入 API Rejection List 第二部分

    Oracle EBS AP发票导入 API Rejection List 第二部分 The report lists the reason the invoice could not be imported and prints a bri
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据

随机推荐

  • DES的加密与解密(C语言实现)——大三密码学实验

    目录 DES的描述 Feistel体制 密钥扩展函数 F函数 总流程 代码 get函数的构建 yihuo函数的构建 fuck函数的构建 left move函数的构建 exchange函数的构建 erzhuanshi函数的构建 shizhua
  • 利用Vulnhub复现漏洞 - GoAhead 远程命令执行漏洞(CVE-2017-17562)

    GoAhead 远程命令执行漏洞 CVE 2017 17562 Vulnhub官方复现教程 漏洞原理 复现漏洞 启动环境 漏洞复现 动态链接库源码 编译so文件 发送payload Vulnhub官方复现教程 https vulhub or
  • EasyExcel导出模板实现下拉选(解决下拉超过50个限制)

    学习地址 https d9bp4nr5ye feishu cn wiki O3obweIbgi2Rk1ksXJncpClTnAf B站视频 https www bilibili com video BV1H34y1T7Lm 先来看看最终实现
  • MySQL基本操作语句

    目录 基本的操作数据库的语句 操作库的基本SQL语句 针对表的基本SQL语句 针对记录的基本SQL语句 扩展知识 select 标准用法 基本的操作数据库的语句 show databases gt gt gt gt 查看所有的数据库 sho
  • vue3 nvm配置多个版本node

    在实际开发中 我们可能会负责多个项目 有的项目是vue2版本开发的 有的是vue3版本开发的 如果我们电脑全局的node版本是低版本的 那么高版本的vue3项目在安装依赖时就会报错 反之亦然 我们可以使用nvm来安装多个版本的node 并使
  • Vue table不分页 动态加载数据(类似手机端滑动到底端后再去获取数据)

    最近接到一个需求 pc端中的table 数据不做分页 而是做成滚动条形式 但是table中的数据还是一次显示50条 等这50条滑动到底部后 再去加载50条 有加载效果 以此类推 直到数据全部展示 值得注意的是 我的需求是 第一次请求数据就将
  • 在线UTF-8/GBK互相转换工具

    在线UTF 8 GBK互相转换工具 https encode guiboweb com
  • shell执行Oracle SQL并捕获异常案例分析

    一 shell脚本 实现功能读取指定配置文件中的Oracle数据库连接 清空传入变量表的数据 以及清除数据之后的结果进行捕获分析 bin bash Created Date 2022 12 16 Author Last Modified 2
  • db2错误代码

    DB2错误代码 SQL返回码信息对照 用COBOL链接DB2时 出现DB2错误信息时 如果你不懂代码是什么意思 可以用这份资料查找 当然你也可以直接在db2的命令行下输入 db2 SQL30081N 系统会给出一些提示信息 sqlcode
  • LiDAR SLAM的比较

    在自动驾驶领域 定位是很重要的一环 为了建立更有鲁棒性 精确的定位 在实际自动驾驶车上往往都会使用激光雷达 激光雷达相比于摄像头 对光照变化不敏感 适合白天和黑夜 绝大多数路况 激光雷达获得的距离信息精度很高 获取的feature很稳定 当
  • Spring 异常处理的三种方式 整理

    异常处理方式一 ExceptionHandler 异常处理方式二 实现HandlerExceptionResolver接口 异常处理方式三 ControllerAdvice ExceptionHandler 三种方式比较说明 强烈推荐各位看
  • 小程序接入微信客服

    wx openCustomerServiceChat Object object 微信开放文档 微信小程序打开微信客服 接口文档 企业微信开发者中心 1 网页搜索 微信客服 扫码登录 根据提示 填写信息 微信客服 2 在 微信客服 中进入企
  • 项目打包报不能在脱机状态下访问**资源

    项目场景 springboot项目 使用maven进行打包操作 问题描述 Failed to execute goal org springframework boot spring boot maven plugin 2 5 0 repa
  • UE4_UStruct 遍历

    一个结构体中存在一个Val变量 Val变量的类型是FVector4 想从c 层面去遍历获得Val的值 上图是很早之前的一个Property继承关系图 当然 在4 25UProperty被FProperty夺笋 好处呢 见下 没有继承UObj
  • etcd的使用

    启动etcd服务 启动etcd时最主要的是需要准备两个没有使用过的端口 这两个端口一个用于etcd之间同步信息 一个用于etcd向客户端提供服务的端口 因此启动单个etcd节点 只需按照如下命令行输入即可 server name myetc
  • sigmoid & logistic

    1 吴恩达老师视频中说sigmoid函数就是logistic函数 2 查阅复旦大学邱锡鹏老师关于深度学习的书 在第四章中写道 Sigmoid型函数是指一类S型曲线函数 为两端饱和函数 常用的Sigmoid型函数有Logistic函数和Tan
  • OpenPose笔记——windows 10下,自编译openpose代码(vs下能跑了,pythonAPI也能使了)

    简直太可怕了 遇到N多的问题 我觉有必要写下来记录一下 我自己编译了四五天 编译了10几次 夭寿哦 缺好多好多东西 给大家讲一下具体步骤 一 准备工作 准备工作当然是各种环境 1 至少VS2015 以上的版本 2 CMake Gui 注意
  • 问题定义过程

    问题定义过程由四步组成 确立需求 证明需求 理解问题和它的上下文和问题陈述 这个模型的主要优点是能够帮助你确定和理解问题的细节 帮助你了解组织的使命和战略在问题解决过程中的的重要性 从这里你可以确定问题是否值得努力寻求解决方案 只有明白了问
  • 自顶向下 逐步求精

    将复杂的大问题分解为相对简单的小问题 找出每个问题的关键 重点所在 然后用精确的思维定性 定量地去 描述问题 其核心本质是 分解 自顶向下 top down 的分析算法通过在最左推导中描述出各个步骤来分析记号串输入 之所以称这样的算法为自顶
  • 埋点系统:详解设计埋点过程中的“who when where how what”

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