后端埋点
后端埋点
后端埋点
背景:客户端埋点 or 服务端埋点
埋点方式分为 客户端埋点 和 服务端埋点 两种。如何选取最合适的埋点方式,确保数据完整、准确、高效上报?
一、客户端埋点与服务端埋点结合
发挥各自优势
客户端埋点适用于 用户界面行为 的上报,服务端埋点适用于 业务操作 的上报。
以经典的「电商购买」业务流程为例:
当选择上述 4 个事件的埋点方式时,「打开商品详情页」、「加入购物车」、「提交订单」这 3 个事件均为客户端的用户行为,一般建议使用客户端埋点,因为:
客户端可采集的字段更丰富;
有利于关联用户设备标识与用户行为。
对于「支付成功」这个业务结果事件,一般建议使用服务端埋点,因为:
有利于排除客户端网络环境不稳定造成的数据误差;
如果客户端界面上有多个支付入口,使用服务端埋点可以确保各入口数据完整上报,而客户端埋点容易漏埋。
上述场景将客户端埋点与服务端埋点两种埋点方式相结合,互补各自的优劣势,达到数据的完整、准确、高效上报。
客户端埋点与服务端埋点的优劣势
此外,在埋点资源上,客户端埋点需要多个客户端(Android、iOS、PC)开发团队的埋点资源,而使用服务端埋点,则可以节省多个开发团队的沟通成本。
二、服务端埋点适用业务场景
服务端埋点适用于哪些实际场景呢?以下是 2 个实际的业务场景举例:
例如,对于某地产中介公司来说,拨打 400 电话是衡量有效转化的关键业务操作数据。对于拨打 400 电话这个行为,发生的入口比较多,使用服务端埋点,可以确保数据上报的完整性。
通过服务端埋点准确地获取了这个关键业务数据后,即可打通用户的拨打记录与客户端采集的浏览、搜索等数据,实现用户行为数据与业务结果数据的打通。
再如,某工具类 SaaS 公司,需要监测用户每一步的转化率和转化周期,因此需要搭建注册 - 成为有效线索 - 成为商机 - 首次付费成功这样的业务漏斗。有效线索、商机以及付费等业务状态在客户端没有体现,使用服务端埋点,即可使用漏斗完成上述业务监测需求。
以上就是服务端埋点的适用场景介绍和举例。大家在设计埋点方案时,需要结合实际分析需求,选择最合适的埋点方式,保证使用的数据全面、准确,打好数据驱动业务增长的基础。
我们什么样的需求可以用到后端埋点?
三、后端埋点java-sdk
埋点方案
基于市面上已有的开源方案,改造源码。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OGmMTGJp-1611305949058)(https://le3oato71n.feishu.cn/space/api/box/stream/download/asynccode/?code=N2RmNGE4MWUxYWFkMGU5MTBhNzE1MmEzZTgxYTY0YzNfbUVMU3JMYWZ3N3ZUYUtWYko0Q1RsWjNuUTJUbUZiVE5fVG9rZW46Ym94Y25kOWgyeUlnS0lUSjFyNkJaR1liZ3VoXzE2MTEzMDQ4NTY6MTYxMTMwODQ1Nl9WNA)]
后端 SDK 功能清单
Consumer类型 | 功能介绍 |
---|---|
AsyncConsumer | 该 Consumer 使用独立的线程进行数据发送,发送数据到NSQ队列 |
ConsoleConsumer | 该 Consumer用于将数据输出到 console |
SDK使用
Tracker tracker = new Tracker(new ConsoleConsumer(new PrintWriter(System.out)));
// 用户的 Distinct ID
String distinctId = "ABCDEF123456789";
// 用户浏览商品
{
Map<String, Object> properties = new HashMap<String, Object>();
// '$time' 属性是系统预置属性,表示事件发生的时间,如果不填入该属性,则默认使用系统当前时间
properties.put("$time", new Date());
// '$ip' 属性是系统预置属性,如果服务端中能获取用户 IP 地址,并填入该属性,神策分析会自动根据 IP 地址解析用户的省份、城市信息
properties.put("$ip", "123.123.123.123");
// 商品 ID
properties.put("ProductId", "123456");
// 商品类别
properties.put("ProductCatalog", "Laptop Computer");
// 是否加入收藏夹,Boolean 类型的属性
properties.put("isAddedToFav", true);
// 记录用户浏览商品事件
sa.track(distinctId, true, "ViewProduct", properties);
}
SDK已开发部分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cZv8KIoV-1611305949059)(/Users/scott/Library/Application Support/typora-user-images/image-20210122164034103.png)]