# 埋点方案
在实际应用中,很多数据不准确、无法计算的问题最后多数定位到是埋点缺失、错误等造成的,因此严格控制数据质量是非常必要和重要的事情。
埋点方案功能正是通过以下三点来保障数据质量:
1. 数据采集需求管理,方案可共享保证需求来源一致,来源可记录,变更可追踪 —— 通过埋点的增删改、记录变更历史功能实现
2. 将埋点方案作为数据处理规则,规避无效数据污染数据源 —— 通过设定计划外(埋点方案外)的数据处理规则实现
3. 通过埋点方案自动化校验,提高验证效率 —— 通过检测埋点状态功能来实现

## 设计埋点方案
### 设计前准备
**确定数据分析和应用的核心诉求**
* 验证功能设计是否合理?帮助产品迭代?
* 关键流程的转化情况?
* banner广告/推荐位的效果转化?
* 注册/登录的用户情况?
* 自动化运营
**确定核心业务的关键路径**
拆解各环节,设定环节指标(如各环节转化率),根据环节指标,提取动作行为,即事件,该事件就是我们要进行统计的埋点位。
**确定用户属性**
确定描述用户的维度,比如性别、用户等级等后续用于分析的属性。
### 设计埋点方案
经过前期准备,按照方舟当中的数据模型,可以把埋点方案拆分为两部分:
* 事件方案——确定上报哪些用户行为
* 用户方案——确定上报哪些用户属性
一份完整的埋点方案由事件、事件属性和用户属性三部分组成。
**事件**
记录用户在使用网站、APP 或小程序的过程中触发的行为。
用户的行为有一部分会在他们使用的过程中自动被采集上来,常见的如:跟访问有关的“页面浏览”,“停留时长”;另外一部分包含具体业务含义的,则需要通过埋点才能得到,例如:“注册”、“登录”、“支付”等等。
**事件属性**
可以通过属性为事件补充相关的信息,例如:位置,方式和内容。
用户产生行为时就会上报具体的属性值,比如对“购买事件”定义了“支付方式”的属性值,则根据不同的行为可能上报的是微信支付,支付宝支付。
小舟在电商平台上花一万元购买了一台联想电脑。这个动作就会产生一个名为“购买”的事件; 而“购买”事件,同时也可以包含:“品牌”,“价格”这两个属性,而“联想”和“一万元”就是属性的具体值了。
| Event要素 | 要素说明 | 采集的数据 | 示例 |
| ------- | --------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Who | 参与事件的用户 | 用户唯一ID | H522a3bd525a2af |
| When | 事件发生的时间 | 自动获取 事件当时时间 | 11月11日00:02:03 |
| Where | 事件发生的地理位置 | 自动获取 IP、GPS信息 | 114.242.249.113 |
| How | 事件发生的方式 | 使用的环境 | <p>设备品牌:Apple </p><p>设备型号:iPhone 6s 操作系统:iOS </p><p>屏幕分辨率:1920*1680 </p><p>运营商:中国联通 </p><p>网络类型:Wifi ……</p> |
| What | 事件的内容 | 自定义采集的事件:EventID 事件属性:Key-Value | add_to_cart product_name:耳麦 product_price:666 |
**用户属性**
在分析过程中,需要引入注册用户的更多维度,比如注册用户ID、姓名、用户等级等等,也需要进行梳理,方法同事件属性。
埋点方案整理成方舟提供的埋点模版整理即可

整理完埋点方案后点击批量导入,作为后续研发埋点的需求来源和数据处理的规则。以下将以事件方案为例说明在方舟中如何管理埋点方案:
## 管理埋点方案(以事件方案为例)
### 1 管理计划中的事件方案
计划中即表示在数据上报前做好了规划要采集的事件;计划外表示不在埋点方案中,但实际上报了数据的事件和属性。
>[info]通过可视化埋点部署的埋点自动会被视为计划中的事件
#### A 添加方案
按照埋点方案模版的格式整理完成后,即可批量导入;
系统预置部分事件及属性,如有需要可以直接使用,如果不需要也可以清空;后续需要使用时,选择导入预置事件/属性即可。

当已上传过埋点方案,后续有新的产品功能迭代需要新增少量埋点时,可以选择单条添加

