Skip to main content
Both packages include TypeScript definitions.

Browser TypeScript Example

import { AnalyticsBrowser, Analytics } from '@zixflow/analytics-browser'

const analytics: Analytics = AnalyticsBrowser.load({
  apiKey: 'YOUR_API_KEY'
})

interface UserTraits {
  email: string
  first_name: string
  last_name: string
  plan: 'free' | 'premium' | 'enterprise'
}

interface PurchaseProperties {
  product_id: string
  price: number
  currency: string
}

// Type-safe identify
analytics.identify('user@example.com', {
  email: 'user@example.com',
  first_name: 'John',
  last_name: 'Doe',
  plan: 'premium'
} as UserTraits)

// Type-safe track
analytics.track('purchase_completed', {
  product_id: '123',
  price: 29.99,
  currency: 'USD'
} as PurchaseProperties)

Node.js TypeScript Example

import { Analytics, AnalyticsSettings } from '@zixflow/analytics-node'

const settings: AnalyticsSettings = {
  writeKey: 'YOUR_API_KEY',
  maxEventsInBatch: 20,
  flushInterval: 10000
}

const analytics = new Analytics(settings)

interface UserTraits {
  email: string
  first_name: string
  last_name: string
}

analytics.identify({
  userId: 'user@example.com',
  traits: {
    email: 'user@example.com',
    first_name: 'John',
    last_name: 'Doe'
  } as UserTraits
})

// Flush before exit
process.on('SIGTERM', async () => {
  await analytics.closeAndFlush()
  process.exit(0)
})