Skip to Content
DocsSDKsWebAPI Reference

API Reference

Complete function reference for @poluruprvn/pug-web.

Package: @poluruprvn/pug-web
Source: cotton-web-sdk 

Functions

FunctionSignatureDescription
initinit(projectId: string, options: InitOptions): voidInitialize the SDK. Must be called first.
destroydestroy(): voidTear down trackers, flush queue, remove listeners
resetreset(): voidClear identity; start fresh anonymous session
rotaterotate(): voidForce new session ID without clearing identity
tracktrack(event: string, props?: object, options?: TrackOptions): voidTrack an event. Never throws.
identifyidentify(externalId: string, traits?: object): voidLink anonymous activity to a known user

InitOptions

OptionTypeDefaultDescription
apiKeystringrequiredProject SDK API key
endpointstringPug API base URL
samplingRatenumber1Event sampling fraction (0–1)
batch.maxSizenumber20Events per batch before flush
batch.flushIntervalMsnumber5000Max ms between flushes
session.timeoutMsnumber1800000Session inactivity timeout (30 min)
autoTrack.pageViewbooleantrueAuto page view tracking
autoTrack.clickbooleantrueAuto click tracking
autoTrack.scrollbooleantrueAuto scroll depth tracking
autoTrack.formbooleantrueAuto form interaction tracking
autoTrack.frustrationbooleantrueRage/dead click detection
dryRunbooleanfalseLog events without sending

See Initialization for examples of each option.

TrackOptions

OptionTypeDescription
immediatebooleanFlush immediately, skip batch queue
timestampDateOverride event timestamp (for offline replay)
track('purchase', { revenue: 99, currency: 'USD' }, { immediate: true, timestamp: new Date('2026-01-15T10:00:00Z') })

Error behavior

FunctionOn failure
track()Silent — logs to console, never throws
identify()Silent — logs to console, never throws
init()Throws if called without required options

Analytics should never break your app.

Event queue internals

track() called → event added to in-memory queue → queue persisted to localStorage → flush triggered when: - queue reaches batch.maxSize (default 20) - batch.flushIntervalMs elapsed (default 5s) - immediate: true - page unload (beforeunload) → EventsService.BatchCreate via Connect RPC → on failure: retry with backoff

Well-known event types

TypeScript types for well-known event properties are generated from protobuf schemas:

import type { PurchaseEvent } from '@poluruprvn/pug-web' track('purchase', { revenue: 29.99, currency: 'USD', order_id: 'ord-456' } satisfies PurchaseEvent)

Regenerate types when protos change:

node gen-well-known-events.mjs

See Well-known events for the full schema list.

Further reading

Last updated on