umami

Embed the Umami analytics library into Nuxt

cover image

Nuxt Umami Module

npmDownloadsLicense

This is a fully featured nuxt module that makes implementing Umami Analytics into your Nuxt project a breeze.

Features

  • 📖 Open Source
  • ✨ SSR support
  • 💯 Feature complete
  • ✅ TypeScript & JSDocs
  • ✅ Supports <script setup> syntax

Installation

With pnpm

pnpm add -D nuxt-umami

Or, with npm

npm install -D nuxt-umami

Or, with yarn

yarn add -D nuxt-umami

Setup

Add the module to nuxt.config:

// nuxt.config.ts (Nuxt 3)export default defineNuxtConfig({    umami: {    enable: true, // enable the module? true by default    autoTrack: true,    doNotTrack: false,    cache: false,    domains: 'mywebsite.com,mywebsite2.com',    websiteId: 'your-website-id',    scriptUrl: 'https://path.to.umami.js',  }})// or inline configexport default defineNuxtConfig({  modules: [['nuxt-umami', {    // nuxt-umami options  }]]})
// nuxt.config.js (Nuxt 2)export default {  modules: [    ['nuxt-umami'],  ],  umami: {    autoTrack: true,    doNotTrack: false,    cache: false,    domains: 'mywebsite.com,mywebsite2.com',    websiteId: 'your-website-id',    scriptUrl: 'https://path.to.umami.js',  }}// or inline configexport default {  modules: [    ['nuxt-umami', {      // nuxt-umami options    }]  ]}

Only websiteId and scriptUrl are mandatory. See the Umami docs for more explanation of these options.

New: Set the enable option to false to disable the module (temporarily).

Environment Variables

If you want, you can set up and use environment variables in .env files. But that is not really necessary as the module config does not require any "sensitive" data. Every part of the configuration can be viewed in the script in <head> after the page is loaded.


Usage

Note: You can use $umami anywhere you have access to NuxtApp or the useNuxtApp composable (middleware, asyncData, etc).

Warning: $umami is only available onMounted.

In <script setup>

<script setup>const { $umami } = useNuxtApp();onMounted(() => {  // Sends an event with an event type of custom.  $umami("Signup button click");});</script>

In middleware, asyncData, etc

const { data } = await useAsyncData("mountains", (nuxtApp) => {  const { $umami } = nuxtApp();  // do something, return something});

Available Functions

For a list of all available functions, see Umami Tracker Functions

Credits

  • VueUse - for useScriptTag composable.
  • Joe Pritchard - author of nuxt-umami-module (compatible only with Nuxt 2).

Author

Hey, I'm ML, when I'm not trying to break into open source, I'm busy trying to break into sh-posting on Twitter
If you find a bug or have any trouble using the module, please open an issue. I'm available to work on it and help you out.

Using the module in your app? Consider giving it a star 🌟. It'd mean the world to me.

Contributions