Marketing

Hotjar

Use Hotjar in your Nuxt app.

Hotjar is a screen recorder and heatmap tool that helps you understand how users interact with your website.

The simplest way to load Hotjar globally in your Nuxt App is to use Nuxt config. Alternatively you can directly use the useScriptHotjar composable.

Loading Globally

If you don't plan to send custom events you can use the Environment overrides to disable the script in development.

export default defineNuxtConfig({
  scripts: {
    registry: {
      hotjar: {
        id: 123456, // your id
      }
    }
  }
})

useScriptHotjar

The useScriptHotjar composable lets you have fine-grain control over when and how Hotjar is loaded on your site.

const { proxy } = useScriptHotjar({
  id: 123546,
})
// example
proxy.hj('identify', 123456, {
  name: 'John Doe',
  email: '[email protected]'
})

Please follow the Registry Scripts guide to learn more about advanced usage.

HotjarApi

export interface HotjarApi {
  hj: ((event: 'identify', userId: string, attributes?: Record<string, any>) => void)
  & ((event: 'stateChange', path: string) => void)
  & ((event: 'event', eventName: string) => void)
  & ((event: string, arg?: string) => void)
  & ((...params: any[]) => void) & {
    q: any[]
  }
}

Config Schema

You must provide the options when setting up the script for the first time.

export const HotjarOptions = object({
  id: number(),
  sv: optional(number()),
})

Example

Using Hotjar only in production while using hj to send a conversion event.

<script setup lang="ts">
const { hj } = useScriptHotjar()

// noop in development, ssr
// just works in production, client
function sendConversion() {
  hj('event', 'conversion')
}
</script>

<template>
  <div>
    <button @click="sendConversion">
      Send Conversion
    </button>
  </div>
</template>