1. 埋点设计
1.1. 埋点需求基本要素
- 上报时间
- 涉及页面
- 用户信息
- 系统信息
- 触发条件(session 回溯)
- 上报位置
1.2. 埋点事件设计原则
- 驼峰命名法;
- 命名格式:模块_页面_事件;
- 区分公共事件,
- 如设备、位置、机型等,不要每次都上报,这样可以大大减少数据冗余;
- 相同的功能事件设置相同的 event_id,通过属性参数来做区分;
1.3. 埋点设计步骤
- 需求梳理
- 在设计属性和事件的时候,我们要知道哪些经常变,哪些不变,哪些是业务行为,哪些是基本属性;
- 基于基本属性事件,我们认为属性是必须采集项,只是属性里面的事件属性、根据业务不同有所调整而已。
- 业务分解
- 梳理确认业务流程、操作路径和不同细分场景、定义用户行为路径
- 分析指标
- 对特定的事件进行定义、核心业务指标需要的数据
- 事件设计
- APP启动,退出、页面浏览、事件曝光点击
- 属性设计
- 用户属性、事件属性、对象属性、环境属性
-
1.4. 埋点日志基本字段
- 用户 ID
- 事件名称
- 事件 ID
- 所在页面(位置)
- 属性
- 属性值
- 时间
- 设备上报时间
- 到达服务器的时间
1.5. 多维事件模型
- event 事件模型
- 使用 event 记录用户在产品上的各种行为;
- What
- When
- Where
- Who
- How
- user 用户模型
- user 的基础属性信息
- 二者既可以分别分析,也可以关联分析。
1.6. 埋点的总体要求
- 数据稳定准确,反映真实业务场景
- 需要长期监控,数据需要长期存储
- 业务属性丰富,可以做深度业务分析
- 对于核心 KPI,指标需要全面覆盖
- 需要设置数据权限
2. 埋点采集的顶层设计
2.1. 用户识别
- 用户识别机制的混乱会导致两个结果:
- 一是数据不准确,比如UV数据对不上;
- 二是涉及到漏斗分析环节出现异常。
- 因此应该做到:
- a.严格规范ID的本身识别机制;
- b.跨平台用户识别
2.2. 同类抽象
- 同类抽象包括事件抽象和属性抽象:
- 事件抽象即浏览事件,点击事件的聚合;
- 属性抽象,即多数复用的场景来进行合并,增加来源区分。
2.3. 采集一致
- 采集一致包括两点:
- 一是跨平台页面命名一致,
- 二是按钮命名一致
- 埋点的制定过程本身就是规范底层数据的过程,所以一致性是特别重要,只有这样才能真正的用起来
2.4. 渠道配置
- 渠道主要指的是推广渠道,落地页,网页推广页面,APP推广页面等,这个落地页的配置要有统一规范和标准。
2.5. 系统化管理埋点事件
- 实现统一的格式;
- 方便埋点查询、变更管理;
- 易于埋点元数据管理;
- 方便埋点生命周期管理;
- 便于进行埋点数据质量的监控。
3. 埋点需求梳理
3.1. 埋点事件表
-
事件表示例:
- 埋点位置
- 如果业务覆盖了APP、Web和小程序平台,分开管理会造成指标冗余;
- 对于多平台存在的核心指标,采用的是统一事件名定义;
- 不同平台触发时,数据上报到同一个事件名上,通过平台类型(platform_type)进行拆分;
- 事件定义:
- 比较难处理的是【触发条件】的准确定义和描述,如页面的进度数据,触发定义成加载和加载成功完全不同;
- 比如,首页模块浏览,模块长短不一,到何种深度会触发对应模块的浏览,需要定义时想清楚,与开发沟通实现细节,避免后期踩坑;
- 参数定义:
- 用来定义事件的参数,也可以理解为事件维度;
- 该字段决定了事件的颗粒度,直接影响到事件下钻的颗粒度;
- 平台不同位置的事件抽象后,尽可能提取出公用事件,然后通过事件变量进行区分,这样做的好处是:减少指标冗余、指标管理工作、培训成本,以及使用者的学习成本。
- 当然这里也并不完全执着于抽象公用性,对于数据PM和开发来说,指标越精简越好,便于理解和管理,但对于运营同事来说,学习和使用成本高企,数据产生了但无法最大化应用侧价值,那就得不偿失,所以需要平衡。
3.2. 事件上报时机
- 事件埋点
- 比如:下单成功;
- 页面埋点
- 比如:完成页面跳转
- 曝光埋点
- 进入页面时,模块可见面积大于 50%,才上报;
- 手指不停的滑动,模块可见面积小于 50% 不上报,大于 50% 才上报;
- 滑动停止时,模块可见面积小于 50% 不上报,大于 50% 才上报;
3.3. 事件标识 & 参数命名规则
- 事件的命名规则:
- 同一类功能在不同页面或位置出现时,按照功能名称命名,页面和位置在ev参数中进行区分。
- 仅是按钮点击时,按照按钮名称命名。
- 事件格式:
- 事件分为事件标识和事件参数
- 事件标识
- 作为埋点的唯一标识,用来区分埋点的位置和属性,不可变,不可修改。
- 事件参数
- 埋点需要回传的参数,ev参数顺序可变,可修改
- 事件标识和事件参数之间用“#”连接(一级连接符)
- 事件参数和事件参数之间用“/”来连接(二级连接符)
- 参数使用 key=value 的结构,当一个 key 对应多个 value 值时,value1 与 value2 之间用“,”连接(三级连接符)
- 当埋点仅有事件标识、没有事件参数的时候,不需要带#
- 备注:
- app埋点调整的时,事件标识不变,只修改后面的埋点参数(参数取值变化或者增加参数类型)
3.4. 通用埋点设计
- 在自定义埋点设计中,有一些通用的事件往往是比较复杂的,而且随着业务发展,会变得越来越复杂。
- 比如:APP 平台的分享事件,如果按功能模块,每个功能模块都设计了自己的分享事件,则这个事件会越来越分散,如果想聚合做复合指标(如:通过分享/日活来衡量内容质量),分享事件要先聚合平台各功能模块的分享事件,太分散会产生应用上的问题。
-
此时,建议仍然是将通用类型的埋点统一进行管理,通过变量字段进行拓展,来满足多功能模块的埋点需求,可以通过多个参数来进行区分。
-
通用埋点事件需求示例
3.5. 数据指标地图
- 数据能力推广的第一个难点,是让让大家知道平台上有哪些数据。
- 在各平台埋设的指标,采用excel的方式进行管理的问题是指标一多起来,找起来不太方便,对于定义者来说自然很容易找到,但是对于使用者来说则不太友好。
- 即使搜中文名称,也会存在同一个地方,大家用不同的关键词去搜索,比如:模块、版块、板块。
- 数据指标地图,将不同功能模块的数据指标进行了拆解和说明,其他同事找数据指标之前,先打开指标地图大概定位,然后再去对应的sheet表中寻找对应指标的细节定义和可下钻的维度信息。
3.6. 指标字典
- 从数仓里自助取数时,会有以下的问题:
- 有哪些表;
- 表格对应的是哪块业务的数据;
- 有哪些字段;
- 字段的含义是什么;
- 等等
- 这个需要明确具体内容,需要确认、并且约定好,在新增时及时更新对文档的解释。
3.7. 版本迭代
- 随着版本迭代有新功能的埋点,或者针对之前功能的优化,所以需要对之前埋点进行调整。从埋点管理的角度,新增/修改的埋点,需要整合到之前的埋点系统里,这样能够方便使用者查阅整体的埋点明细。
- 关于版本迭代中的埋点管理,相比于excel也有更好的工具化管理办法,如:做一个web端埋点管理平台,可以看到所有的埋点。同时,功能 PM 可以在该平台上按照字段要求提交自己的埋点需求,然后走审批流程,能够进入开发的埋点,会打上版本标记,待上线后,对应的埋点会出现在平台总表里,供使用者查看。
-
3.8. 埋点状态监控
-
主要负责对埋点的存活状态、未知埋点发现及数据异常进行提醒。
- 埋点的存活
- 主要是针对已经确定的埋点进行监控,而是否存活主要是通过测试人员进行回归测试来判断。
- 未知埋点发现
- 主要是通过上报数据进行分析,如果出现了未知的埋点标识数据,则进行提醒,方便反向跟踪问题。
- 数据异常提醒
- 主要从数据本身的阈值异常以及上下游埋点比例的阈值进行监控。