iOS analytics
with a native Swift SDK.
Add one Swift file to your app, mark onboarding steps and paywall events, and see installs, funnel drop-off and revenue from RevenueCat or Superwall in one dashboard.
- Native Swift
- Native Android
- Flutter
- React Native
- RevenueCat
- Superwall
- One Swift file, no dependenciesThe SDK is a single file for iOS 15 and later. Configure it at launch and it records first open and every session on its own.
- Onboarding and paywall callsonboardingStep, onboardingCompleted, paywallShown, paywallPlanSelected and paywallPurchased fill the funnel and paywall cards.
- Revenue from RevenueCat or SuperwallPass the provider's user id to configure, and trials, renewals and refunds land next to the events from the same device.
The dashboard your Swift events fill, on demo data
Onboarding
Acquisition
Outcomes
10
started
cohort outcomes
50% churn by
7.0d
churn paths
- cancelled
- 0
- expired
- 1
Apple Ads
Devices
Events
How is Workout Tracker doing? Show me the numbers and where we’re losing users.
activationpal.list_apps()└ Workout Tracker id: "workout-tracker"
activationpal.get_stats( app: "workout-tracker", range: "30d" )└ Snapshot received · installs, revenue, onboarding, paywall
WORKOUT TRACKER · LAST 30 DAYS revenue $255.26 ↓8% installs 737 ↑48% conversion 4.3% 32 purchases installs ▅▅▄▄▆█▇▆▄▆▅▆▅▅▆▆▇█▆▅▇▆ revenue ▁▁▁▁▁▁▂▁▂▁▄█▂▁▂▁▁▁▄▁▄▁ Sep 16 → Oct 15 ONBOARDING installed 737 100% █████████ your goal 696 94% ████████░ experience lev 647 88% ████████░ weekly schedul 602 82% ███████░░ notifications 566 77% ███████░░ completed 541 73% ███████░░
Biggest leak: “experience level” loses 49 users (7% of arrivals). Installs are up 48%. Test a shorter version before increasing spend.
Which markets are actually making money?
MARKET INST REVENUE US United States 217 $107.89 GB United Kingdom 68 $27.97 DE Germany 62 $23.98 AU Australia 28 $19.99 organic 640 $198.82 apple ads 97 $56.44
Revenue is concentrated in United States. Scale only where revenue per install supports the acquisition cost.
iOS analytics FAQ
How do I add analytics to an iOS app in Swift?
Download ActivationPal.swift into your app target, then call ActivationPal.configure(app: "myapp", key: "ap_pk_YOUR_KEY") in your App init. The app slug and key come from adding the app in the dashboard. Full steps: Quickstart.
What does the Swift SDK track automatically?
first_open once per install, app_open on every new session, and the Apple Search Ads attribution token at first open. Every event also carries app version, build, OS version, device model, locale, timezone and the build environment: debug, testflight or release. See the event list.
How do I track onboarding and paywall events in Swift?
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.
Can I track custom events?
Yes: ActivationPal.track("workout_logged", ["type": "run", "duration_min": 42]). Use any snake_case name with String, Bool, Int or Double props. New names appear in the Events card with counts and unique devices, with no registration.
How does subscription revenue get into the dashboard?
Through a RevenueCat or Superwall webhook, one revenue source per app. To join purchases to the device, pass the provider's user id when you configure: ActivationPal.configure(app: "myapp", key: "ap_pk_YOUR_KEY", userId: Purchases.shared.appUserID) for RevenueCat, or Superwall.shared.userId as the userId for Superwall. Setup: RevenueCat webhook, Superwall webhook and subscription analytics.
Does it show Apple Search Ads installs?
Yes. The Swift SDK captures the AdServices token at first open, and the dashboard splits installs into Apple Ads and organic, by campaign. Connecting the Apple Search Ads API adds spend, CPI and impressions. Setup: Apple Search Ads.
Can I track events from an Apple Watch app?
A Watch app relays to the phone, so mark the relay point with ActivationPal.trackFromWatch("workout_started") and the Devices card files the event under Apple Watch.
When are events sent?
Events buffer in memory and on disk, so they survive a force-quit. The SDK flushes every 10 seconds, at 20 buffered events and when the app goes to the background, and retries failed flushes. configure does not block the main thread.
What user data does the Swift SDK collect?
It identifies an install with a random device id and does not collect a name or email on its own. A user id is optional and can be cleared with ActivationPal.setUserId(nil). Details: Privacy and security.
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.