utm.js文档说明

539 阅读5分钟

接入方法

在页面底部 前添加:

<script src="//cdn.jinlins.com/utm/utm.js" crossorigin="anonymous" async></script>

接入后,系统会自动收集 PV、UV 信息以及 DIV|P|A|IMG|OL|UL|LI|TABLE|TR|TD|DL|DD|INPUT|BUTTON|SELECT|TEXTAREA 的点击事件。

手动上报

你也可以直接调用系统 API 发送埋点:

JINLINS.utm("key")
JINLINS.utm("key", 10) // 附加一个数值
JINLINS.utm("key", ["标签"]) // 附加一个标签
JINLINS.utm("key", { 字段名: 字段值 }) // 附加一个其它字段值

其中,key 的内容可以随意指定,但特定场景的 key 需要统一:

用户注册

用户注册后,需要手动上报:

JINLINS.utm("user.register", {
	uid: "122322", // 如果有,可以提供业务上的用户 UID
	name: "ddddd", // 如果有,可以提供用户账号名
	mobile: "1722**1233", // 如果有,可以提供用户手机号
	// ... 可以扩展更多用户相关的信息,如会员等级
})

用户登陆

用户登陆后,需要手动上报:

JINLINS.utm("user.login", {
	uid: "122322", // 如果有,可以提供业务上的用户 UID
	name: "ddddd", // 如果有,可以提供用户账号名
	mobile: "1722**1233", // 如果有,可以提供用户手机号
	// ... 可以扩展更多用户相关的信息,如会员等级
})

用户注销

用户注销后,需要手动上报:

JINLINS.utm("user.logout", {
	mobile: "1722**1233", // 如果有,可以提供用户手机号
	// ... 可以扩展更多用户相关的信息,如会员等级
})

交互事件

默认系统只统计 DIV|P|A|IMG|OL|UL|LI|TABLE|TR|TD|DL|DD|INPUT|BUTTON|SELECT|TEXTAREA 的点击事件,如果需要统计其它标签(如 <span/>)的点击事件,需要给这个标签添加 data-utm-path 属性:

<span data-utm-path="按钮别名">

如果需要统计其它类型的事件,需要手动上报以 event. 前缀的键 :

JINLINS.utm("event.keydown", {
	key: "A", // 附加更多数据...
})

注意:默认埋点数据不会立即上报,而是有一段延时,如果希望立即上报需要调用 JINLINS.utmFlush()

概念

UTMID

UTMID 用于准确标识一个页面(可以是前端的一个网址或者是客户端的一个 View)

UTMID 的格式是由四个数据用点分割:

渠道号.站点号.频道号.页面号
  • 渠道号(source id):表示访问该页面的来源渠道,比如通过百度搜索、还是通过微信分析、还是通过钉钉等方式进入页面。
  • 站点号(site id):表示该网站或该 APP 的唯一标识,前端的站点号即域名,APP 的站点号即 APP 名。
  • 频道号(channel id):表示页面分类,比如首页中的“借款”、“个人中心”分别是频道;微信中的“聊天”、“联系人”、“我”分别是一个频道,前端的频道号即一级目录,APP 的频道即每个大标签
  • 页面号(page id):表示具体页面,前端的页面号即网址二级或子级地址,APP 的页面号是一个 View

可以使用 JINLINS.utmID() 获取生成的 UTMID,也可以用 JINLINS.utmID('渠道号.站点号.频道号.页面号') 手动设置 UTMID

KEY

KEY 标识用户的操作,比如用户点击按钮、关闭页面、中奖,都用 KEY 区分。 一些通用的操作,系统预定义了一些 KEY 标识。 在自己设计 KEY 时,尽量按规范设计。

PATH

PATH 路径准确标识一个页面内的某个节点或控件,默认前端的 PATH 是一个简化版的 XPATH,如果节点存在唯一ID,则为 #ID,如果节点存在唯一 CLASS,则为 .class,APP的 PATH 是控件的 XPATH

可以使用 data-utm-path 设置控件标识 可以使用 JINLINS.utmPath(节点) 获取自动生成的路径

更多埋点配置

你可以手动增加一些配置以获取更详细的数据

标识页面

系统默认使用网址标识页面,你可以使用如下代码标识页面的别名:

index.html?utm=渠道号
<html data-utm-id="页面号">
<html data-utm-id="频道号.页面号">
<html data-utm-id="站点号.频道号.页面号">

其中 utm 的值用于唯一标识当前页面,且不发生变化,由运营人员/产品提供。

标识组件

系统默认使用组件路径标识页面,你可以使用以下代码标识组件:

<button data-utm-path="按钮别名">

原理

用户的任意操作都可能产生一条埋点数据,每次数据产生时会加入队列。 系统会每隔 200 毫秒上报并清空队列。

最终的上报数据格式为:

{
	utm: "渠道号.站点号.频道号.页面号",  // 页面唯一定位信息
	vid: "用户标识",			// 用户首次访问时系统分配的唯一标识,永不更新
	branch: "a",			// (可选)如果启用了 ABTest,则为当前分支
	logs: [						// 所有埋点数据
		{
			utm: "渠道号.站点号.频道号.页面号",  //(可选) 页面唯一定位信息(如果存在则覆盖全局)
			key: "event.click",		// 数据类型(非空)
			time: 12323223232,		// 客户端时间戳(相对于 1970)
			tags: ["abc"],			// (可选)自定义数据标签
			extra: {}			// (可选)自定义数据扩展
		}
	]
}

如果用户首次进入,会自动上报包含设备信息的一条数据:

{
	key: "pipe.visitor",
	extra: {
		cpu: "arm", // CPU 架构
		concurrency: 2, // CPU 核数
		memory: 4, // 用户内存 (G)
		maxTouchPoints: 1, // 最大支持的触控数,如果为 0 表示不支持触屏
		screenWidth: 1920, // 屏幕物理水平分辨率
		screenHeight: 760, // 屏幕物理垂直分辨率
		screenColors: 24, // 屏幕真彩色
		devicePixelRatio: 1, // 设备放大比
		language: ['zh-CN', 'zh'], // 用户语言
		dateOffset: 8,  // 所在时差
		networkType: "WIFI", // WIFI/2G/3G/4G/未知/无网络/飞行模式
		osName: "Windows" | "OSX" | "iOS" | "Andriod" | "Linux" | "WinPhone", // 操作系统
		osVersion: "7", // 操作系统版本
		
		// 浏览器专用
		cookies: true,	// 是否支持 Cookies
		webSockets: true, // 是否支持 WebSockets
		canvas: true, // 是否支持 Canvas
		storage: true, // 是否支持本地存储
		userAgent: "", // 用户 UA
		
		// 客户端专用
		vendor: "samsung",
		model: "SM-G9500",
		carrier:"中国移动", // 中国移动/中国联通/中国电信
		appVersion:"1.0.0"
	}
}

如果用户点击按钮,会自动上报包含点击信息的一条数据:

{
	key: "event.click",
	extra: {
		path: "BODY/DIV[2]/BUTTON",          // 控件路径或控件id
	}
}

如果用户进入页面,会自动上报包含访问的信息:

{
	key: "pipe.enter",
	extra: {
		referrer: "",          // 上个页面的地址
		viewWidth: 720,		// 视图宽
        viewHeight: 720,	// 视图高
        viewZoom: 1,  		// 视图缩放比
	}
}

如果用户离开页面,会自动上报包含离开的信息:

{
	key: "pipe.leave"
}