Dokumentation
So richten Sie Privatrak ein, benennen, was Ihnen wichtig ist, und lesen jeden Bericht.
In Ihrem Framework einbinden
Privatrak funktioniert mit jedem Framework, auch mit React, Next.js, Vue, Nuxt, Svelte und Angular. Sie binden es mit dem Skript-Tag oder mit dem npm-Paket @privatrak/tracker ein. Beide erfassen Seitenaufrufe, Klicks und abgeschickte Formulare auf dieselbe Weise, auch Seitenwechsel in Single-Page-Apps.
Für Next.js und Nuxt gibt es eigene Pakete, @privatrak/next und @privatrak/nuxt. Sie richten den Tracker ein und melden außerdem KI-Dienste und Crawler von Ihrem Server aus. Für diese beiden Frameworks ist das der empfohlene Weg: Auf Next.js einbinden und Auf Nuxt einbinden. Bei jedem anderen Framework nehmen Sie das Skript-Tag, wenn Sie den Tracker nicht in Ihrem Code importieren möchten. Es startet von selbst, und Sie schreiben keinen Code. Das npm-Paket passt, wenn Sie Importe und Typen bevorzugen.
Ihren Website-Schlüssel holen
Beide Wege brauchen Ihren Website-Schlüssel. Auf der Seite Einrichtung steht er schon im Skript-Tag. Sie können auch unter Einstellungen › API-Schlüssel mit Schlüssel erstellen einen anlegen und dabei den Typ Ihre Website wählen. Dieser Schlüssel kann nur Daten senden. Sie können ihn also gefahrlos in Ihre Seite schreiben.
Mit dem Skript-Tag
<script
src="https://api.privatrak.com/tracker.js"
data-api-key="your-website-key"
defer
></script>Setzen Sie das Tag in den <head> Ihres HTML. Besteht Ihre Website aus einzelnen Seiten, gehört es auf jede Seite, die erfasst werden soll. Behalten Sie defer bei.
Wo das Tag hingehört:
- React mit Vite sowie Vue:
index.htmlim Projektordner. - Create React App:
public/index.html. - Angular:
src/index.html. - SvelteKit:
src/app.html. - Next.js: die Komponente
Scriptim Root-Layout, wie unten gezeigt. Beim Pages Router gehört sie inpages/_app.tsx. Das Paket@privatrak/nextist der einfachere Weg: Auf Next.js einbinden. - Nuxt:
app.head.scriptinnuxt.config.ts, mitdata-api-keyunddefer: true, wie unten gezeigt. Das Modul@privatrak/nuxtist der einfachere Weg: Auf Nuxt einbinden.
// app/layout.tsx
import Script from 'next/script';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://api.privatrak.com/tracker.js"
data-api-key="your-website-key"
strategy="afterInteractive"
/>
</body>
</html>
);
}// nuxt.config.ts
export default defineNuxtConfig({
app: {
head: {
script: [
{
src: 'https://api.privatrak.com/tracker.js',
'data-api-key': 'your-website-key',
defer: true,
},
],
},
},
});Beim Skript-Tag kennt TypeScript window.tracker nicht. Fügen Sie Ihrem Projekt diese Deklaration hinzu:
export {};
declare global {
interface Window {
tracker: {
init: (config?: Record<string, unknown>) => void;
track: (name: string, attrs?: Record<string, string | number>) => void;
setTraits: (traits: string[]) => void;
version: string;
};
}
}Mit dem npm-Paket
Installieren Sie @privatrak/tracker und rufen Sie init() einmal im Browser auf, so früh wie möglich. Übergeben Sie apiKey und apiHost genau wie gezeigt.
import { init, track } from '@privatrak/tracker';
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
track('signup-completed');Ab dann werden Seitenaufrufe, Klicks und abgeschickte Formulare erfasst, auch der erste Seitenaufruf. Auf einem Server tut init() nichts. Sie können es also auch in Code importieren, der dort gerendert wird. Die Typen bringt das Paket selbst mit.
React
Rufen Sie init() in der Datei auf, die Ihre App startet, und zwar vor dem Rendern: src/main.tsx bei Vite, src/index.tsx bei Create React App.
// src/main.tsx
import { init } from '@privatrak/tracker';
import { createRoot } from 'react-dom/client';
import App from './App';
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
createRoot(document.getElementById('root')!).render(<App />);Next.js
Das Paket @privatrak/next ist der einfachere Weg: Es startet den Tracker für Sie und meldet außerdem KI-Crawler von Ihrem Server aus. Auf Next.js einbinden zeigt die Schritte. Möchten Sie stattdessen @privatrak/tracker nutzen, starten Sie ihn in einer kleinen Client-Komponente und rendern diese einmal im Root-Layout.
// app/tracker.tsx
'use client';
import { useEffect } from 'react';
import { init } from '@privatrak/tracker';
export function Tracker() {
useEffect(() => {
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
}, []);
return null;
}Mit dem Pages Router rendern Sie dieselbe Komponente in pages/_app.tsx.
Vue
Rufen Sie init() in src/main.ts auf, bevor die App startet.
// src/main.ts
import { init } from '@privatrak/tracker';
import { createApp } from 'vue';
import App from './App.vue';
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
createApp(App).mount('#app');Nuxt
Das Modul @privatrak/nuxt ist der einfachere Weg: Es startet den Tracker für Sie, stellt useTracker() bereit und meldet außerdem KI-Crawler von Ihrem Server aus. Auf Nuxt einbinden zeigt die Schritte. Möchten Sie stattdessen @privatrak/tracker nutzen, legen Sie in app/plugins ein Plugin an, dessen Dateiname auf .client.ts endet. Nuxt führt es nur im Browser aus. Bei Nuxt 3 heißt der Ordner plugins.
// app/plugins/privatrak.client.ts
import { init } from '@privatrak/tracker';
export default defineNuxtPlugin(() => {
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
});Angular
Rufen Sie init() in src/main.ts auf, bevor die Anwendung startet. track() importieren Sie in jeder Komponente, die es braucht.
// src/main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { init } from '@privatrak/tracker';
import { AppComponent } from './app/app.component';
import { appConfig } from './app/app.config';
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
bootstrapApplication(AppComponent, appConfig);Svelte und SvelteKit
Rufen Sie init() im Root-Layout innerhalb von onMount auf, damit es im Browser läuft.
<!-- src/routes/+layout.svelte -->
<script>
import { onMount } from 'svelte';
import { init } from '@privatrak/tracker';
onMount(() => {
init({
apiKey: 'your-website-key',
apiHost: 'https://api.privatrak.com',
});
});
</script>
<slot />Prüfen, ob es funktioniert
Öffnen Sie eine Seite Ihrer Website und danach Events in Privatrak. Ihr Seitenaufruf erscheint nach wenigen Sekunden. Kommt nichts an, öffnen Sie die Konsole Ihres Browsers. Der Tracker schreibt dort, was schiefgegangen ist, und unter Wenn nichts gesendet wird steht, was Sie tun können.
Von Ihrem Server
Um etwas zu erfassen, das nie in einem Browser passiert, senden Sie es an POST /api/events, mit Ihrem Website-Schlüssel im Header X-API-Key. Jedes Event braucht event_type, page_url und timestamp, und eine Anfrage nimmt bis zu 100 Events an. Diese Gruppe von Events können Sie mit einer batch_id benennen, einer UUID. Verwenden Sie für jede Gruppe eine neue ID und bei jedem erneuten Senden derselben Gruppe dieselbe. Kam eine Anfrage bei Privatrak an, aber die Antwort nicht bei Ihnen, senden Sie sie innerhalb von 1 Stunde erneut, ohne dass die Events doppelt gezählt werden. Danach zählt dieselbe ID die Events erneut. Verwenden Sie eine ID nie für andere Events, denn Privatrak speichert diese Events nicht.
curl -X POST https://api.privatrak.com/api/events \
-H "Content-Type: application/json" \
-H "X-API-Key: your-website-key" \
-d '{
"events": [{
"event_type": "custom",
"data_track": "invoice-paid",
"page_url": "https://example.com/billing",
"timestamp": "2026-01-15T10:30:00Z"
}]
}'Privatrak zählt alle Events von einem Server als einen Besucher pro Tag.
Events von Ihrem Server werden so gezählt, wie Sie sie senden, mit jedem beliebigen HTTP-Client.
Was Sie an track() oder setTraits() übergeben, wird so gespeichert, wie Sie es senden. Senden Sie keine personenbezogenen Daten.
Nächste Schritte
- Im Code benennen: Benennen Sie Buttons mit
data-trackund senden Sie Events mittrack(). - Tracker-Referenz: alle Attribute und Funktionen zum Nachschlagen.
- Server-Anfragen melden: Zählen Sie KI-Crawler, die Ihr JavaScript nie ausführen.