ActivationPal

Analytics for fitness apps
from goal quiz to subscription.

See where new users drop out of your goal quiz, which workouts they log on phone and watch, and how many reach and buy at the paywall. For Native Swift, Native Android, Flutter and React Native apps.

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

The dashboard a fitness app fills, 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

Analytics for fitness apps FAQ

How do I track goal quiz answers in a fitness app?

Call ActivationPal.onboardingStep(0, id: "goal", answer: "lose_weight") once per onboarding screen, in order, with the index starting at 0, then ActivationPal.onboardingCompleted() at the end. Answers split under the question step in the funnel. More: onboarding funnel analytics.

How do I track workouts as custom events?

On iOS: ActivationPal.track("workout_logged", ["type": "run", "duration_min": 42]). On Android, pass mapOf("type" to "run", "duration_min" to 42) as the props. Use snake_case names with no registration; they appear in the Events card with counts and unique devices. See the event list.

Can I track events from an Apple Watch or Wear OS app?

Yes. Mark the relay point with ActivationPal.trackFromWatch("workout_started") on Apple Watch or ActivationPal.trackFromWear("workout_started") on Wear OS, and the Devices card files the event under that device. Platform pages: iOS analytics and Android analytics.

How do I see paywall and free trial conversion?

Call ActivationPal.paywallShown("onboarding"), ActivationPal.paywallPlanSelected("yearly") and ActivationPal.paywallPurchased("yearly"), and connect a RevenueCat or Superwall webhook for trial starts, conversions and renewals. One revenue source per app. Setup: free trial conversion tracking, subscription analytics, RevenueCat and Superwall.

Does it track heart rate, sets or other workout data?

No. It measures onboarding, paywall, events and subscription outcomes. Event props, as String, Bool, Int or Double values, are for slicing events, not for storing workout data.

Which platforms does it support?

Native Swift, Native Android, Flutter and React Native / Expo. Setup for each is in the Quickstart.

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.