对于所有事件都有的通用属性不必在埋点方案中每个事件中添加,在通用属性中导入一份即可,方舟默认会采集部分属性(预置的通用属性),详见[https://docs.analysysdata.com/uba-docs/2494892](https://docs.analysysdata.com/uba-docs/2494892)

此外若有需要也可以添加自定义通用属性,集成SDK时注册为通用属性即可。

#### B 修改方案
支持修改埋点的平台、事件显示名称、事件说明、事件标签、显示状态、数据类型等;

>[danger]当属性已回数时,属性的数据类型无法进行修改
也可以进行删除、设置是否在分析时显示

>[info]删除操作说明:
当事件**未回数**时,删除即表示从方案中删除,不打算采集,后续完全可以使用相同ID重新定义,当未定义时有相同事件ID的数据上报时,将根据设置的数据处理规则处理;
当事件**已回数**时,删除代表从埋点方案中移除,相应事件和属性会进入到计划外,并不会删除历史数据;也不能定义相同ID的事件和属性,或者添加数据类型不同的属性,若想要再次启用可以从计划外再次添加到计划中
>[info]显示开关说明:
开关打开时,相应事件/属性在分析的事件和属性下拉框中可见;
开关关闭时,相应事件/属性在下拉框中不可见,同时不可见的事件也不会被计入【任意事件的用户数/次数和人均次数】的指标计算中;
部分预置的事件/属性用于热图计算,如果关闭同样在事件/属性下拉框中不可见,但不影响热图分析的结果。
对于通用属性同样支持删除、设置是否显示的操作
>[info]删除操作说明
已回数的属性删除后仅代表该属性不再是通用属性,将会出现在各个已回数的事件下;
未回数的属性删除后仅表示各个事件都不需要采集该属性, 如果有个别事件需要该属性,需在计划中埋点该事件下添加。
>[info]显示开关说明:
开关打开时,在相应的条件和维度中可以选择到该属性; 若不需要分析,可以选择关闭; 部分预置通用属性不支持作为条件和维度,禁止删除、禁止打开显示开关。

**对于埋点的改动系统都会记录,谁在什么时间修改了什么,修改前后变化是什么,方便异常追踪。**

#### C 查看方案
当有多个平台、多种埋点方式时,可以通过分组、过滤条件、搜索等快速找到相应的埋点
**C1 展开/收起全部属性**
点击 **展开全部属性** 可以查看全部事件下的属性,也可以展开部分事件

**C2 分组显示**
可以按照平台、是否预置、埋点方式、是否回数、标签等分组查看

当按分组查看时,默认收起全部分组,可以展开全部分组,也可以点击分组所在行的空白处可以展开单个分组

**C3 过滤条件**
同样支持根据平台、是否预置、埋点方式、是否回数、标签等进行过滤

**D 埋点列表展示字段**
支持事件、事件属性、平台、平台、是否预置、埋点方式、是否回数、是否显示、创建人、创建时间、首次出现时间、最后出现时间等。
通过埋点最后出现时间、近7日的触发次数等指标可以总和判断埋点是否仍然有效,当达到埋点限额的时候可以做埋点清理。
通过Debug日志、入库日志、错误日志的入口可以直接进入到日志中去查看相应事件的日志数据,帮助做数据校验。

### 2 设定数据处理规则
对于不在埋点方案中,但实际上报了数据的情况,可以自定义设置数据处理规则,更改规则后新进入的数据将按照更新后的规则进行处理,通常1分钟内即可生效。系统预置三种处理模式:
* 严格模式:适合对数据质量要求严格的企业
* 半严格模式:适合对数据质量要求较为严格的企业
* 宽松模式:仅适合研发快速回数测试产品功能

>[warning]埋点方案和数据处理模式设置会做为数据处理的规则。
注意更改规则后仅对新进入的数据生效,根据历史规则处理后的历史数据不会变更。
比如,原来对于计划外的事件,原来选择的是规则 2:数据入库,加入到计划外列表中,默认不启用该事件,手动选择是否加入到埋点方案中。
已有一批数据根据此规则处理,其中有10个计划外的埋点在计划外列表中了,此时将处理规则变更为规则1:数据入库,并将事件加入到埋点方案,默认启用该事件。那么,原来进入计划外列表中的10个事件并不会自动添加到埋点方案中,可以手动选择批量添加到埋点计划中

>[info]系统默认半严格模式,对于对数据质量要严格要求的用户 ,可以切换到严格模式
### 3 验证和更新埋点状态
系统会根据实际回传的数据与埋点方案做自动化校验,在列表中可以根据颜色标识直观判断当前埋点的状态

**埋点状态 = (事件状态 + 事件属性状态)\* 平台**
>[info]只有平台icon **全部高亮**、事件和属性标识都是 **绿色 **时,表示定义的事件在各个平台上各个属性都有数据回传,且正确
>[warning]当事件前标识是**黄色**时,表示该事件有部分平台没有上报,或者部分属性没有上传完整;可以根据哪个平台icon 未高亮,哪个属性前面的标识为灰色或者黄色来定位具体问题
当属性前标识是**黄色**时,标识该属性有部分平台没有上报;可以查看哪个平台icon未高亮,则标识哪个平台没有上报
>[danger]当平台icon未高亮、事件和属性前标识都为灰色时,标识全部还没有数据上报,或者全部进入错误队列
进入页面时会更新最新的埋点回数状态,停留在当前页面时,可以点击右上角 **更新埋点状态** 强制刷新
>[info]除了以上场景外,有两种特殊情况需要注意:
**1**当计划外的事件/属性添加到埋点方案中时,会自动高亮实际回数的平台,相应的事件和属性
**2** 定义了A平台的事件和属性,但实际该事件在B平台也回数了时,将自动高亮出该平台
### 4 计划外事件和属性的处理
当有计划中埋点之外的事件上报了数据,且数据处理规则选择的是半**严格模式**时,计划外的数据将入库,埋点会显示计划外列表中,若这些事件或属性在实际分析过程中也有需要,支持添加到计划中;若不需要,且后续不希望数据入库占用资源,也可以选择停止入库

支持批量加入到计划中
>[info]若同一个事件即在计划中又在计划外,则表示该事件下有部分属性不在埋点方案中,因为属性不能独立存在,所以事件也会同时显示在计划外列表中。

>[info]入库操作说明:
对于计划外已入库的完整事件,支持停止入库(当一个事件仅有部分属性属于计划外时,不支持关闭入库操作)
入库开关关闭后,后续产生的数据将不再入库(注:Nginx 仍然正常接收,只是不再处理数据入库后参与计算,如果不想让继续上线,需要从代码层面删除埋点)
如果根据实际需要,又需要继续获取此事件上报的数据,可以打开入库开关,但这期间历史未入库的数据不会被恢复

## 管理用户方案
切换左上角进入到用户方案,可以管理和校验用户属性的埋点,使用方案类似事件方案,不做赘述。

- 产品简介
- 快速上手
- Step 1 安装部署
- Step 2 激活系统创建项目
- Step 3 开启您的分析旅程
- 1. 集成 SDK
- 2. 可视化埋点
- 3. 创建分析模型
- 附:埋点方案设计
- 附:数据分析思路
- 产品更新日志
- V5.5 新增LTV分析功能等
- V5.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
- V5.2 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
- V5.1.0317 体验优化& Bug修复
- V5.1 升级可视化埋点、增强权限控制……
- Part I 产品功能说明
- 名词解释
- 指标说明
- 看板
- 5.3.3 看板 UI 重构
- 分析
- 事件分析
- 渠道分析
- 渠道相关名词解释
- 来源识别规则
- 搜索引擎
- 社交媒体
- 小程序场景值
- Session 分析
- Session 规则
- 实时分析
- 留存分析
- 转化漏斗
- 智能路径
- 归因分析
- 热图分析
- Web/H5 热图
- APP 热图
- 分布分析
- 间隔分析
- 属性分析
- LTV 分析
- 多主体分析
- 自定义查询
- 用户
- 用户分群
- 用户探查
- 用户标签
- 标签体系应用概览
- 标签体系
- 标签生命周期管理
- 标签加工
- 如何自定义SQL创建标签
- 单用户档案
- 运营
- 广告跟踪
- 微信小程序渠道追踪
- 预置广告媒介和渠道
- App 推广监测(Beta版本)
- 电子邮件(即将下线)
- 短信(即将下线)
- 消息通知(即将下线)
- 项目管理
- 项目概览
- 项目角色管理
- 项目成员管理
- 数据接入管理
- 埋点方案
- 可视化埋点
- 集成SDK接入数据
- 数据验证
- 用户数据导入
- 微信小程序全埋点事件定义
- 元数据管理
- 元事件
- 虚拟事件
- 事件属性
- 用户属性
- Session 管理
- 页面组管理
- 维度表
- 服务集成配置
- 监控告警
- 智能监控
- 自定义监控
- 平台管理
- 企业概览
- 项目管理
- 成员管理
- 安全设置
- 企业设置
- 日志管理
- 帐号设置
- Part II 技术文档
- 技术接入准备工作
- 部署环境检测工具
- 数据模型
- 数据格式
- 预置事件和属性
- App预置事件/属性
- JS 预置事件/属性
- 如何准确识别用户
- 如何设计埋点方案
- 分平台上报数据 vs 跨平台打通
- SDK 指南
- Android SDK
- 快速集成
- 全埋点模块
- 消息推送模块
- Android Hybrid模式
- SDK Gradle集成方式
- 多渠道打包
- 易观小工具
- 合规相关
- iOS SDK
- 快速集成
- 全埋点介绍
- iOS Hybrid模式
- 消息推送模块
- JS SDK
- 快速集成
- JS SDK基础版
- JS SDK插件
- uni-app SDK
- 快速集成
- 打包原生APP
- 开启移动端全埋点
- uni-app SDK标准版
- 微信小程序 SDK
- 快速集成
- 微信小程序标准版
- 微信小程序插件版
- 微信小程序通用框架版
- 支付宝小程序 SDK
- 支付宝小程序标准版
- 支付宝小程序通用框架版
- 字节跳动小程序 SDK
- 字节跳动小程序标准版
- 字节跳动小程序通用框架版
- 百度小程序 SDK
- 百度小程序标准版
- 百度小程序通用框架版
- 钉钉小程序 SDK
- 钉钉小程序标准版
- 钉钉小程序通用框架版
- QQ小程序 SDK
- QQ小程序标准版
- QQ小程序通用框架版
- 快应用 SDK
- 华为WeCode小程序
- WeCode SDK 标准版
- WeCode SDK插件
- PhoneGap SDK
- mPaaS SDK
- ReactNative SDK
- Flutter SDK
- Java SDK
- Python SDK
- PHP SDK
- C++ SDK
- C# SDK
- Node JS SDK
- Lua SDK
- Golang SDK
- SDK FAQ
- identify与alias的区别
- 爬虫数据如何识别?
- 页面停留如何获取时间?
- 如果获取SDK及更新日志
- 代码埋点和无埋点有什么区别
- Web页面中发现丢失某一个事件
- 自研 SDK 注意事项
- 页面时长统计功能
- 飞书小程序 SDK
- 飞书小程序标准版
- 飞书小程序通用框架版
- Unreal Engine SDK
- 数据验证
- 客户端埋点验证
- Debug 数据验证
- 数据入库验证
- 数据导入
- 接口导入
- JAVA工具包
- 标准json文件导入
- csv格式导入
- 数据导入FAQ
- 数据导出
- JAVA工具包
- 事件数据导出
- 用户数据导出
- 直接从Kafka中消费数据
- 使用程序访问数据库
- 脚本工具
- API
- 分析API
- 事件分析
- 留存分析
- 自定义查询
- 转化漏斗
- 属性分析
- Session分析
- 渠道分析
- 分布分析
- 用户API
- 分群查询
- 用户档案
- 分群管理
- 管理API
- 权限管理
- 元数据管理
- 埋点方案管理
- 维度表管理
- 运营API
- 广告跟踪
- APP推广监测
- 平台管理API
- 项目管理
- 成员管理
- 第三方登录
- OAuth2.0登录
- LDAP登录
- GDPR 合规
- Part III 常见问题
- License 许可
- 产品试用及采购
- 参与贡献