Skip to content

Adapter Setup ​

TrackingAdapter is the bridge between the directive and your analytics provider:

ts
interface TrackingAdapter {
  track(eventName: string, data?: unknown): void;
}

Register one adapter at application startup:

ts
import { provideTrackingAdapter } from 'ng-track-event-directive';
import { trackingAdapter } from './tracking-adapter';

export const appConfig = {
  providers: [provideTrackingAdapter(trackingAdapter)],
};

Console ​

Start with a console adapter to verify event names and payloads locally.

ts
import type { TrackingAdapter } from 'ng-track-event-directive';

export const trackingAdapter: TrackingAdapter = {
  track(eventName, data) {
    console.log('[analytics]', eventName, data);
  },
};

Mixpanel ​

Install the browser SDK:

bash
npm install mixpanel-browser
ts
import mixpanel from 'mixpanel-browser';
import type { TrackingAdapter } from 'ng-track-event-directive';

mixpanel.init('YOUR_PROJECT_TOKEN');

export const trackingAdapter: TrackingAdapter = {
  track: (eventName, data) => mixpanel.track(eventName, (data ?? {}) as Record<string, unknown>),
};

Google Analytics 4 ​

This adapter assumes the Google tag is already loaded by your application.

ts
import type { TrackingAdapter } from 'ng-track-event-directive';

declare function gtag(...args: unknown[]): void;

export const trackingAdapter: TrackingAdapter = {
  track: (eventName, data) => gtag('event', eventName, (data ?? {}) as Record<string, unknown>),
};

Segment ​

This adapter assumes Analytics.js is already loaded by your application.

ts
import type { TrackingAdapter } from 'ng-track-event-directive';

declare const analytics: {
  track(eventName: string, properties?: Record<string, unknown>): void;
};

export const trackingAdapter: TrackingAdapter = {
  track: (eventName, data) => analytics.track(eventName, (data ?? {}) as Record<string, unknown>),
};

When no adapter is registered ​

The adapter is optional. If none is registered, valid tracking events are safely ignored. This is useful for incremental rollout or environments where analytics is disabled.