目录

后端埋点

后端埋点

后端埋点

背景:客户端埋点 or 服务端埋点

埋点方式分为 客户端埋点服务端埋点 两种。如何选取最合适的埋点方式,确保数据完整、准确、高效上报?

一、客户端埋点与服务端埋点结合

发挥各自优势

客户端埋点适用于 用户界面行为 的上报,服务端埋点适用于 业务操作 的上报。

以经典的「电商购买」业务流程为例:

当选择上述 4 个事件的埋点方式时,「打开商品详情页」、「加入购物车」、「提交订单」这 3 个事件均为客户端的用户行为,一般建议使用客户端埋点,因为:

客户端可采集的字段更丰富;

有利于关联用户设备标识与用户行为。

对于「支付成功」这个业务结果事件,一般建议使用服务端埋点,因为:

有利于排除客户端网络环境不稳定造成的数据误差;

如果客户端界面上有多个支付入口,使用服务端埋点可以确保各入口数据完整上报,而客户端埋点容易漏埋。

上述场景将客户端埋点与服务端埋点两种埋点方式相结合,互补各自的优劣势,达到数据的完整、准确、高效上报。

https://i-blog.csdnimg.cn/blog_migrate/ae102b0517b412469d95f0e6d2fab18f.png

客户端埋点与服务端埋点的优劣势

此外,在埋点资源上,客户端埋点需要多个客户端(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)]