Herald

Events, properties and the Herald fan-out: the core of Herald for Flutter, in pure Dart, with no Flutter, vendor SDK or DI library. Vendors are separate packages.

final class CheckoutStarted extends Event {
  const CheckoutStarted(this.plan, this.seats);

  final String plan;
  final int seats;

  @override
  String get name => 'checkout_started';

  @override
  Map<String, AnalyticsValue> get parameters => {'plan': .string(plan), 'seats': .int(seats)};
}

final herald = Herald(
  providers: [
    HeraldProvider(name: 'analytics', events: analyticsTracker, properties: analyticsTracker),
    HeraldProvider(name: 'attribution', events: attributionTracker),
  ],
  errorReporter: (failure) => report(failure.error, failure.stackTrace),
);

await herald.track(const CheckoutStarted('pro', 3));

Herald implements all five capabilities — EventTrackerService, PropertyTrackerService, IdentifiableUserService, AnalyticsLifecycleService and ConsentService — so give your classes the one interface they use.

Each call runs against every vendor at once, and a failing vendor is reported without stopping the others. Calls don't wait for each other, so when order matters, await the earlier call.

Packages

Add the vendors you use, each over that vendor's official Flutter plugin:

Package What it is
herald_firebase Sends to Firebase Analytics (GA4).
herald_adjust Sends to Adjust: events by dashboard token, purchases and ad revenue.
herald_mixpanel Sends to Mixpanel: events, user profile and super properties.
herald_appsflyer Sends to AppsFlyer: conversions, purchases, subscriptions and ad revenue.
herald_amplitude Sends to Amplitude: events, user properties, screen views and revenue.
herald_log Prints every call, for debug builds.
herald_testing FakeAnalyticsProvider, a fake vendor that records events so your tests can check them.
herald_widgets Optional: tracking from widgets, such as screen views and impressions.

Documentation

The Herald website has the guides, and the repository has an example app.

Libraries

herald
Herald: one analytics vocabulary, heard by every vendor.