PushEngage

Flutter Push Notification SDK
Add cross-platform push notifications to your Flutter app.

pub.dev Platform Flutter Dart License


Why PushEngage?

PushEngage is a complete push notification platform that supports web and mobile from a single dashboard. Unlike wiring up Firebase Cloud Messaging and APNs yourself, PushEngage gives you a full marketing toolkit on top of reliable cross-platform delivery: audience segmentation, automated drip campaigns, A/B testing, analytics, and a no-code campaign builder.

Key features of the Flutter SDK:

  • Cross-Platform -- single API for both Android and iOS
  • Rich Notifications -- images, action buttons, custom sounds
  • Deep Linking -- native Stream-based deep link handling
  • Audience Segmentation -- static and dynamic segments based on user behavior
  • Triggered Campaigns -- send notifications based on in-app events
  • Goal Tracking -- measure conversions tied to notifications
  • Price Drop & Inventory Alerts -- e-commerce trigger notifications
  • Subscriber Attributes -- store custom key-value data per subscriber
  • Type-Safe Results -- all async methods return PushEngageResult<T> with built-in error handling

Installation

Add to your pubspec.yaml:

dependencies:
  pushengage_flutter_sdk: ^1.0.0

Then run:

flutter pub get

Prerequisites: Firebase project (Android) + Apple Developer account (iOS). See the Getting Started Guide for platform-specific setup.


Quick Start

1. Initialize the SDK

import 'package:pushengage_flutter_sdk/pushengage_flutter_sdk.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  PushEngage.setAppId('YOUR_APP_ID');

  runApp(MyApp());
}

2. Request Permission & Subscribe

final permResult = await PushEngage.requestNotificationPermission();
if (permResult.data == true) {
  final subResult = await PushEngage.subscribe();
  print('Subscribed: ${subResult.data}');
}
PushEngage.deepLinkStream.listen((data) {
  if (data != null) {
    // Navigate to the appropriate screen based on data
    print('Deep link received: $data');
  }
});

4. Send a Goal Event

final goal = Goal(name: 'purchase_complete', count: 1, value: 49.99);
await PushEngage.sendGoal(goal);

API Overview

Category Methods
Setup setAppId, getSdkVersion, setSmallIconResource (Android), setBadgeCount, runConfigValidation (Android), enableLogging
Permissions requestNotificationPermission, getNotificationPermissionStatus
Subscription subscribe, unsubscribe, getSubscriptionStatus, getSubscriptionNotificationStatus
Subscriber Data getSubscriberId, getSubscriberDetails, getDeviceTokenHash (Android), addProfileId, identify, logout
Attributes addSubscriberAttributes, setSubscriberAttributes, getSubscriberAttributes, deleteSubscriberAttributes
Segments addSegment, removeSegment, addDynamicSegment
Events sendTriggerEvent, sendGoal, addAlert, trackEvent
Notifications getInitialNotification (iOS)
Campaigns automatedNotification (enable/disable)
Streams deepLinkStream (deep link data), onFcmConfigError (Android FCM config errors)

All async methods return PushEngageResult<T> which wraps the response data and any errors for safe handling.

Full API reference: Flutter SDK Public APIs


Example Project

The example/ directory contains a complete Flutter app demonstrating:

  • Push notification setup and permission handling
  • Home screen with subscriber management
  • Alert entries (price drop / inventory)
  • Trigger campaigns
  • Goal tracking

To run the example:

cd example
flutter pub get
flutter run

Documentation


Requirements

Requirement Minimum
Flutter 3.3.0+
Dart 3.4.3+
iOS 12.0+
Android 5.0+ (API 21)
Firebase Required (Android)
APNs Required (iOS)

Contributing

See CONTRIBUTING.md for guidelines.


Support

Having trouble? We're here to help.


License

MIT -- see LICENSE for details.