ActivationPal

Flutter app analytics SDK
for iOS and Android.

Add one package to your Flutter app, mark onboarding steps and paywall events, and see installs, funnel drop-off and revenue from RevenueCat or Superwall in one dashboard. No Firebase project needed.

Start free10k free events · no card required
  • Native Swift
  • Native Android
  • Flutter
  • React Native
  • RevenueCat
  • Superwall

The dashboard your Flutter events fill, on demo data

4020$62$31Oct 11Oct 14Oct 17Oct 20Oct 23Oct 26Oct 29Nov 1Nov 4Nov 7

Onboarding

  • installed716100%
  • 0your goal68295%
    • build muscle33950%
    • lose weight20129%
    • stay consistent14221%
  • 1experience level63689%
    • beginner32751%
    • intermediate18028%
    • advanced12920%
  • 2weekly schedule59483%
    • 3 days30752%
    • 4 days17429%
    • 5+ days11319%
  • 3notifications55077%
    • allowed33861%
    • skipped21239%
  • completed52673%
  • paywall shown52673%
  • plan selected22932%
    • monthly13659%
    • lifetime9341%
  • purchased436%
    • monthly2456%
    • lifetime1944%

Acquisition

installsrevenue
  • Tier 1469$379.65
  • Tier 254$8.97
  • Tier 3102$25.45
  • Tier 475$14.36
  • Tier 516—

Outcomes

16

started

cohort outcomes

50% churn by

7.0d

churn paths

cancelled
0
expired
1

Apple Ads

Spend
$226.40
Revenue
$56.44
Impressions
11885
Installs
142
CPI
$1.59
spendinstalls
  • US — brand$103.2086
  • Worldwide — generic$123.2056

Devices

  • 📱 iPhone757
  • 🖥️ iPad52

Events

  • workout_logged721 · 518
  • streak_extended141 · 124
  • reminder_set68 · 66
  • badge_unlocked37 · 34
  • workout_shared32 · 31
  • apple_health_sync18 · 17

Flutter app analytics SDK FAQ

How do I add analytics to a Flutter app?

Run flutter pub add activationpal. Then in main() call WidgetsFlutterBinding.ensureInitialized() and await ActivationPal.configure(app: 'myapp', key: 'ap_pk_YOUR_KEY') before runApp. Awaiting it means an event fired by the first widget cannot race the setup. The app slug and key come from adding the app in the dashboard. Full steps: Flutter setup.

Can I use Flutter analytics without Firebase?

Yes. The package has no Firebase dependency. It relies on shared_preferences, package_info_plus and device_info_plus, and events go to your ActivationPal dashboard.

How do I track onboarding and paywall events in Flutter?

One call per onboarding screen, in order, with the index starting at 0: ActivationPal.onboardingStep(0, id: 'goal', answer: 'lose_weight'), then ActivationPal.onboardingCompleted() at the end. On the paywall: ActivationPal.paywallShown('onboarding'), ActivationPal.paywallPlanSelected('yearly'), ActivationPal.paywallPurchased('yearly') and ActivationPal.paywallDismissed(). What the funnel shows: onboarding funnel analytics.

How do I do Flutter event tracking with custom events?

Call ActivationPal.track('workout_logged', {'type': 'run', 'duration_min': 42}). Use a snake_case name in the past tense, with string, bool, int and double props. New names appear in the Events card with counts and unique devices, with no registration. See the event list.

How does RevenueCat or Superwall revenue join Flutter events?

Through a RevenueCat or Superwall webhook, one revenue source per app. For RevenueCat, configure Purchases first and pass its user id and storefront: ActivationPal.configure(app: 'myapp', key: 'ap_pk_YOUR_KEY', userId: await Purchases.appUserID, storefront: storefront?.countryCode). After a logIn or logOut call ActivationPal.setUserId(await Purchases.appUserID). For Superwall, call await Superwall.shared.identify(userId), then ActivationPal.setUserId(userId) with the same id. Setup: RevenueCat webhook, Superwall webhook and subscription analytics.

Does Apple Search Ads attribution work in Flutter?

On iOS, yes, with no extra code. At first open the package's bundled iOS bridge requests Apple's AdServices attribution token, and the Acquisition card separates Apple Ads installs from organic ones. No tracking prompt is shown. Apple attribution is iOS only. For the native stacks, see iOS analytics and Android analytics. Building with JavaScript instead? React Native analytics.

When are events sent, and does the SDK block the UI?

Up to 500 events are buffered on the device. The SDK flushes every 10 seconds, at 20 buffered events and when the app goes to the background, and retries a failed delivery. It never blocks the UI. Debug, TestFlight and release builds are tagged automatically. It needs Flutter 3.22 or later and Dart 3.4 or later.

How do I get started?

Create a free account, add an app, and follow the setup guide. The first 10,000 events are free and no card is required. Plans are on the pricing page.