Set up HumanBehavior SDK with Nuxt.js applications
npm install humanbehavior-js # or yarn add humanbehavior-js
plugins/humanbehavior.client.ts
import { HumanBehaviorTracker } from 'humanbehavior-js'; export default defineNuxtPlugin(() => { // Initialize the tracker once globally (client-side only) const tracker = HumanBehaviorTracker.init('your-api-key-here'); return { provide: { tracker } }; });
app.vue
<template> <div> <NuxtPage /> </div> </template> <script setup> import { useRoute } from 'vue-router'; import { onMounted, watch } from 'vue'; const route = useRoute(); const { $tracker } = useNuxtApp(); onMounted(() => { // Track initial page load $tracker.trackPageView(); // Track route changes watch(() => route.path, (newPath) => { $tracker.trackPageView(newPath); }); }); </script>
<template> <div> <h1>My Component</h1> <button @click="handleButtonClick">Click Me</button> </div> </template> <script setup> import { onMounted } from 'vue'; const { $tracker } = useNuxtApp(); onMounted(() => { // Track component view $tracker.customEvent('component_viewed', { componentName: 'MyComponent' }); }); async function handleButtonClick() { await $tracker.customEvent('button_clicked', { buttonLocation: 'header' }); } </script>
.env
NUXT_PUBLIC_HUMANBEHAVIOR_API_KEY=your-api-key-here
import { HumanBehaviorTracker } from 'humanbehavior-js'; export default defineNuxtPlugin(() => { const config = useRuntimeConfig(); const tracker = HumanBehaviorTracker.init(config.public.humanBehaviorApiKey); return { provide: { tracker } }; });
nuxt.config.ts
export default defineNuxtConfig({ runtimeConfig: { public: { humanBehaviorApiKey: process.env.NUXT_PUBLIC_HUMANBEHAVIOR_API_KEY } } });
.client.ts