一、什么是埋点?
所谓“埋点”,是数据采集领域的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。在此过程中收集所需信息,以跟踪用户的使用情况,最后分析数据作为后续迭代产品或者运营工作的数据支撑。
埋点也是为了满足快捷、高效、丰富的数据应用而做的用户行为过程及结果记录。数据埋点是一种常用的数据采集的方法。埋点是数据的来源,采集的数据可以分析网站/APP的使用情况,用户行为习惯等,是建立用户画像、用户行为路径等数据产品的基础。
最后后台可以统计出各个点击事件和预置事件,根据得到的数据还原出用户的各种行为,最终将这些数据可视化出来,进行深入分析。
二、埋点的作用
- 提高渠道转化:通过跟踪用户的操作路径,找到用户流失的节点,比如支付转化率,通过漏斗分析,就能分析出用户在哪个环节流失率最大,找到问题并给予优化。
- 精准客户运营:按照一定需求对用户打标签或分组,实现精准营销、智能推荐(千人千面)等。比如根据(电商)用户浏览行为、收藏行为、加购行为、 购买行为,可用按商品到底等维度进行分组,推荐不同价格的商品给不同分组的用户。
- 完善客户画像:基本属性(性别、年龄、地区等),行为属性。
- 数据分析:埋点作为原料放在数据仓库中。提供渠道转化、个性推荐等。
- 改善产品:通过用户行为分析产品是否有问题,例如用户有没有因为设计按钮过多导致用户行为无效等问题,以此发现功能设计缺陷等。
三、埋点技术方式有哪些?
(一)代码埋点
代码埋点:监测网站上用户的行为,或者app上用户的行为,是需要在网站的每一页或者app中加上一些程序代码的(这里就不考虑日志分析这种方法了)。这样的程序代码,在网站上叫监测代码,在app中叫SDK。市场上的第三方数据采集均支持代码埋点,GA,GrowingIO,神策。
代码埋点原理就是在APP或者界面初始化的时候,初始化第三方数据分析服务商的SDK,然后在某个事件发生时就调用SDK里面相应的数据发送接口发送数据。例如,我们想统计APP里面某个按钮的点击次数,则在APP的某个按钮被点击时,可以在这个按钮对应的OnClick 函数里面调用SDK提供的数据发送接口来发送数据。
优势:
1)采集的数据比较具有针对性,更加适合精细化数据分析
2)同时也能提高数据的准确性
劣势:
1)人力成本高
2)有时候依赖App发版来生效
适用场景:
1)有具体的业务分析需求,且按照各个事件埋点的方式不能满足
2)需要对埋点事件进行传参等自定义属性设置
(二)可视化埋点
可视化埋点:利用可视化交互手段,数据产品/数据分析师可以通过可视化界面(管理后台连接设备) 配置事件。可视化埋点仍需要先配置相关事件,再采集。TalkingData、诸葛IO、移动应用分析等均可使用。
优势:
1)简单、方便,快速埋点。无需技术进行SDK嵌入,运营人员也可通过后台可视化界面配置和统计埋点并实时发送到客户端生效
2)对所有版本生效,不存在迭代问题
劣势:
1)比较受限,上报行为信息有限
2)可覆盖功能有限,目前不是所有控件操作都可通过这种方案定制
3)不能自定义交互事件属性
4)不支持不断加载的内容瀑布流式交互
适用场景:
1)分析或统计需求简单,不需要对埋点事件进行传参等自定义属性
2)频繁上线或更新的H5类型的运营活动。
(三)全埋点(无埋点)
全埋点是指开发人员集成采集SDK 后,SDK 便直接开始捕捉和监测用户在应用里的所有行为,并全部上报,不需要开发人员添加额外代码。
数据分析师/数据产品 通过管理后台的圈选功能来选出自己关注的用户行为,并给出事件命名。之后就可以结合时间属性、用户属性、事件进行分析了。所以无埋点并不是真的不用埋点了。目前市场第三方工具GrowingIO支持无埋点全量行为数据抓取
优势:
1)不需要埋点,方便快捷
2)直观,对点击率大的元素可以深入分析
3)可以在系统上线后使用,支持基于全量的数据回溯,因为无埋点在你部署SDK的时候数据就一直在收集,可帮助进行启发式、探索式的数据分析
劣势:
1)传输数据比较大,需要消耗一定的数据存储资源
2)无法采集自定义属性
3)数据形式没有按照实际业务需求进行事件设置,在使用时需要进行二次处理
适用场景:
1)分析或统计需求简单,不需要对埋点事件进行传参等自定义属性
2)频繁上线或更新的H5类型的运营活动
四、埋点的分类
按照获取数据的类型以及用户触发行为的不同,埋点一般可以分为以下几种:
(1) 点击事件
用户在应用内的每一次点击行为,都可以记为一次点击事件。比如按钮的点击,区域的点击,商品的点击,每一条新闻的点击等,都可以成为一个点击事件。
一般通过点击事件,我们可以拿到点击PV,点击UV。
(2) 曝光事件
曝光事件是为了统计应用内的某些局部区域是否被用户有效浏览。比如推荐区域,某个按钮,首焦等等。
比如一般来说我们在衡量页面某个区域用户的点击率的时候,首先需要搞清楚的就是这个区域到底被多少用户看到了,每被用户看到一次就是一个简单的曝光事件,然后才能计算点击率。
做曝光埋点的时候需要注意两个事情:第一,有效曝光的定义要科学,合理;第二,为了不影响页面性能以及用户体验,不能在应用内的所有区域都加曝光埋点。
3. 页面事件
页面事件通常是指页面的各种维度信息的统计。常见的比如页面浏览PV,页面浏览UV。
页面事件通常统计的信息包括以下几个部分:
- 浏览器信息:浏览器版本,浏览器语言,浏览器编码,屏幕分辨率等等;
- 访问信息:用户账号,当前页面url,上次访问时间,访问时长,页面停留时间等等;
- 来源信息:广告来源,上一页面url等等;
- 物品信息:不同的业务,这部分信息区别很大。
页面事件通常通过页面参数来传递
五、埋点发送方式
埋点发送即将埋点相关数据发送给数据平台,一般有接口方式、img 标签方式和 sendBeacon 三种方式。
- 接口方式:通过接口的形式将埋点的信息进行上报,兼容性比较好,但是一些网站可能会禁用脚本,导致失效。
- 创建 img 标签:很多公司都采用 img 标签携带埋点信息进行上报,一方面是图片请求不存在跨域限制(一般而言,埋点发送域名都不是当前域名),另一方面图片标签不需要真正插入到 DOM 节点中,只需要实例化 Image,设置 src 属性就会发出请求,不会阻塞页面渲染,对性能影响较小。为了追求埋点请求尽可能小,大多采用的是 1*1 像素的透明 GIF 来上报,因为在各种图片格式下,这种相对较小。
- sendBeacon 发送该 api 是专门被设计来满足统计和诊断代码的需要,通常需要在页面卸载之前,将相关埋点发出。过早的发送数据可能导致错过收集数据的时机,因此需要等到页面即将卸载时发送数据。在 sendBeacon 出现之前,很难保证在页面卸载之前,可以将数据成功发送,因为用户代理通常会忽略在 unload 事件处理器中产生的异步 XHR。过去为了解决这个问题,开发者们想出了一些 hack 的方法:但是无独有偶,上述方法都存在一个问题,那就是会延迟当前页面的卸载,导致下一个页面出现的更晚。而 sendBeacon 不存在上述问题,它数据发送是可靠的、是异步的,正由于异步发送数据,所以不影响下一导航的载入。一般可以监听 visibilitychange 的 hidden 状态来发送埋点