Zum Inhalt springen
trackd.one

Apps

JavaScript & React Native

SDK für Web-Apps (SPAs), React Native, Node.js 18+ und Electron. Ohne Abhängigkeiten, ohne Cookies, ohne localStorage.

Wann das SDK, wann das Script?

Für klassische Websites reicht das einzeilige Tracking-Script (automatische Seitenaufrufe). Nimm das SDK, wenn du Screens und Events explizit tracken, Events bündeln oder außerhalb eines Browsers messen willst.

Installation

Das npm-Paket @trackd/sdk folgt (noch nicht veröffentlicht). Bis dahin per Copy-in:

curl -o src/lib/trackd.mjs   https://trackd.one/sdk/trackd.mjs
curl -o src/lib/trackd.d.mts https://trackd.one/sdk/trackd.d.ts   # optional, TypeScript-Typen
import { Trackd } from './lib/trackd.mjs'

const trackd = new Trackd({ websiteId: 'YOUR_WEBSITE_ID', host: 'https://trackd.one' })

trackd.screen('Home')                       // Screen-/Seitenaufruf
trackd.event('signup', { plan: 'pro' })     // Custom Event
trackd.revenue(9.99, 'EUR', 'order-123')

Ohne Bundler (UMD-Build, stellt window.Trackd bereit):

<script src="https://trackd.one/sdk/trackd.js"></script>
<script>
  const trackd = new Trackd({ websiteId: 'YOUR_WEBSITE_ID' })
  trackd.screen('Home')
</script>

Dateien: trackd.mjs (ES-Modul), trackd.js (UMD), trackd.d.ts (Typen).

API

const trackd = new Trackd({
  websiteId: 'YOUR_WEBSITE_ID',   // Pflicht
  host: 'https://trackd.one',     // selbst gehostet? URL deiner Instanz (HTTPS)
  platform, appVersion, osVersion, screen, language, device, // wo möglich automatisch
  debug: false,
})

trackd.screen('Settings/Profile', 'Profile')           // mit Titel
trackd.event('signup', { plan: 'pro', trial: true })   // flache Daten
await trackd.flush()                                   // jetzt senden (lehnt nie ab)
trackd.setEnabled(false)                               // Opt-out: stoppen + Warteschlange leeren

Weitere Optionen: enabled, respectDoNotTrack (Browser, Standard true), autoFlushOnHide, flushAt (20), flushInterval (10000 ms; React Native 30000 ms), maxQueueSize (500), sessionTimeout (30 min), requestTimeout (15 s).

Web-SPA (React Router, Vue Router …)

// React Router
function TrackScreens() {
  const location = useLocation()
  useEffect(() => { trackd.screen(location.pathname) }, [location.pathname])
  return null
}

// Vue Router
router.afterEach((to) => trackd.screen(to.path))

Im Browser erkennt das SDK platform: "web", Bildschirmgröße, Sprache und Geräteklasse und sendet die Warteschlange beim Verstecken des Tabs per navigator.sendBeacon. Global Privacy Control / Do Not Track schalten das Tracking ab, solange du nicht respectDoNotTrack: false setzt. Web-Requests müssen von der registrierten Domain kommen.

React Native

import { AppState, Platform } from 'react-native'
import { Trackd } from './lib/trackd.mjs'

export const trackd = new Trackd({
  websiteId: 'YOUR_WEBSITE_ID',
  platform: Platform.OS === 'ios' && Platform.isPad ? 'ipados' : Platform.OS,
  osVersion: Platform.OS === 'ios' ? `iOS ${Platform.Version}` : `Android ${Platform.constants.Release}`,
  appVersion: '1.4.0',
  device: Platform.isPad ? 'tablet' : 'mobile',
})

// Beim Wechsel in den Hintergrund senden, Session nach 30 min Abwesenheit erneuern
AppState.addEventListener('change', (state) => {
  if (state === 'background') trackd.onBackground()
  else if (state === 'active') trackd.onForeground()
})

Für das Screen-Tracking mit React Navigation rufst du trackd.screen(route.name) in onReady und onStateChange des NavigationContainer auf. React-Native-Requests haben keinen Origin-Header — trage im Dashboard die Bundle-ID als „Domain“ ein. Android-Release-Builds brauchen die INTERNET-Berechtigung (in den Vorlagen enthalten).

Node.js & Electron

const trackd = new Trackd({ websiteId: process.env.TRACKD_ID, platform: 'node', appVersion: '3.0.0' })
trackd.event('command_run', { command: 'deploy', ok: true })

// Timer halten den Prozess nicht am Leben — vor dem Beenden senden:
await trackd.flush()

Nutze platform: 'node' (oder 'server') für CLIs, Server und Backends. In Electron werden Plattform und device: "desktop" automatisch erkannt.

In wenigen Minuten startklar

Kostenloses Konto erstellen, Website oder App hinzufügen, Snippet kopieren.

Kostenlos starten