Integrate Umami Analytics into your Nuxt websites / applications.
Heads up: This version uses features (Nuxt Layers) that are only available in Nuxt 3. Check out Nuxt Umami v1 for Nuxt 2 compat.
- 📖 Open Source
- ✨ SSR Support, of course
- ➖ No extra script: no extra tag, no script loading, instant availability
- 😜 Escapes ad & script blockers (catch me if you can)
- 💯 Simplified usage, feature complete, extensive config
- ✅ Better Typescript, JSDocs, auto completion
- ✅ Error handling + debugging
- ✅ Nuxt utils + auto import
Install using your favorite package manager...
pnpm add nuxt-umami #pnpm
npm install nuxt-umami #npm
Then add nuxt-umami
to your extends
array in nuxt.config
:
defineNuxtConfig({
extends: ['nuxt-umami']
});
Or, you can totally skip the installation process and do
defineNuxtConfig({
extends: ['github:ijkml/nuxt-umami']
});
Warning: This might cause unwanted errors due to changes as the branch is still WIP.
You can provide configuration options using the app.config.ts
file or appConfig
property of the Nuxt config.
(recommended for readability and ease of update)
export default defineAppConfig({
umami: {
// ...umami config here
},
});
defineNuxtConfig({
extends: ['nuxt-umami'],
appConfig: {
umami: {
// ...umami config here
},
},
});
Note: Available in
^2.1.0
and takes precedence overappConfig
.
You can provide the host
and id
config (only) as environment variables. Simply add NUXT_PUBLIC_UMAMI_HOST
and NUXT_PUBLIC_UMAMI_ID
to your .env
file, and that's it.
NUXT_PUBLIC_UMAMI_HOST="https://domain.tld"
NUXT_PUBLIC_UMAMI_ID="abc123-456def-ghi789"
Use it.
option | type | description | required | default |
---|---|---|---|---|
host | string |
Your Umami endpoint. This is where your script is hosted. Eg: https://ijkml.xyz/ . |
yes | '' |
id | string |
Unique website-id provided by Umami. | yes | '' |
domains | string | Array<string> |
Limit tracker to specific domains by providing an array or comma-separated list (without 'http'). Leave blank for all domains. | no | undefined |
ignoreDnt | boolean |
Option to ignore browsers' Do Not Track setting. | no | true |
autoTrack | boolean |
Option to automatically track page views. | no | true |
ignoreLocalhost | boolean |
Option to prevent tracking on localhost. | no | false |
customEndpoint | string |
Set a custom COLLECT_API_ENDPOINT . See Docs. |
no | undefined |
version | 1 | 2 |
Umami version | no | 1 |
Two functions are auto-imported, umTrackView()
and umTrackEvent()
. Use them however and wherever you like.
-
umTrackView(url, referrer)
url
: the path being tracked, eg/about
,/contact?by=phone#office
. This can be correctly inferred. Equivalent ofrouter.fullPath
.referrer
: the page referrer. This can be correctly inferred. Equivalent ofdocument.referrer
.
-
umTrackEvent(eventName, eventData)
eventName
: a string type texteventData
: an object in the format{key: value}
, wherekey
is a string andvalue
is a string, number, or boolean.
Reference: Umami Tracker Functions.
Note: Support for Umami v2 is now available in
^2.3.0
.
To use Umami v2, set version: 2
in the Umami config.
Open an issue. Contributions are welcome, just send a PR! If you encounter any issues, don't hesitate to open an issue. I'm always available to help and resolve any bugs.