Transports
Transports receive normalised AnalyticsEvent objects from the AnalyticsCollector and forward them to analytics platforms.
Built-in Transports
PostHogTransport
Sends events to PostHog.
ts
import { PostHogTransport } from '@guideflow/analytics'
new PostHogTransport()Requires posthog-js to already be initialised in your app (posthog.init(…)). The transport calls posthog.capture() internally.
MixpanelTransport
Sends events to Mixpanel.
ts
import { MixpanelTransport } from '@guideflow/analytics'
new MixpanelTransport()Requires the Mixpanel browser SDK to be initialised (mixpanel.init(…)).
AmplitudeTransport
Sends events to Amplitude.
ts
import { AmplitudeTransport } from '@guideflow/analytics'
new AmplitudeTransport()Requires @amplitude/analytics-browser to be initialised.
SegmentTransport
Sends events to Segment via analytics.track().
ts
import { SegmentTransport } from '@guideflow/analytics'
new SegmentTransport()Requires the Segment Analytics.js snippet to be present on the page.
WebhookTransport
POSTs events as JSON to any HTTP endpoint. Useful for custom backends or data warehouses.
ts
import { WebhookTransport } from '@guideflow/analytics'
new WebhookTransport(options: WebhookTransportOptions)WebhookTransportOptions
| Option | Type | Description |
|---|---|---|
url | string | The endpoint URL to POST events to |
headers | Record<string, string> | Optional additional HTTP headers (e.g. auth tokens) |
ts
new WebhookTransport({
url: 'https://myapp.com/api/tours/events',
headers: { Authorization: `Bearer ${token}` },
})Custom Transport
Implement AnalyticsTransport to integrate any platform:
ts
import type { AnalyticsTransport, AnalyticsEvent } from '@guideflow/analytics'
class MyTransport implements AnalyticsTransport {
async send(event: AnalyticsEvent): Promise<void> {
await fetch('/my-endpoint', {
method: 'POST',
body: JSON.stringify(event),
})
}
// Optional — called by collector.flush()
async flush(): Promise<void> {
// flush any batched events
}
}AnalyticsEvent Shape
ts
interface AnalyticsEvent {
name: string // e.g. "guideflow.tour.started"
userId?: string
properties: Record<string, unknown>
timestamp: number // Unix ms
}