我们做产品、做运营,都离不开数据分析,而做数据分析的前提,是我们保存了用户行为数据。埋点,就是将我们关心的数据保存下来的技术。
举个例子,我们有个落地页,我们想知道有多少人来到了落地页,多少人看完了落地页的文案素材,多少人点击了转化按钮最终完成了转化。那么我们就需要记录每一个用户的访问记录、浏览行为记录、转化按钮点击记录等等。
在埋点里,这些用户的行为记录,就是事件。
如果我们想进一步分析,不同类型(男女老幼)、不同来源的用户,转化率之间的区别时,我们还需要在用户访问记录里,增加一些信息,例如用户性别、年龄、来源等等。这些信息,我们称之为属性。
事件和属性,就构成了埋点的基础。
假设我们完整记录下了所有用户,在我们产品里的所有行为和属性时,理论上,我们就能够分析所有用户的行为习惯、产品效果。
当然,完整记录所有的数据,几乎不太可能。我们只能根据需求,记录我们定义好的少部分数据信息。这个定义和记录的过程,就是我们常说的埋点流程。
埋点的一般流程
埋点的前提,是我们知道自己需要什么样的数据。
比如前文所说的:想知道有多少用户来到了落地页(分不同性别年龄来看),多少人看完了落地页的文案素材,多少人最终完成了转化。
下一步,我们就可以将这些数据,拆分成具体的事件和需要上报的属性。比如:
- 访问落地页事件:当用户访问落地页时上报用户ID、性别、年龄、访问时间等数据
- 落地页浏览事件:当用户到达落地页末尾时上报用户ID、浏览时间等数据
- 转化事件:当用户点击「购买」按钮时上报用户ID、转化事件等数据
- ……
这里的字段,就是属性。
当然,上述的拆分过程,一般是由数据分析师或数据产品完成。接下来,我们需要将这些事件和属性,告诉业务开发,让他们在代码里增加上报逻辑。在这些事件发生时,将对应的上报信息,上报到数据服务器。
一旦到了数据服务器,我们就可以通过SQL等工具,完成数据提取和分析了。
上面所说的这种埋点方式,就是代码埋点,即:将上报的逻辑,直接写到业务代码里。
代码埋点分为前端埋点和后端埋点,区别在于埋点逻辑是放在前端完成,还是后端完成。
- 前端埋点,基本上是由客户端、前端页面,直接将用户的行为记录下来,进行上报。因此可以记录得非常详细齐全,一些本地完成的操作,也可以得到上报。
- 而后端埋点,是将用户与服务端的交互记录进行上报。由于服务端记录比较精准,因而这种数据一般都比较可靠。而且一些没有发生在用户界面上的操作变化,也能通过后端埋点记录下来,比如商品库存的变化。
不过话说回来,代码埋点还是有一些缺点的。比如它会侵入业务代码,带来更多的维护成本。
当然,还有一些别的埋点方式。
一种是全埋点,或者叫无埋点。所谓全埋点,就是将预先定义的某类事件(通常包括这四种事件类型:APP启动、APP关闭、页面访问、元素点击),通过SDK实现完全自动上报。比如当用户访问本产品的任何页面时,都会自动上报PV数据。
自动上报数据时,会将页面的名称、按钮的名称等作为属性信息上报,方便我们理解用户访问了哪个页面,点击了什么按钮。
当然,这也就意味着页面和按钮名称需要尽可能统一好理解。实现全埋点时,需要规范页面和元素的命名规则。
SPM码的全称是 super position model(超级位置模型),它通过五个字符串,将一个页面功能位置,唯一标识出来,下面是一个SPM码的格式:
SPM=SPMA.SPMB.SPMC.SPMD.SPME
- SPMA 唯一标识一个站点
- SPMB 唯一标识某站点的一个页面
- SPMC 唯一标识某页面的一个区块
- SPMD 唯一标识某区块的一个具体位置
- SPME 随机生成的字串,跟时间有关系,在循环页面计算时可以区分点击的时序
埋点是数据分析的基础,埋点的全面和准确,对数据分析非常有价值。
对一般的业务来说,通常会使用前端+后端埋点的组合方式:
前端记录用户的行为日志,采用全埋点+代码埋点的综合模式,对页面访问等基础事件,全面记录和上报。对一些功能事件,增加专门的埋点事件。
后端同步各项精准的业务数据日志,建立维度信息表,确保数据的准确性和全面性。