Loading...
Loading...
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 skill4agent add databuddy-analytics/skills databuddy@databuddy/sdk| Import Path | Environment | Description |
|---|---|---|
| Browser (Core) | Core tracking utilities and types |
| React/Next.js | React component and hooks |
| Node.js/Server | Server-side tracking with batching |
| Vue.js | Vue plugin and composables |
| AI/LLM | Vercel AI SDK middleware for LLM analytics |
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>
);
}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();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 />;
}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| Option | Type | Default | Description |
|---|---|---|---|
| | Auto-detect | Project client ID |
| | | Disable all tracking |
| | | Track Web Vitals metrics |
| | | Track JavaScript errors |
| | | Track performance metrics |
| | | Enable event batching |
| | | Sampling rate (0.0-1.0) |
| | — | Glob patterns to skip tracking |
<Databuddy
disabled={process.env.NODE_ENV === "development"}
clientId="..."
/><Databuddy
clientId="..."
skipPatterns={["/admin/**", "/internal/**"]}
maskPatterns={["/users/*", "/orders/*"]}
/>// 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 },
});// Browser
window.databuddy?.setGlobalProperties({
plan: "enterprise",
abVariant: "checkout-v2",
});
// Node.js
client.setGlobalProperties({
environment: "production",
version: "1.0.0",
});| Service | URL | Purpose |
|---|---|---|
| Analytics API | | Query analytics data |
| Event Tracking | | Send custom events |
x-api-keycurl -H "x-api-key: dbdy_your_api_key" \
https://api.databuddy.cc/v1/query/websitescurl -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 |
|---|---|
| Overall website metrics and KPIs |
| Page views and performance by URL |
| Traffic sources and referrers |
| Browser usage breakdown |
| Device category breakdown |
| Visitors by country |
| JavaScript errors |
| Web vitals and load times |
| Custom event data |
todayyesterdaylast_7dlast_30dlast_90dthis_monthlast_monthcurl -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"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"