Skip to main content

herald_meta 1.1.0 copy "herald_meta: ^1.1.0" to clipboard
herald_meta: ^1.1.0 copied to clipboard

A Herald vendor adapter that sends to Meta's App Events: conversions and purchases, for Meta's ads.

example/herald_meta_example.dart

import 'package:facebook_app_events/facebook_app_events.dart';
import 'package:flutter/widgets.dart';
import 'package:herald/herald.dart';
import 'package:herald_meta/herald_meta.dart';

final class const OrderPaid(final String orderId, final double total) extends Event {
  @override
  String get name => 'order_paid';

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

/// Sends a paid order as Meta's fb_mobile_purchase, and leaves every other event to the next
/// factory.
final class const PurchaseMetaFactory(final FacebookAppEvents appEvents)
    implements MetaEventTrackerFactory {
  @override
  Resolution<MetaEventTracker> create(Event event) => switch (event) {
    OrderPaid() => .claimed([
      PurchaseMetaEventTracker(
        MetaPurchaseEvent(name: event.name, amount: event.total, currency: 'EUR'),
        appEvents,
      ),
    ]),
    _ => const .declined(),
  };
}

HeraldProvider metaProvider(FacebookAppEvents appEvents) {
  final service = MetaAnalyticsService(appEvents);
  final tracker = MetaAnalyticsTrackerService(
    // Nothing at the end, so only the conversions a factory handles are sent.
    eventTrackerFactory: CompositeMetaEventTrackerFactory([PurchaseMetaFactory(appEvents)]),
  );
  return HeraldProvider(
    name: 'meta',
    events: tracker, // no properties: Meta keeps no user attributes
    identity: service,
    lifecycle: service,
    consent: service,
  );
}

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final herald = Herald(providers: [metaProvider(FacebookAppEvents())]);

  await herald.start();
  await herald.setEnabled(true); // the user agreed: Meta starts
  await herald.track(const OrderPaid('order-1', 9.99));
}
0
likes
160
points
72
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

A Herald vendor adapter that sends to Meta's App Events: conversions and purchases, for Meta's ads.

Repository (GitHub)
View/report issues
Contributing

Topics

#analytics #meta #facebook #attribution #tracking

License

Apache-2.0 (license)

Dependencies

facebook_app_events, flutter, herald

More

Packages that depend on herald_meta