Skip to content
trakoo
Esc
navigateopen⌘Jpreview
On this page

Installation

Install trakoo and the SDK packages required by each provider.

Install the core package first, then add only the provider SDKs your app uses. Trakoo does not auto-install provider SDKs.

Core package

pnpm install trakoo
npm install trakoo
yarn add trakoo
bun add trakoo

trakoo’s public API is split by environment:

import { defineEvents, noProperties, typed } from 'trakoo';
import { createClientAnalytics } from 'trakoo/client';
import { createServerAnalytics } from 'trakoo/server';

import { PostHogClientProvider } from 'trakoo/providers/client';
import { PostHogServerProvider } from 'trakoo/providers/server';

The root trakoo entry point contains environment-neutral event helpers and shared types. Factories live on trakoo/client and trakoo/server. Use trakoo/providers/client in browser bundles and trakoo/providers/server in server-only code; there is no combined provider entry point.

Provider SDKs

The aggregate trakoo/providers/client and trakoo/providers/server entry points are safe to import without every provider SDK installed. Provider construction is also safe. An SDK is loaded only when its provider initializes; initialization without that optional peer throws a clear package-specific error.

Provider Client support Server support Extra install
PostHog Yes Yes posthog-js posthog-node
OpenPanel Yes Yes @openpanel/web @openpanel/sdk
Bento Yes, CDN script Yes @bentonow/bento-node-sdk for server
Pirsch Yes, CDN script Yes No extra package
EmitKit No Yes @emitkit/js
Visitors Yes, CDN script No No extra package
Proxy Yes Server ingest helpers No extra package
pnpm install posthog-js posthog-node
pnpm install @openpanel/web @openpanel/sdk
pnpm install @bentonow/bento-node-sdk

The browser provider loads Bento from its CDN. Install the SDK only when using BentoServerProvider.

# No extra package required

trakoo’s Pirsch providers call Pirsch directly or load the browser script at runtime.

pnpm install @emitkit/js

EmitKit is server-side only. Use the Proxy Provider if you need browser events to reach EmitKit.

# No extra package required

VisitorsClientProvider loads https://cdn.visitors.now/v.js at runtime.

Environment variables

Keep browser tokens public and server keys private.

VITE_POSTHOG_KEY=your-posthog-project-key
VITE_POSTHOG_HOST=https://app.posthog.com
VITE_OPENPANEL_CLIENT_ID=your-openpanel-client-id
VITE_BENTO_SITE_UUID=your-bento-site-uuid
VITE_VISITORS_TOKEN=your-visitors-token
NEXT_PUBLIC_POSTHOG_KEY=your-posthog-project-key
NEXT_PUBLIC_POSTHOG_HOST=https://app.posthog.com
NEXT_PUBLIC_OPENPANEL_CLIENT_ID=your-openpanel-client-id
NEXT_PUBLIC_BENTO_SITE_UUID=your-bento-site-uuid
NEXT_PUBLIC_VISITORS_TOKEN=your-visitors-token

OPENPANEL_CLIENT_ID=your-openpanel-client-id
OPENPANEL_CLIENT_SECRET=your-openpanel-client-secret
POSTHOG_API_KEY=your-posthog-server-key
BENTO_SITE_UUID=your-bento-site-uuid
BENTO_PUBLISHABLE_KEY=your-bento-publishable-key
BENTO_SECRET_KEY=your-bento-secret-key
EMITKIT_API_KEY=emitkit_xxx
PIRSCH_ACCESS_KEY=pa_xxx
PUBLIC_POSTHOG_KEY=your-posthog-project-key
PUBLIC_POSTHOG_HOST=https://app.posthog.com
PUBLIC_OPENPANEL_CLIENT_ID=your-openpanel-client-id
PUBLIC_BENTO_SITE_UUID=your-bento-site-uuid
PUBLIC_VISITORS_TOKEN=your-visitors-token

OPENPANEL_CLIENT_ID=your-openpanel-client-id
OPENPANEL_CLIENT_SECRET=your-openpanel-client-secret
POSTHOG_API_KEY=your-posthog-server-key
BENTO_SITE_UUID=your-bento-site-uuid
BENTO_PUBLISHABLE_KEY=your-bento-publishable-key
BENTO_SECRET_KEY=your-bento-secret-key
EMITKIT_API_KEY=emitkit_xxx
PIRSCH_ACCESS_KEY=pa_xxx

Verify imports

Create a small file and let TypeScript confirm the package resolves:

import { defineEvents, noProperties } from 'trakoo';
import { createClientAnalytics } from 'trakoo/client';
import { PostHogClientProvider } from 'trakoo/providers/client';

const events = defineEvents({
  testEvent: {
    name: 'test_event',
    category: 'engagement',
    properties: noProperties()
  }
});

const analytics = createClientAnalytics({
  events,
  providers: [
    new PostHogClientProvider({
      token: 'test'
    })
  ]
});

await analytics.track('test_event');

If your project compiles, continue to the Quick Start.

Was this page helpful?