导语:什么是埋点?咱们为何须要懂埋点?易观方舟官网项目经理李伟涛,经过自身经验实例为你们深刻浅出解析,做为技术工程师、程序员,也为了更好推动公司业务产品及项目,在运营市场提出需求以前,咱们也能够提早作好一份可行性的埋点设计方案。程序员
不少人看到这个一脸懵,埋点究竟是啥玩意儿,这么技术专业的知识也要强制“人人都该懂”?其实不是,我想说的埋点知识,也是配合运营和市场部门的一项重要工做。函数
说到埋点,不得不说的就是目前比较火的运营分析工具,市场部门在作产品推广和产品迭代时,离不开市场对产品的反馈,以往作法是经过作不少的调查问卷,让客户给予反馈,这些问卷相比如今的分析工具收集的信息有其局限性,好比问题属于提早设计,有误导用户之嫌,用户只是枯燥地执行选项选择,可能心里真实的想法并无列在选项之中。工具
这样的数据每每达不到收集数据的初衷,用户真实的想法是什么?产品功能用户使用状况到底如何?使用频率又是怎么样?这些是企业市场部和产品经理最关心的问题。网站
埋点其实就是运营分析工具收集用户行为的一种方式,它能够将用户在产品上面的点击和浏览状况,经过数据可视化直观展示给市场运营及产品人员。spa
埋点目前有全埋点、可视化埋点和代码埋点三种主流方式,全埋点和可视化埋点在操做上面并无很明确的区分,主要区别在于圈选的元素范围上面,这两种都是无埋码实现数据采集。全埋点和可视化埋点比较适合给运营和市场人员使用,界面上简单圈选就能够生成一个埋点。使用可视化埋点基本上能够涵盖大部分的埋点场景。设计
可是若是有一些属性须要计算过以后才上报,好比商品数量和商品总价,那么就须要咱们技术人员经过代码埋点来配合实施。code
代码埋点顾名思义,就是经过在源码里面写上一个埋点代码,而后上报用户点击的行为数据。咱们以易观方舟官网(https://ark.analysys.cn)为例:blog
好比我想了解易观方舟官网首屏上,那个“体验Deo”按钮的点击状况,进而了解其点击率和按钮转化率,那么咱们就能够在这个按钮上面增长埋点。这里我主要举例JS端的埋点,其它端埋点思路一致。事件
易观方舟官网(https://ark.analysys.cn)
我在作这个埋点时,会根据“业务类型”+“空间位置”+“页面地址”这三个纬度来命名这个埋点事件。部署
上面就是一个按钮点击的埋点部署,是否是很简单?其实埋点在代码执行层面并不难,无非就是在合适的位置放上一段代码,但是如何设计埋点、哪些埋点须要放,哪些埋点应该上报属性,哪些埋点又可让运营人员本身经过可视化完成埋点,这就须要咱们对业务有必定的了解,这样可让代码埋点更合理而少作无用功。
设计埋点并不彻底是运营和产品人员的事情,技术也能够设计一套符合业务场景的埋点方案。在作页面研发时就能够将埋点作好,页面上线就能够统计数据,也并不须要运营同事联系你才作,若是按照业务倒追技术来埋点的流程,一来二去,企业已经丢失了1天的用户行为数据,这是很是得不偿失。
那么做为技术人员,该如何设计埋点方案呢?咱们能够业务场景和代码实施两个方面说:
一、业务场景
继续以易观方舟官网为例,方舟官网体验demo按钮最多,基本上每一个页面都有一个,若是按照上面那行代码来部署的话,一样的业务场景,咱们埋了很是多的点,后期统计体验Demo按钮点击状况时,要将全部的体验Demo按钮事件并列统计,这很是不合理。
针对这样的状况,咱们应该经过属性区分,事件名都是同一个,经过一个属性值来区分不一样的位置。
这样咱们将同一个业务场景的事件归为一个事件,既能够全面统计也能够单一统计。
再举个例子,咱们常常要统计一个表单的输入状况,好比注册表单里验证手机号和发送验证码这个场景,通常作法会在验证码发送成功以后上报一个“验证码验证成功事件”。
若是咱们考虑的再细致点,好比输入手机号和点击发送验证码两步的漏斗状况如何?输入手机号和验证成功漏斗状况如何?那么这里就不仅仅是一个事件就能够了。
咱们须要将表单细化到每步操做,好比用户输入手机号以后,失去光标时,上报输入手机号事件,属性值为手机号。
咱们将一个事件细化以后,就能够知道哪些用户输入了手机号而且收到了验证码,哪些用户没有收到验证码。
这有个好处就是,假设短信供应商出现了问题,没有及时发送验证码,咱们能够作后期弥补,整理出没有发送成功的用户,再次群发,以防止客户流失。
从上面两个例子,咱们能够看出有些步骤运营人员是不清楚的,好比手机验证这个过程,这就须要咱们技术工程师来理解场景,补充运营提供的埋点方案。
二、代码部署
一个优秀的程序员,会将重复使用的功能进行代码封装,埋点也同样,埋点虽然事件名称不同,可是逻辑大致一致。
好比易观方舟官网体验demo按钮,每次点击时咱们会判断用户是否登陆,登陆的用户直接跳转到具体demo页,没有登陆的用户咱们会引导登陆。
易观方舟官网这么多体验emo按钮,每一个按钮都去写一个判断那不是会疯掉吗?因此咱们将这类操做封装为一个函数,而后将每一个按钮上面带上他的位置说明,这样只要触发这个按钮,就能够将位置信息做为参数形式,传递给埋点事件。
上面是一个判断是否登陆接着执行下一步动做的场景。咱们再来想一个场景,假设咱们是一家电商网站,加入购物车、提交订单、支付订单这些事件都是有一个共有属性那就是商品ID和商品名称,咱们能够将这类事件统一封装为一个函数,集中处理共用属性,简化事件上报操做。
代码埋点主要针对须要上报具体属性的事件,好比加入购物车,输入手机号等等,若是只是为了统计按钮点击量,那么可让运营同事直接使用可视化埋点进行圈选。
埋点这个事情确实很简单,好比易观方舟的埋点就一行代码,主要仍是在场景运用中去思考更好的方案。上面咱们抛出了一些埋点的具体思路,主要仍是为了将埋点这个工做作得更好。
一个好的埋点设计能节省咱们不少时间,少走不少弯路。还要注意一个点就是,变化是恒久不变的规则,咱们的埋点设计也应该拥抱变化,不要为了一个业务场景去写一段代码,应该和运营同窗一块儿沟通这场景的目的是什么,从而联想更多的场景,将埋点尽量地作细致。不然隔三差五运营过来找你修改埋点时,你会很是头大。
记录埋点信息,将咱们作过的埋点事件ID和备注名称记录到表格,方便后期排查埋点问题时使用。有时运营同窗也会问某个按钮的埋点事件是哪一个,这个时候你的表格就派上了用场,很是方便。易观方舟能够动态管理埋点信息、支持线上搜索,这个工做咱们程序员却是省了不少力气。
文至尾声,我也来作个总结。埋点是收集用户行为完善咱们产品的重要工做,做为埋点实施者不仅仅是为了配合运营去执行埋点,应该融入咱们技术角度的思考,将这个事情作得更完美,保证数据准确的同时,也让埋点代码作得够灵活,同时方便咱们后期维护和修改。
(本文做者:易观方舟官网项目经理 李伟涛)