Skip to main content Integrate Databuddy analytics into applications using the SDK or REST API. Use when implementing analytics tracking, feature flags, custom events, Web Vitals, error tracking, LLM observability, or querying analytics data programmatically.
npx skills add databuddy-analytics/databuddy --skill databuddy alternative analytics europe gdpr gdpr-compliant google-analytics
Databuddy
Databuddy is a privacy-first analytics platform. This skill covers both the SDK (@databuddy/sdk) and the REST API.
External Documentation
For the most up-to-date documentation, fetch: https://databuddy.cc/llms.txt
When to Use This Skill
Use this skill when:
Setting up analytics in React/Next.js/Vue applications
Implementing server-side tracking in Node.js
Adding feature flags to an application
Tracking custom events, errors, or Web Vitals
Integrating LLM observability with Vercel AI SDK
Querying analytics data via the REST API or MCP
Building MCP agents or AI-powered analytics workflows
Building custom dashboards or reports
SDK Entry Points
Import Path Environment Description @databuddy/sdkBrowser (Core) Core tracking utilities and types @databuddy/sdk/react
React component and hooks
@databuddy/sdk/nodeNode.js/Server Server-side tracking with batching
@databuddy/sdk/vueVue.js Vue plugin and composables
@databuddy/sdk/ai/vercelAI/LLM Vercel AI SDK middleware for LLM analytics
Quick Start
React/Next.js import { Databuddy } from "@databuddy/sdk/react";
export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
<Databuddy
clientId={process.env.NEXT_PUBLIC_DATABUDDY_CLIENT_ID}
trackWebVitals
trackErrors
trackPerformance
/>
</body>
</html>
);
}
Node.js Server-Side import { Databuddy } from "@databuddy/sdk/node";
const client = new Databuddy({
clientId: process.env.DATABUDDY_CLIENT_ID,
enableBatching: true,
});
await client.track({
name: "api_call",
properties: { endpoint: "/users", method: "GET" },
});
// Important: flush before process exit in serverless
await client.flush();
Feature Flags import { FlagsProvider, useFlag, useFeature } from "@databuddy/sdk/react";
// Wrap your app
<FlagsProvider clientId="..." user={{ userId: "123" }}>
<App />
</FlagsProvider>
// In components
function MyComponent() {
const { on, loading } = useFeature("dark-mode");
if (loading) return <Skeleton />;
return on ? <DarkTheme /> : <LightTheme />;
}
LLM Analytics import { databuddyLLM } from "@databuddy/sdk/ai/vercel";
import { openai } from "@ai-sdk/openai";
const { track } = databuddyLLM({
apiKey: process.env.DATABUDDY_API_KEY,
});
const model = track(openai("gpt-4o"));
// All LLM calls are now automatically tracked
Key Configuration Options Option Type Default Description clientIdstringAuto-detect Project client ID disabledbooleanfalseDisable all tracking trackWebVitalsbooleanfalseTrack Web Vitals metrics trackErrorsbooleanfalseTrack JavaScript errors trackPerformancebooleantrueTrack performance metrics enableBatchingbooleantrueEnable event batching samplingRatenumber1.0Sampling rate (0.0-1.0) skipPatternsstring[]— Glob patterns to skip tracking
Common Patterns
Disable in Development <Databuddy
disabled={process.env.NODE_ENV === "development"}
clientId="..."
/>
Skip Sensitive Paths <Databuddy
clientId="..."
skipPatterns={["/admin/**", "/internal/**"]}
maskPatterns={["/users/*", "/orders/*"]}
/>
Custom Event Tracking // Browser
import { track } from "@databuddy/sdk/react";
track("purchase", {
product_id: "sku-123",
amount: 99.99,
currency: "USD",
});
// Node.js
await client.track({
name: "subscription_renewed",
properties: { plan: "pro", amount: 29.99 },
});
Global Properties // Browser
window.databuddy?.setGlobalProperties({
plan: "enterprise",
abVariant: "checkout-v2",
});
// Node.js
client.setGlobalProperties({
environment: "production",
version: "1.0.0",
});
REST API
Base URLs Service URL Purpose Analytics API https://api.databuddy.cc/v1Query analytics data Event Tracking https://basket.databuddy.ccSend custom events
Authentication Use API key in the x-api-key header:
curl -H "x-api-key: dbdy_your_api_key" \
https://api.databuddy.cc/v1/query/websites
Query Analytics Data curl -X POST -H "x-api-key: dbdy_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"parameters": ["summary", "pages"],
"preset": "last_30d"
}' \
"https://api.databuddy.cc/v1/query?website_id=web_123"
Type Description summaryOverall website metrics and KPIs pagesPage views and performance by URL trafficTraffic sources and referrers browser_nameBrowser usage breakdown device_typesDevice category breakdown countriesVisitors by country errorsJavaScript errors performanceWeb vitals and load times custom_eventsCustom event data
Date Presets: today, yesterday, last_7d, last_30d, last_90d, this_month, last_month
MCP (Model Context Protocol) Databuddy exposes an MCP server for AI agents (Cursor, Claude Desktop, etc.) to query analytics. Use for natural-language questions, automated reports, or structured data extraction.
Endpoint: POST https://api.databuddy.cc/v1/mcp (local: http://localhost:3001/v1/mcp)
Auth: API key with read:data scope via x-api-key or Authorization: Bearer <key>
ask – Natural-language analytics questions (e.g. "top 5 pages last week")
list_websites – List accessible website IDs
get_data – Pre-built query with websiteId, type, and preset or from/to
get_schema – ClickHouse schema docs (tables, columns)
capabilities – Query types with descriptions, date presets, hints
Date presets for get_data: last_7d, last_30d, last_90d, today, yesterday, this_week, this_month, etc.
Cursor setup (mcp.json): Add a Databuddy MCP entry with the API URL and your API key.
Send Events via API curl -X POST \
-H "Content-Type: application/json" \
-d '{
"type": "custom",
"name": "purchase",
"properties": {
"value": 99.99,
"currency": "USD"
}
}' \
"https://basket.databuddy.cc/?client_id=web_123"
Batch Events curl -X POST \
-H "Content-Type: application/json" \
-d '[
{"type": "custom", "name": "event1", "properties": {...}},
{"type": "custom", "name": "event2", "properties": {...}}
]' \
"https://basket.databuddy.cc/batch?client_id=web_123"
Reference Documentation For detailed documentation, see:
Source Code
SDK: packages/sdk/
API: apps/api/
API Docs: apps/docs/content/docs/api/
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).