Skip to content
Chumbaq

Engagement for Flutter, without a native detour

One package gives your Flutter app push reporting, native in-app messages and user identity on iOS and Android. It sits on top of your firebase_messaging setup instead of replacing it.

main.dart, push

await ChumbaqPush.instance.init();

FirebaseMessaging.onMessage.listen(
  (message) => ChumbaqPush.instance.reportNotificationReceived(message.data),
);

FirebaseMessaging.onMessageOpenedApp.listen((message) async {
  final url = await ChumbaqPush.instance.reportNotificationClicked(message.data);
  if (url != null) router.go(url);
});

Where users slip away

  • 01

    Plugins that fight your setup

    Engagement SDKs that take over Firebase Messaging and break your existing handlers.

  • 02

    Web views that look wrong

    In-app messages drawn in a web view never feel like part of your app.

  • 03

    Two native SDKs to wire

    Half the docs assume you write Swift and Kotlin, not Dart.

Journeys you can run on day one

Each one is a journey you build once in Chumbaq. It runs for every new user who matches, and stops as soon as they reach the goal.

  • Turn on push, politely

    1. Third session
    2. Bottom sheet asking first
    3. System prompt only on yes
    4. Push enabled
  • Onboarding

    1. Signed up
    2. In-app on Home
    3. Wait 1 day
    4. Push
    5. Key action
  • Feature launch

    1. Segment: active users
    2. Fullscreen on next open
    3. Feature used

Drawn natively, controlled from Dart

The native iOS and Android SDKs draw the in-app messages; the Flutter package tells them which screen is showing and hands every tap and event back to you as a Dart stream.
  • flutter pub add chumbaq
  • Works next to firebase_messaging
  • Push events: delivered, impression, click, dismissed

main.dart, in-app triggers

ChumbaqMessages.instance.events.listen((event) => switch (event) {
  MessageButtonAction(:final button) => router.go(button.actionUrl!),
  _ => null,
});

await ChumbaqMessages.instance.onAppOpen();
await ChumbaqMessages.instance.onScreenView('Paywall');
await ChumbaqMessages.instance.onEvent('purchase');

Flutter apps, answered

Does it replace firebase_messaging?
No. Your app keeps receiving messages through firebase_messaging; you hand each one to Chumbaq so it can report it.
What about React Native?
There's no React Native SDK today. Chumbaq ships SDKs for iOS, Android, Flutter and the web.

Bring your users back

Free up to 2,500 monthly active users. No card, no sales call.