一句话回答
User ID(用户 ID)是你的产品给登录用户分配、并传给分析工具的稳定、不重复的标识,让这个人在所有设备和会话里的行为都算作一个用户。它不是用户登录时输入的账号名。
分析里的 User ID 指什么
在登录页上问「User ID 是什么」,答案是你登录用的账号名。在产品分析和网站分析里,这个词的范围更窄:User ID(用户 ID)是你自己的系统给每个账号分配的标识,比如数据库里的 u_123,在用户登录后传给分析工具。之后这个人在哪台设备上产生的事件,都带着同一个用户标识。
分析工具自己没法知道一个人是谁。登录之前,它只看得到一个浏览器或一次 App 安装。User ID 就是你告诉它的方式。在这些 ID 里,只有它换了设备也不变,所以它是跨设备追踪的基础:没有它,同一个客户用笔记本、手机和平板,就会被算成三个用户。
User ID 和访客 ID、设备 ID、会话 ID 的区别
分析工具里同时存在好几种 ID。它们回答的问题不同,混在一起用,是两份报表对不上最常见的原因。
| ID | 谁生成 | 什么时候出现 | 能保持多久 | 用来数什么 |
|---|---|---|---|---|
| 访客 ID | 分析工具 | 第一次浏览 | 看工具,一天或更久 | 独立访客 |
| 设备 ID | 统计 SDK,存在设备上 | 允许采集后的第一个事件 | 直到清除存储或重装 App | 设备数 |
| User ID | 你的产品 | 用户登录时 | 和账号一样久 | 人数 |
| 会话 ID | 分析工具 | 一次访问开始 | 一段时间不活跃或切换账号后结束 | 访问次数 |
以 TapCub 为例:访客 ID 由站点盐和地址、浏览器信息算出哈希,不写 Cookie;严格隐私设置下盐每天更换,所以同一个浏览器第二天就是新访客。设备 ID 只在开启识别模式、并且用户同意统计时才写入。会话对应一次访问。只有 User ID 是你自己的。
User ID 什么时候挂上
一个用户通常经历五个阶段:
- 匿名浏览。 没登录,事件只带访客 ID,允许时再带设备 ID。
- 在一台设备上第一次登录。 代码传入 User ID。TapCub 会把这台设备之前的匿名事件回填给这个人,第一次访问和获客来源都不会丢。Google Analytics 对同一会话里登录前的事件也是这样处理。
- 在另一台设备上登录。 同一个 User ID 把新设备并到同一个人身上,这就是跨设备合并。
- 共用设备上换账号。 已经算给第一个人的事件不动,设备改指向第二个人,并开始新的会话。
- 退出登录。 清掉 ID,之后这个浏览器上的事件重新变成匿名,直到下次登录。
分析工具把设备和人对上的过程叫身份识别,User ID 是它的输入。
怎么设置 User ID
登录成功后,用你自己账号系统里的 ID 调用分析工具的 identify 或 login 方法。TapCub 网站脚本的写法:
<script>
// 登录成功后
tapcub.login('u_123', { $name: 'Ada' });
</script>
退出登录时:
<script>
tapcub.logout();
</script>
login 的 ID 最长 200 个字符,可以带档案字段;bind 给同一个人追加其他标识,比如微信 UnionID。完整说明见文档在代码里关联身份。
Google Analytics 里对应的是 user_id 参数。Google 的 User-ID 说明要求 ID 由你自己生成、不超过 256 个字符,退出登录后传 null。
好的 User ID 要满足什么
- 稳定。 同一个账号永远不变。邮箱和手机号会换,不适合当 ID。
- 不重复,不复用。 不要把已注销账号的 ID 分给新用户,否则两个人的历史会合到一起。
- ID 本身不含个人信息。 Google 的说明要求 ID 里不能有第三方能据此认出这个人的信息。用内部编号,不要用邮箱或姓名。
- 不要用占位值。 给没登录的人传
0、-1、null或guest,会把所有匿名访客合成一个巨大的「用户」。TapCub 会拒绝null、undefined、anonymous、guest、全零、-1、NaN、true和false,并在身份映射页记成告警。 - 各端一致。 网站、App、小程序和服务端事件要传同一个值,不然一个客户会变成好几个人。
如果还想按邮箱或手机号把人对上,把它们作为附加标识传,而不是当 User ID。TapCub 会先规范化再哈希保存。一个人保留一个登录 ID,邮箱、手机号、UnionID 各最多五个,设备默认最多 50 台;超过时解绑最早的一台,并在日志里记录。
User ID 会怎样改变你的数据
启用 User ID 后,「用户」的含义变了,数字也会跟着变:

- 独立用户变少。 属于同一个人的多台设备只算一次。上图的演示项目里,这一天比按设备数少了约四分之一。
- 留存变好。 换了新设备回来的人,现在算回访,不再算新用户。
- 跨设备漏斗能走完。 在手机上加购、在电脑上付款的人,算作完成一个漏斗,而不是两个半截的。
- 能算每个人的价值。 LTV 和人均收入都需要一个「人」来做分母。
访客数不受影响,因为它本来就不用 User ID。对比开启识别前后的数据时,比较设备数或访客数,不要比较用户数。

User ID 与隐私
User ID 把行为和一个已知账号连在一起,所以要按个人数据对待。GDPR 第 4 条对个人数据的定义里明确列了「在线标识符」。实际要做到:
- 在隐私政策里说明你会把账号标识发给分析工具。
- 只在有同意或其他合法依据时采集。TapCub 的识别模式默认关闭,开启后也需要用户同意统计。
- 能按请求找到并删除一个人的数据。TapCub 会标出提了删除或限制处理请求的人,并丢弃他们之后的新事件。
常见错误
- 用邮箱当 User ID。 邮箱会变,而且每个事件里都带上了个人信息。
- 各端格式不一样。 App 上是
123、网站上是u_123,就是两个人。 - 统计脚本还没加载就调用登录。 这次调用会丢。在 TapCub 里可以先放进
window.__tcq排队。 - 共用设备上忘了退出。 下一个人的访问会合进上一个账号。
- 以为没登录的人也有档案。 他们只进汇总统计,只有 User ID 才会建立一个「人」。
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
