---
title: "Umami 分析"
description: "在你的 Nuxt 应用中使用 Umami 分析。"
canonical_url: "https://nuxt-scripts.zhcndoc.com/scripts/umami-analytics"
last_updated: "2026-05-22T14:11:53.894Z"
---
[Umami](https://umami.is/) 收集你关注的所有指标,帮助你做出更好的决策。
### 自托管的 Umami
如果你使用自托管版本的 Umami,请将 `hostUrl` 设置为你的 Umami 源站。这是告诉 Umami 将事件发送到哪里的、该提供程序特有的方式。
```ts
useScriptUmamiAnalytics({
websiteId: 'YOUR_WEBSITE_ID',
hostUrl: 'https://my-self-hosted'
})
```
仅当你还需要覆盖脚本 URL 本身时,才使用 `scriptInput.src`。
## 高级功能
### 会话识别
Umami v2.18.0 及以上版本支持使用 `identify` 函数设置唯一的会话 ID。你可以传递一个字符串(唯一 ID)或者带有会话数据的对象:
```ts
const { proxy } = useScriptUmamiAnalytics({
websiteId: 'YOUR_WEBSITE_ID'
})
// 使用唯一字符串 ID
proxy.identify('user-12345')
// 使用会话数据对象
proxy.identify({
userId: 'user-12345',
plan: 'premium'
})
```
### 使用 beforeSend 进行数据过滤
`beforeSend` 选项允许你在数据发送到 Umami 之前检查、修改或取消数据。这对于实现自定义隐私控制或数据过滤非常有用:
```ts
useScriptUmamiAnalytics({
websiteId: 'YOUR_WEBSITE_ID',
beforeSend: (type, payload) => {
// 记录发送内容(用于调试)
console.log('发送到 Umami:', type, payload)
// 过滤敏感数据
if (payload.url && payload.url.includes('private')) {
return false // 取消发送
}
// 发送前修改数据
return {
...payload,
referrer: '' // 隐私考虑移除来源
}
}
})
```
你也可以提供一个全局定义函数的名字字符串:
```ts
// 全局定义函数
window.myBeforeSendHandler = (type, payload) => {
return checkPrivacyRules(payload) ? payload : false
}
useScriptUmamiAnalytics({
websiteId: 'YOUR_WEBSITE_ID',
beforeSend: 'myBeforeSendHandler'
})
```