event_tracker_handler

Multi-provider event tracking with Firebase Analytics, Mixpanel, and custom webhooks.

Features

  • Track predefined events with a single handler.
  • Firebase Analytics, Mixpanel, and custom webhook backends.
  • Typed user and event data (items, value, currency, custom fields).
  • Built-in event timing helpers.

Getting started

Add event_tracker_handler to your pubspec.yaml and complete the setup for any providers you plan to use (Firebase/Mixpanel).

Usage

Create settings for each tracker and build a handler instance:

import 'package:decimal/decimal.dart';
import 'package:event_tracker_handler/event_tracker_handler.dart';

final handler = EventTrackerHandler.instance([
  EventTrackerSettingsFirebase(
    eventsToTrack: [EventTrackerEvents.openApp, EventTrackerEvents.purchase],
  ),
  EventTrackerSettingsMixpanel(
    token: 'YOUR_MIXPANEL_TOKEN',
    eventsToTrack: [EventTrackerEvents.openApp, EventTrackerEvents.purchase],
  ),
  EventTrackerSettingsCustomWebhook(
    url: 'https://example.com/events',
    eventsToTrack: [EventTrackerEvents.openApp],
  ),
]);

Future<void> trackPurchase() async {
  await handler.init();

  handler.logEvent(
    type: EventTrackerEvents.purchase,
    userData: EventTrackerUserData(
      uuid: 'user-123',
      email: 'user@example.com',
      isAnonymous: false,
    ),
    data: EventTrackerData(
      value: Decimal.parse('29.90'),
      currency: 'USD',
      customData: {'plan': 'pro'},
    ),
  );
}

You can also build tracker settings from a map:

final settings = EventTrackerSettingsModel.fromMap({
  'type': 'EventTrackerType.mixpanel',
  'token': 'YOUR_MIXPANEL_TOKEN',
  'events': ['EventTrackerEvents.openApp', 'EventTrackerEvents.purchase'],
});

Additional information

Custom webhook events include app and device metadata plus the user payload.