从月流失60%到留存翻倍:一个追踪工具救活了我的AI产品
本文介绍了Mixpanel和Amplitude两款用户行为分析工具,对比了它们与Google Analytics的区别,并提供了快速上手指南。文章首先指出GA4主要提供流量数据,而Mixpanel/Amplitude能深入分析用户行为。然后详细比较了两款工具的优缺点:Mixpanel适合中小型SaaS产品,界面直观;Amplitude适合用户量大的产品,免费额度更高。接着分步骤讲解了如何在Next
好多朋友问我怎么用Mixpanel和Amplitude追踪用户行为。今天就来手把手来教一下。
一、为啥要用这玩意儿?(别说GA4够用了)
说实话,我一开始也觉得Google Analytics够用了,直到我发现:
GA4告诉你的:
- 今天来了多少人
- 他们从哪来的
- 停留了多久
Mixpanel/Amplitude告诉你的:
- 用户注册后第一个点击的是啥功能
- 哪些功能用了会续费,哪些用了就流失
- 为啥80%的人注册后就跑了
- 付费用户和免费用户的行为差异
简单说:GA4看流量,Mixpanel/Amplitude看人。
二、选Mixpanel还是Amplitude?(我两个都用过)

Mixpanel - 我现在在用的
优点:
- 界面直观,上手快
- 漏斗分析特别好用
- 免费版每月100万事件(个人开发者够用)
- 实时数据,基本秒出
缺点:
- 高级功能要付费
- 数据导出有限制
适合:SaaS、工具类产品、注重转化漏斗的应用
Amplitude - 功能更强大
优点:
- 免费版每月1000万事件(超大方)
- 留存分析做得特别细
- 用户路径分析很强
- 可以做复杂的用户分群
缺点:
- 学习曲线陡一点
- 界面没Mixpanel直观
- 有时候查询慢一点
适合:用户量大、需要深度分析的产品
我的建议:
- 刚起步 → Mixpanel(简单直接)
- 用户破万 → 可以考虑Amplitude(免费额度更大)
- 预算充足 → Mixpanel付费版体验更好
三、Mixpanel 快速上手(30分钟搞定)
第1步:注册和安装
注册账号:
去 mixpanel.com 注册,选Free Plan就行。
获取Project Token:
- 进入项目设置
- 找到Project Token(一串字符)
- 复制保存好
第2步:集成到你的应用
我以Next.js为例(其他框架类似):
安装SDK:
npm install mixpanel-browser
初始化代码:
// lib/mixpanel.js
import mixpanel from 'mixpanel-browser';
// 初始化(放在_app.js或layout.js)
mixpanel.init('你的PROJECT_TOKEN', {
debug: true, // 开发时打开,能看到发送的事件
track_pageview: true, // 自动追踪页面浏览
persistence: 'localStorage' // 数据存储方式
});
export default mixpanel;
在组件中使用:
import mixpanel from '@/lib/mixpanel';
// 追踪事件
const handleButtonClick = () => {
mixpanel.track('Button Clicked', {
button_name: 'Generate Image',
page: 'Dashboard'
});
// 你的业务逻辑
generateImage();
};
第3步:设置用户身份
用户注册时:
// 注册成功后
mixpanel.identify(user.id); // 用户唯一ID
mixpanel.people.set({
'$email': user.email,
'$name': user.name,
'signup_date': new Date().toISOString(),
'plan': 'free'
});
用户登录时:
mixpanel.identify(user.id);
用户登出时:
mixpanel.reset(); // 清除当前用户身份
第4步:追踪关键事件
这是最重要的部分!别啥都追踪,重点追踪这些:
核心转化事件:
// 用户注册
mixpanel.track('User Signed Up', {
method: 'Google', // 或 'Email'
referrer: document.referrer
});
// 完成引导
mixpanel.track('Onboarding Completed', {
steps_completed: 3,
time_spent: 120 // 秒
});
// 首次使用核心功能
mixpanel.track('First Feature Used', {
feature_name: 'AI Image Generator',
timestamp: Date.now()
});
// 付费转化
mixpanel.track('Subscription Started', {
plan: 'Pro',
price: 19.99,
billing_cycle: 'monthly'
});
功能使用事件:
// 生成内容
mixpanel.track('Content Generated', {
content_type: 'image',
prompt_length: 50,
generation_time: 3.2,
success: true
});
// 导出文件
mixpanel.track('File Exported', {
format: 'PNG',
size: '1024x1024'
});
// 分享内容
mixpanel.track('Content Shared', {
platform: 'Twitter'
});
我的命名规范:
- 事件名用 过去式动词 + 名词(User Signed Up,不是 Sign Up)
- 属性名用 小写+下划线(button_name,不是 ButtonName)
- 保持一致性,别今天叫 signup 明天叫 register
四、Amplitude 快速上手
第1步:注册和安装
去 amplitude.com 注册,流程和Mixpanel差不多。
安装SDK:
npm install @amplitude/analytics-browser
初始化代码:
// lib/amplitude.js
import * as amplitude from '@amplitude/analytics-browser';
amplitude.init('你的API_KEY', {
defaultTracking: {
sessions: true,
pageViews: true,
formInteractions: true
}
});
export default amplitude;
第2步:追踪事件
语法和Mixpanel很像:
import * as amplitude from '@/lib/amplitude';
// 追踪事件
amplitude.track('Button Clicked', {
buttonName: 'Generate',
page: 'Dashboard'
});
// 设置用户属性
amplitude.setUserId(user.id);
const identify = new amplitude.Identify();
identify.set('email', user.email);
identify.set('plan', 'free');
amplitude.identify(identify);
Amplitude的特色功能:
// 增量更新(比如积分)
const identify = new amplitude.Identify();
identify.add('credits_used', 1);
amplitude.identify(identify);
// 数组操作(比如收藏列表)
identify.append('favorite_features', 'AI Writer');
amplitude.identify(identify);
五、必须追踪的事件清单(照着做就行)
用户生命周期事件
注册流程:
// 1. 开始注册
mixpanel.track('Signup Started');
// 2. 填写信息
mixpanel.track('Signup Info Entered', {
has_email: true,
has_password: true
});
// 3. 注册成功
mixpanel.track('Signup Completed', {
method: 'Google',
time_to_signup: 45 // 秒
});
激活流程(新用户引导):
// 查看教程
mixpanel.track('Tutorial Viewed', {
step: 1
});
// 完成首次操作
mixpanel.track('First Action Completed', {
action_type: 'generate_image'
});
// 激活成功(定义你自己的激活标准)
mixpanel.track('User Activated', {
days_since_signup: 0,
actions_completed: 3
});
付费转化:
// 查看定价页
mixpanel.track('Pricing Page Viewed');
// 点击升级按钮
mixpanel.track('Upgrade Button Clicked', {
plan: 'Pro',
location: 'Dashboard'
});
// 进入支付页面
mixpanel.track('Checkout Started', {
plan: 'Pro',
price: 19.99
});
// 支付成功
mixpanel.track('Payment Completed', {
plan: 'Pro',
amount: 19.99,
currency: 'USD'
});
功能使用事件
核心功能:
// 使用AI生成
mixpanel.track('AI Generation Used', {
feature: 'text_to_image',
input_length: 50,
success: true,
generation_time: 3.5
});
// 编辑功能
mixpanel.track('Content Edited', {
edit_type: 'resize',
before_size: '512x512',
after_size: '1024x1024'
});
// 保存/下载
mixpanel.track('Content Saved', {
format: 'PNG',
quality: 'high'
});
社交互动:
// 分享
mixpanel.track('Content Shared', {
platform: 'Twitter',
content_type: 'image'
});
// 点赞/收藏
mixpanel.track('Content Favorited', {
content_id: '12345'
});
错误和问题
别忘了追踪错误!这个超重要:
// API错误
mixpanel.track('API Error', {
endpoint: '/api/generate',
error_code: 500,
error_message: 'Server timeout'
});
// 用户遇到的问题
mixpanel.track('Feature Failed', {
feature: 'image_generation',
reason: 'quota_exceeded'
});
// 用户反馈
mixpanel.track('Feedback Submitted', {
rating: 4,
has_comment: true
});
六、实战分析技巧(这才是重点)
1. 漏斗分析 - 找到流失点
在Mixpanel中:
- 点击 “Funnels”
- 添加步骤:
- Step 1: Signup Started
- Step 2: Signup Completed
- Step 3: First Feature Used
- Step 4: Payment Completed
我的发现:
- 注册到激活:流失60%(太高了!)
- 激活到付费:转化5%(还行)
优化动作:
- 简化注册流程(从5个字段减到3个)
- 加强新手引导
- 结果:激活率从40%提升到65%
2. 留存分析 - 看用户会不会回来
在Amplitude中:
- 点击 “Retention”
- 选择起始事件:User Signed Up
- 选择回访事件:App Opened
- 查看N日留存
健康的留存数据(我的经验):
- Day 1: 40-50%
- Day 7: 20-30%
- Day 30: 10-15%
如果留存太低:
- 加邮件提醒(Day 3, Day 7)
- 推送通知(但别烦人)
- 给理由让他回来(新功能、积分过期)
3. 用户分群 - 找到你的超级用户
创建分群:
活跃用户:
- 过去7天使用核心功能 ≥ 3次
付费意向用户:
- 查看过定价页
- 使用核心功能 ≥ 5次
- 但还没付费
流失风险用户:
- 曾经活跃(前30天使用 ≥ 10次)
- 但过去7天没登录
针对性运营:
- 给付费意向用户发优惠码
- 给流失风险用户发挽回邮件
- 给活跃用户要反馈和推荐
4. 用户路径分析 - 看他们怎么用你的产品
在Amplitude中:
- 点击 “Pathfinder”
- 选择起始事件:User Signed Up
- 看用户接下来做了什么
我的发现:
- 60%的用户注册后直接去核心功能(好事!)
- 30%的用户在设置页卡住了(需要优化)
- 10%的用户迷路了(加引导)
七、进阶技巧(用了都说好)
1. 设置自定义事件属性
超级属性(每个事件都带上):
// Mixpanel
mixpanel.register({
'app_version': '2.1.0',
'platform': 'web',
'user_language': 'en'
});
// Amplitude
amplitude.setGroup('company', 'acme_corp'); // B2B产品用
2. 追踪页面停留时间
let pageStartTime = Date.now();
// 页面离开时
window.addEventListener('beforeunload', () => {
const timeSpent = (Date.now() - pageStartTime) / 1000;
mixpanel.track('Page Time Spent', {
page: window.location.pathname,
seconds: timeSpent
});
});
3. 追踪表单放弃
// 表单开始填写
const handleFormStart = () => {
mixpanel.track('Form Started', {
form_name: 'checkout'
});
};
// 表单提交
const handleFormSubmit = () => {
mixpanel.track('Form Submitted', {
form_name: 'checkout'
});
};
// 如果 Started 多于 Submitted,说明有人放弃了
4. A/B测试集成
// 给用户分配实验组
const experimentGroup = Math.random() > 0.5 ? 'A' : 'B';
mixpanel.people.set({
'experiment_pricing_page': experimentGroup
});
// 追踪时带上分组
mixpanel.track('Pricing Page Viewed', {
experiment_group: experimentGroup
});
// 后续在Mixpanel里按分组对比转化率
八、常见问题和坑(我都踩过)
1. 事件发送失败
问题:开发环境能看到事件,生产环境没数据
原因:
- 广告拦截器(uBlock、AdBlock会拦截追踪脚本)
- CORS问题
- 用户禁用了JavaScript
解决:
// 检查是否加载成功
if (typeof mixpanel !== 'undefined') {
mixpanel.track('Event');
} else {
console.log('Mixpanel blocked');
}
// 或者用服务端追踪(更可靠)
2. 数据不准确
问题:同一个用户被算成多个
原因:没有正确设置用户ID
解决:
// 用户登录后立即设置
mixpanel.identify(user.id);
// 不要用随机ID或设备ID
3. 事件太多,看不过来
问题:追踪了100个事件,不知道看哪个
解决:
- 只追踪关键的20%事件
- 用命名空间分类(signup_, payment_, feature_*)
- 定期清理没用的事件
4. 性能问题
问题:追踪代码拖慢了页面
解决:
// 异步加载
useEffect(() => {
if (typeof window !== 'undefined') {
import('@/lib/mixpanel').then((mp) => {
mp.default.track('Page Viewed');
});
}
}, []);
// 批量发送
mixpanel.set_config({ batch_requests: true });
九、我的实战数据看板
分享一下我每天必看的几个图表:
Dashboard 1: 核心指标
每日活跃用户(DAU):
- 今日 vs 昨日 vs 上周同期
新用户注册:
- 数量和来源渠道
付费转化率:
- 今日新增付费用户
- 转化漏斗完成率
Dashboard 2: 用户健康度
留存曲线:
- Day 1, 7, 30留存率
功能使用率:
- 核心功能使用人数占比
- 平均每用户使用次数
流失预警:
- 7天未登录的活跃用户数
Dashboard 3: 产品优化
功能使用排行:
- 哪些功能最受欢迎
- 哪些功能没人用(考虑下线)
错误监控:
- API失败率
- 用户遇到的问题类型
用户反馈:
- NPS评分趋势
- 常见问题分类
十、服务端追踪(更准确)
如果你担心客户端被拦截,可以用服务端追踪:
Mixpanel服务端(Node.js)
// 安装
npm install mixpanel
// 使用
const Mixpanel = require('mixpanel');
const mixpanel = Mixpanel.init('你的TOKEN');
// API路由中追踪
app.post('/api/generate', async (req, res) => {
// 业务逻辑
const result = await generateImage(req.body);
// 追踪事件
mixpanel.track('Image Generated', {
distinct_id: req.user.id,
success: result.success,
generation_time: result.time
});
res.json(result);
});
Amplitude服务端
const amplitude = require('@amplitude/node');
const client = amplitude.init('你的API_KEY');
client.logEvent({
event_type: 'Image Generated',
user_id: req.user.id,
event_properties: {
success: true
}
});
优点:
- 100%准确,不会被拦截
- 可以追踪敏感数据(不暴露给前端)
- 性能更好
缺点:
- 无法追踪前端交互(点击、滚动等)
- 需要额外开发
我的方案:前端+后端结合,前端追踪交互,后端追踪核心业务事件。
十一、隐私和合规(别忽略)
GDPR合规
如果你有欧洲用户,必须:
// 征得用户同意后再初始化
if (userConsent) {
mixpanel.init('TOKEN');
} else {
mixpanel.disable(); // 禁用追踪
}
// 提供数据删除功能
mixpanel.people.delete_user();
不要追踪敏感信息
千万别追踪:
- 密码
- 信用卡号
- 身份证号
- 详细地址
可以追踪:
- 用户ID(匿名化)
- 邮箱(加密或哈希)
- 国家/城市(不要精确地址)
十二、成本控制
免费额度够用吗?
Mixpanel Free:
- 100万事件/月
- 假设每用户每天触发20个事件
- 可支持:1,000,000 / 20 / 30 ≈ 1,666 DAU
Amplitude Free:
- 1000万事件/月
- 可支持:10,000,000 / 20 / 30 ≈ 16,666 DAU
我的建议:
- DAU < 1000:Mixpanel免费版够用
- DAU 1000-10000:Amplitude免费版
- DAU > 10000:考虑付费或自建
省钱技巧
1. 减少不必要的事件:
// 不要追踪每次鼠标移动
// ❌ mixpanel.track('Mouse Moved');
// 只追踪有意义的交互
// ✅ mixpanel.track('Button Clicked');
2. 采样追踪:
// 只追踪10%的页面浏览
if (Math.random() < 0.1) {
mixpanel.track('Page Viewed');
}
3. 用服务端追踪核心事件:
前端追踪交互,后端追踪付费等重要事件,避免重复。
最后的话
追踪用户行为听起来很技术,但其实就是了解你的用户。
我的心得:
- 别追踪太多:20个核心事件足够了
- 每周看一次数据:别天天盯着,会焦虑
- 数据要转化成行动:发现问题就去改,别只是看
- 用户隐私第一:别追踪不该追踪的
推荐的学习路径:
- 先用Mixpanel免费版,追踪10个核心事件
- 跑一个月,看留存和转化漏斗
- 根据数据优化产品
- 用户量大了再考虑Amplitude或付费
更多推荐


所有评论(0)