本文主要介绍了数据埋点是什么、为什么要数据埋点、数据埋点的几种方式、触发埋点的几种事件,最后通过一个简单的埋点案例介绍了埋点数据的格式。
解读 1: 数据埋点是针对特定用户行为或事件进行捕获、处理和发送的相关技术,是一种常用的数据采集方法;采集的数据可以帮助业务人员分析网站或者 APP 的使用情况、用户行为习惯等,是后续建立用户画像、用户行为路径等数据产品的基础。
解读 2: 数据埋点是数据产品经理、数据运营以及数据分析师,基于业务需求、产品需求对用户行为的每一个事件对应的位置进行开发埋点,并通过 SDK 上报埋点的数据结果,记录数据汇总后进行分析,推动产品优化或指导运营。
解读 3:
解读 4: 数据埋点是数据采集的一种重要方式,主要用来记录和收集终端用户的操作行为,其基本原理是在App/H5/PC等终端部署采集的SDK代码,当用户的行为满足某种条件的时候,比如进入某个页面、点击某个按钮等,会自动触发记录和存储,然后这些数据会被收集并被传输到终端提供商,或者是通过后端采集用户使用服务过程中的请求数据。
一个典型的埋点采集处理流程如下图所示:
数据埋点的表现是采集用户行为数据,目标是通过分析采集的数据来推动产品优化或指导运营。
埋点主要目的是为了弥补应用系统(主要是网站或者app)在设计时的不足。任何一个系统在设计初始阶段只关心核心业务的功能,等到系统上线以后,数据分析师对用户行为分析时会发现缺少很多数据,此时需要采用埋点的方法进行采集需要的数据。
具体来说就是在系统代码里面添加一些额外的代码来采集需要的数据进行精细化数据分析。比如在电商行业,当用户点击“购物车“时,这是一次交互行为,也是系统的核心功能,但是忽略了用户信息、商品品类等其他维度的信息。我们需要采用埋点的方法嵌入额外的代码来辅助采集数据,进而实现深度的数据分析。
从本质上讲,埋点是为了对产品的持续追踪,通过深度数据分析不断优化产品。
比如用户点击率怎么样?用户在核心使用路径上是否顺畅?有没有得到用户的认可?有没有因为设计按钮过多导致用户行为无效?用户希望有什么样的功能更新?
这些问题都可以通过数据埋点的方法实现,因此埋点贯穿了产品的整个生命周期,为产品优化指明了方向。
埋点方式主要分为代码埋点、可视化埋点、无埋点(全埋点)、服务端埋点四种。
代码埋点主要由工程师手工在程序中写代码实现,通过触发某个动作后程序主动发送数据。
界面化埋点管理配置无需开发人员介入,更便捷的埋点更新,生效快。
它要求必须在页面上嵌入数据采集基础SDK,无需人工埋点,一切操作皆自动埋点,统计数据按需处理,这等于做了一个统一的埋点,因此又被称为全埋点。
数据埋点不仅有前端埋点,还有服务器后端埋点,它能够收集不在前端发生的行为,只要有网络请求就可以记录下来,它能够实时收集,不存在延时上报的问题,但是没有网络就很难收集到数据,这也是服务器后端埋点的一个弊端。
因此,很多公司都会结合客户端前端埋点和服务器后端埋点两种方式一起埋点,服务器后端数据实时性强、很准确,用户需要请求服务器的关键业务量最好均使用服务器后端埋点。
例如,要根据埋点数据统计中奖用户信息,显然服务器后端数据更合理,客户端前端数据可能会漏掉部分中奖用户,导致用户投诉;客户端前端数据很全,记录了用户绝大多数的操作行为,其他非关键业务量或者不需要请求服务器的行为可以使用客户端前端埋点。
正如同硬币有两面,任何单一的埋点方式都存在优点与缺点,企图通过简单粗暴的几行代码/一次部署、甚至牺牲用户体验的埋点方式,都不是企业所期望的。
要满足精细化、精准化的数据分析需求,可根据实际需要的分析场景,选择一种或多种组合的采集方式,毕竟采集全量数据不是目的,实现有效的数据分析,从数据中找到关键决策信息实现增长才是重中之重。
因此,数据采集只是数据分析的第一步,数据分析的目的是洞察用户行为,挖掘用户价值,进而促进业务增长,故最理想的埋点方案是根据根据不同的业务和场景以及行业特性和自身实际需求,将埋点通过优劣互补方式进行组合。
切记,采集只是手段而不是目的,不以提升业务价值的数据分析,采集“大而全、快而简”的埋点方式,都是耍流氓!
在记录埋点信息时,主要的埋点事件分为点击事件、曝光事件和页面停留三类。
用户每点击页面上的一个按钮一下都会记录一次数据;如下图红框标注所示,点击一次记一次。
成功打开一次页面记一次,刷新页面一次记一次,加载下一页新页,加载一次记一次;home 键切换到后台再进入页面,曝光事件不记;如下图页面所示,打开一次记一次。
页面停留主要用来记录用户在一个页面的停留时间,它可以通过记录用户进入页面的时间 t1 和离开页面的时间 t2 计算,计算公式可以简单地表示为:用户停留时间 = 离开页面时间t1 - 进入页面时间t2。
除了上述的埋点事件,还有其他的埋点事件,例如:页面加截完成事件、服务器响应返回成功事件、屏幕滚动事件等。
我们习惯将数据归纳为两大类:
简单来说,用户访问产品时候的交互动作
触发的是埋点流量数据,用户访问产品看到的内容是业务数据。
用户“点击广告”是“动作”事件,能够生产一条埋点数据,用户看的广告内容是“商品”信息,商品信息是被存储的业务数据。
我们学习数据埋点知识,就是为了设计“记录”用户“动作”的方案
,记录用户“动作”发生的场景
,探索用户“动作”背后的意图
。
埋点数据一般分以下三个部分:
如上图所示为一条具体的商品信息,下面是商品曝光触发的埋点日志:
{
//Part1:配置信息
"user_id":"123", //埋点负责人的账号id
"business":"xx业务", //埋点数据的业务分类
"label":"标签属性",//对埋点数据进行分类,对每个分类打标签
//Part2:环境信息
"uid":"123", //用户唯一ID,只要访问就生成一个新的身份标示
"user_id":"123", //用户的账户ID,仅登录用户可获取得到
"name":"joker",//用户的账户名称,仅登录用户可获取得到
"city_id":"2",//如果用户访问的页面有城市属性,这里可以获取页面的城市属性id
"city_name":"上海",//如果用户访问的页面有城市属性,这里可以获取页面的城市属性值
"locate_city_id":"1",//用户访问时候所定位的城市id
"locate_city_name":"北京",//用户访问时候所定位的城市属性值
"wifi":"on",//用户访问时候wifi的开关状态
"app_version":"10.9.2",//用户当前使用的app版本
"os_version":"11.8.2", //用户当前手机系统的版本
"os_souce":"android" //用户当前的手机系统(Android,iPhone,小程序、web…)
//Part3:事件信息
"evs":[{
"id":"a1234"//坑位模块的全app唯一标示id
"val_val":{ //以下所有数据为同时携带的想要获取的数据内容
"user_id":"123", //访问用户的账号id;
"content_id":"123234", //商品唯一id标示
"title":"conklab连帽潮牌oversize情侣装",//商品标题;
"price":"298",//商品价格;
"business_id":"4",//商品分类属性id
"business":"女装",//商品分类属性
"strategy":"abc123",//不同策略的策略id,用于区分不同策略的数据效果
"shop_id":"123",//商品所属的店铺id
"mark":"双十一",//个性化的数据标签,比如双十一代表此商品正在参加双十一活动
"position":"2",//商品在列表中展示排序的第几个位置
}
}]
}
商品曝光上报策略简单来说就是:当事件本身实际曝光显示在屏幕当中所触发的数据上报策略(露出像素>0px),需要注意下面的事项:
没有特殊限制定义,埋点需要根据坑位颗粒端逐条上报,不做去重处理。
假设我们有网址:https://www.xxxabc.com/about/1.html
(运营促销活动),我们针对这个活动在某网站投放广告引流,最有效的数据埋点方法是对 URL 添加埋点参数如下:https://www.xxxabc.com/about/1.html?source=sina_joker_ad_about_01
。
参数说明:
神策使用事件模型
来描述用户在产品上的各种行为。简单来说,事件模型包括事件(Event)和用户(User)两个核心实体。
在这个年代,每个产品都有着独一无二的核心指标用来衡量产品是否成功,这个指标可能是发帖数量、视频播放数量、订单量或者其它的可以体现产品核心价值的指标,这些都是一个简单的 PV 无法衡量的。
神策分析采用事件模型作为基本的数据模型。事件模型可以给我们更多的信息,让我们知道用户用我们的产品具体做了什么事情。事件模型给予我们更全面且更具体的视野,指导我们做出更好的决策。
简单来说,一个 Event 就是描述了:一个用户(Who)在某个时间点(When)、某个地方(Where),以某种方式(How)完成了某个具体的事情(What)。
从这可以看出,一个完整的 Event,包含如下的几个关键因素:
distinct_id
来设置用户的唯一 ID,对于未登录用户,这个 ID 可以是 cookie、设备 ID 等匿名 ID;对于登录用户,则建议使用后台分配的实际用户 ID;time
字段来记录精确到毫秒的事件发生时间;properties
中的 $ip
属性,这样系统会自动根据 ip 来解析相应的省份和城市,当然,使用者也可以根据应用的 GPS 定位结果,或者其它方式来获取地理位置信息,然后手动设置 $city
和 $province
;$app_version
:应用版本$city
: 城市$manufacturer
: 设备制造商,字符串类型,如 "Apple"$model
: 设备型号,字符串类型,如 "iphone6"$os
: 操作系统,字符串类型,如 "iOS"$os_version
: 操作系统版本,字符串类型,如 "8.1.1"$screen_height
: 屏幕高度,数字类型,如 1920$screen_width
: 屏幕宽度,数字类型,如 1080$wifi
: 是否 WIFI,BOOL 类型,如 true友盟、百度统计等传统分析工具,都是在客户端嵌入 SDK 进行埋点,但是,我们(神策)强烈推荐在后端记录 Event,这是出于以下一些考虑:
基于以上几点考虑,除非某个行为只在前端发生,对后端没有任何请求,否则,我们(神策)建议永远只在后端收集数据。
对产品划分 Event,我们有如下的一些建议:
为每个 Event 进行字段设计,我们有如下的一些建议: