给技术同学的建议:人人都该懂的埋点知识

李伟涛 2020-05-18
什么是埋点?我们为什么需要懂埋点?易观方舟官网项目经理李伟涛,通过自身经验实例为大家深入浅出解析,作为技术工程师、程序员,也为了更好推进公司业务产品及项目,在运营市场提出需求之前,我们也可以提前做好一份可行性的埋点设计方案。

​导语:什么是埋点?我们为什么需要懂埋点?易观方舟官网项目经理李伟涛,通过自身经验实例为大家深入浅出解析,作为技术工程师、程序员,也为了更好推进公司业务产品及项目,在运营市场提出需求之前,我们也可以提前做好一份可行性的埋点设计方案。

 

 

很多人看到这个一脸懵,埋点到底是啥玩意儿,这么技术专业的知识也要强制“人人都该懂”?其实不是,我想说的埋点知识,也是配合运营和市场部门的一项重要工作。

 

说到埋点,不得不说的就是目前比较火的运营分析工具,市场部门在做产品推广和产品迭代时,离不开市场对产品的反馈,以往做法是通过做很多的调查问卷,让客户给予反馈,这些问卷相比现在的分析工具收集的信息有其局限性,比如问题属于提前设计,有误导用户之嫌,用户只是枯燥地执行选项选择,可能内心真实的想法并没有列在选项之中。

 

这样的数据往往达不到收集数据的初衷,用户真实的想法是什么?产品功能用户使用情况到底如何?使用频率又是怎么样?这些是企业市场部和产品经理最关心的问题。

 

一摸瞎的开发产品浪费资源的同时,更危险的是错过产品黄金增长期。

 

埋点其实就是运营分析工具收集用户行为的一种方式,它可以将用户在产品上面的点击和浏览情况,通过数据可视化直观展现给市场运营及产品人员。

 

埋点目前有全埋点、可视化埋点和代码埋点三种主流方式,全埋点和可视化埋点在操作上面并没有很明确的区分,主要区别在于圈选的元素范围上面,这两种都是无埋码实现数据采集。全埋点和可视化埋点比较适合给运营和市场人员使用,界面上简单圈选就可以生成一个埋点。使用可视化埋点基本上可以涵盖大部分的埋点场景。

 

但是如果有一些属性需要计算过之后才上报,比如商品数量和商品总价,那么就需要我们技术人员通过代码埋点来配合实施。

 

