Skip to main content

Event Batching

The Node.js SDK automatically batches events for efficiency:
const analytics = new Analytics({
  writeKey: 'YOUR_API_KEY',
  maxEventsInBatch: 15,  // Default: 15 events per batch
  flushInterval: 10000    // Default: 10 seconds
})

Flushing Events

Ensure all events are sent before application exit:
// Flush all pending events
await analytics.closeAndFlush()

// With timeout
await analytics.closeAndFlush({ timeout: 5000 })

// Good practice: flush on process exit
process.on('SIGTERM', async () => {
  await analytics.closeAndFlush()
  process.exit(0)
})

Error Handling

Handle errors with event emitters:
analytics.on('error', (err) => {
  console.error('Analytics error:', err)
})

analytics.on('http_request', (event) => {
  console.log('HTTP request:', event)
})

Callbacks

Use callbacks for individual events:
analytics.track({
  userId: 'user@example.com',
  event: 'signup_completed'
}, (err, batch) => {
  if (err) {
    console.error('Failed to track event:', err)
  } else {
    console.log('Event tracked successfully')
  }
})