SDK Reference
Vue
The Databuddy Vue SDK provides a component for script injection and composables for feature flags. Works with Vue 3 and Nuxt 3.
Package: @databuddy/sdk | Import: @databuddy/sdk/vue
Installation
bash
bun add @databuddy/sdkQuick Start
Add the Databuddy component to your App.vue:
App.vuehtml
<script setup>
import { Databuddy } from "@databuddy/sdk/vue";
const clientId = import.meta.env.VITE_DATABUDDY_CLIENT_ID;
</script>
<template>
<Databuddy
:client-id="clientId"
track-web-vitals
track-errors
/>
<RouterView />
</template>Databuddy Component
The Databuddy component injects the tracking script and configures analytics.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
client-id | string | Required | Your client ID |
disabled | boolean | false | Disable all tracking |
debug | boolean | false | Enable debug logging |
Tracking Features
| Prop | Default | Description |
|---|---|---|
track-performance | true | Page load times and navigation timing |
track-web-vitals | false | Core Web Vitals (LCP, FID, CLS, TTFB) |
track-errors | false | JavaScript errors and unhandled rejections |
track-outgoing-links | false | Clicks on external links |
track-scroll-depth | false | Scroll depth milestones |
track-interactions | false | Button clicks and form submissions |
track-attributes | false | Elements with data-track attributes |
Batching & Performance
| Prop | Default | Description |
|---|---|---|
enable-batching | false | Group events into batches |
batch-size | 10 | Events per batch (1-50) |
batch-timeout | 2000 | Batch timeout in ms |
sampling-rate | 1.0 | Event sampling rate (0.0-1.0) |
Full Example
App.vuehtml
<script setup>
import { Databuddy } from "@databuddy/sdk/vue";
const clientId = import.meta.env.VITE_DATABUDDY_CLIENT_ID;
const isDevelopment = import.meta.env.DEV;
</script>
<template>
<Databuddy
:client-id="clientId"
:track-web-vitals="true"
:track-errors="true"
:track-outgoing-links="true"
:enable-batching="true"
:batch-size="20"
:disabled="isDevelopment"
/>
<RouterView />
</template>Tracking Events
Use the global tracker or import helpers:
html
<script setup>
import { track } from "@databuddy/sdk";
function handleSignup() {
track("signup_clicked", {
source: "header",
plan: "pro"
});
}
</script>
<template>
<button @click="handleSignup">Sign Up</button>
</template>Using window.databuddy
You can also use the global tracker directly:
html
<script setup>
function handleClick() {
window.databuddy?.track("button_clicked", {
button_id: "cta"
});
}
</script>Environment Setup
.envbash
VITE_DATABUDDY_CLIENT_ID=your-client-id-hereNuxt 3
For Nuxt 3, create a plugin:
plugins/databuddy.client.tstsx
import { Databuddy } from "@databuddy/sdk/vue";
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.component("Databuddy", Databuddy);
});Then use in your app.vue:
app.vuehtml
<template>
<Databuddy
:client-id="runtimeConfig.public.databuddyClientId"
track-web-vitals
/>
<NuxtPage />
</template>
<script setup>
const runtimeConfig = useRuntimeConfig();
</script>nuxt.config.tstsx
export default defineNuxtConfig({
runtimeConfig: {
public: {
databuddyClientId: process.env.DATABUDDY_CLIENT_ID
}
}
});Feature Flags
Vue has built-in feature flag support:
html
<script setup>
import { useFlag } from "@databuddy/sdk/vue";
const darkMode = useFlag("dark-mode");
</script>
<template>
<div :class="{ dark: darkMode.on }">
<template v-if="darkMode.loading">
<Skeleton />
</template>
<template v-else>
<MainContent />
</template>
</div>
</template>See Feature Flags for complete Vue flag documentation.
Privacy Patterns
Skip Patterns
html
<Databuddy
:client-id="clientId"
:skip-patterns="['/admin/**', '/internal/*']"
/>Mask Patterns
html
<Databuddy
:client-id="clientId"
:mask-patterns="['/users/*', '/orders/**']"
/>Related
How is this guide?