代码埋点顾名思义,就是通过在源码里面写上一个埋点代码,然后上报用户点击的行为数据。我们以易观方舟官网(https://ark.analysys.cn)为例:

 

比如我想了解易观方舟官网首屏上,那个“体验Demo”按钮的点击情况,进而了解其点击率和按钮转化率,那么我们就可以在这个按钮上面增加埋点。这里我主要举例JS端的埋点,其它端埋点思路一致。

 

 

我在做这个埋点时,会根据“业务类型”+“空间位置”+“页面地址”这三个纬度来命名这个埋点事件。

 

  • 页面地址:首页

  • 空间位置:首屏

  • 业务类型:体验Demo的点击情况

 

上面就是一个按钮点击的埋点部署,是不是很简单?其实埋点在代码执行层面并不难,无非就是在合适的位置放上一段代码,可是如何设计埋点、哪些埋点需要放,哪些埋点应该上报属性,哪些埋点又可以让运营人员自己通过可视化完成埋点,这就需要我们对业务有一定的了解,这样可以让代码埋点更合理而少做无用功。

 

何设计埋点

 

设计埋点并不完全是运营和产品人员的事情,技术也可以设计一套符合业务场景的埋点方案。在做页面研发时就可以将埋点做好,页面上线就可以统计数据,也并不需要运营同事联系你才做,如果按照业务倒追技术来埋点的流程,一来二去,企业已经丢失了1天的用户行为数据,这是非常得不偿失。

 

那么作为技术人员,该如何设计埋点方案呢?我们可以业务场景和代码实施两个方面说:

 

1、业务场景

 

继续以易观方舟官网为例,方舟官网体验demo按钮最多,基本上每个页面都有一个,如果按照上面那行代码来部署的话,同样的业务场景,我们埋了非常多的点,后期统计体验Demo按钮点击情况时,要将所有的体验Demo按钮事件并列统计,这非常不合理。

 

针对这样的情况,我们应该通过属性区分,事件名都是同一个,通过一个属性值来区分不同的位置。

 

 

这样我们将同一个业务场景的事件归为一个事件,既可以全面统计也可以单一统计。

 

再举个例子,我们经常要统计一个表单的输入情况,比如注册表单里验证手机号和发送验证码这个场景,一般做法会在验证码发送成功之后上报一个“验证码验证成功事件”。

 

如果我们考虑的再细致点,比如输入手机号和点击发送验证码两步的漏斗情况如何?输入手机号和验证成功漏斗情况如何?那么这里就不单单是一个事件就可以了。

 

我们需要将表单细化到每步操作,比如用户输入手机号之后,失去光标时,上报输入手机号事件,属性值为手机号。

 

 

我们将一个事件细化之后,就可以知道哪些用户输入了手机号并且收到了验证码,哪些用户没有收到验证码。

 

这有个好处就是,假设短信供应商出现了问题,没有及时发送验证码,我们可以做后期弥补,整理出没有发送成功的用户,再次群发,以防止客户流失。

 

从上面两个例子,我们可以看出有些步骤运营人员是不清楚的,比如手机验证这个过程,这就需要我们技术工程师来理解场景,补充运营提供的埋点方案。

 

2、代码部署

 

一个优秀的程序员,会将重复使用的功能进行代码封装,埋点也一样,埋点虽然事件名称不一样,但是逻辑大体一致。

 

比如易观方舟官网体验demo按钮,每次点击时我们会判断用户是否登录,登录的用户直接跳转到具体demo页,没有登录的用户我们会引导登录。

 

易观方舟官网这么多体验emo按钮,每个按钮都去写一个判断那不是会疯掉吗?所以我们将这类操作封装为一个函数,然后将每个按钮上面带上他的位置说明,这样只要触发这个按钮,就可以将位置信息作为参数形式,传递给埋点事件。

 

 

上面是一个判断是否登录接着执行下一步动作的场景。我们再来想一个场景,假设我们是一家电商网站,加入购物车、提交订单、支付订单这些事件都是有一个共有属性那就是商品ID和商品名称,我们可以将这类事件统一封装为一个函数,集中处理共用属性,简化事件上报操作。

 

 

代码埋点主要针对需要上报具体属性的事件,比如加入购物车,输入手机号等等,如果只是为了统计按钮点击量,那么可以让运营同事直接使用可视化埋点进行圈选。

 

埋点这个事情确实很简单,比如易观方舟的埋点就一行代码,主要还是在场景运用中去思考更好的方案。上面我们抛出了一些埋点的具体思路,主要还是为了将埋点这个工作做得更好。

 

一个好的埋点设计能节省我们很多时间,少走很多弯路。还要注意一个点就是,变化是恒久不变的规则,我们的埋点设计也应该拥抱变化,不要为了一个业务场景去写一段代码,应该和运营同学一起沟通这场景的目的是什么,从而联想更多的场景,将埋点尽可能地做细致。否则隔三差五运营过来找你修改埋点时,你会非常头大。

 

记录埋点信息,将我们做过的埋点事件ID和备注名称记录到表格,方便后期排查埋点问题时使用。有时运营同学也会问某个按钮的埋点事件是哪个,这个时候你的表格就派上了用场,非常方便。易观方舟可以动态管理埋点信息、支持线上搜索,这个工作我们程序员倒是省了很多力气。

 

总结

 

文至尾声,我也来我做个总结。埋点是收集用户行为完善我们产品的重要工作,作为埋点实施者不单单是为了配合运营去执行埋点,应该融入我们技术角度的思考,将这个事情做得更完美,保证数据准确的同时,也让埋点代码做得够灵活,同时方便我们后期维护和修改。