Metabase reports on events already in your database. Mixpanel collects app events and reports on them. ActivationPal, which publishes this site, gives iOS and Android apps a ready install-to-purchase funnel. Below, the same five funnel questions go through each tool.
Metabase vs Mixpanel at a glance
| Product | Best for | Platform | Price as stated by the source |
|---|
| ActivationPal | A fixed install-to-purchase funnel for mobile apps | Native Swift, Native Android, Flutter, React Native / Expo | First 10,000 events free; unlimited apps and members on every plan (pricing) |
| Metabase | SQL and dashboard reporting over your own database | Web app, Cloud or self-hosted | Open Source free; Starter $100 a month; Pro $575 a month; Enterprise from $20,000 a year (source) |
| Mixpanel | Event-based product analytics fed by an SDK | Web and mobile | Free up to 1M events a month; Growth starts at $0 with the first 1M events free; Enterprise by quote (source) |
The same mobile funnel questions, three ways
Each tool gets the same questions about an app:
- How many installs reach each onboarding step?
- Which step loses the most users?
- How many people who see the paywall pick a plan?
- How many buy?
- What has to exist before the tool can answer any of this?
The sections below answer them in turn for Metabase, Mixpanel and ActivationPal.
Metabase for mobile app funnels
Metabase queries data in a database you connect. Your app's events have to land there first, through whatever pipeline you run. The connection is set up under Admin > Databases > Add a database, with a database user that has the right privileges (Metabase docs).
A funnel chart needs a table with one column for the steps and one for the metric, and the steps must be sequential. If the steps come from different tables, you save a question per step and combine them with a SQL UNION (funnel chart docs). The chart shows each step against the first step, and hovering shows the comparison with the previous step.
Your effort: design the event table, write the step queries, keep them current as the app changes. In return you get any SQL you can write, over data from as many sources as you connect.
Cost: Open Source is free and self-hosted. Paid plans start with a 14-day trial, and every user who signs in counts toward the plan (pricing).
Stay with Metabase if your events already sit in a warehouse and someone on the team writes SQL.
Mixpanel for mobile app funnels
Mixpanel collects the events itself. For iOS you add the Swift SDK with Swift Package Manager, CocoaPods or Carthage, initialise it with your project token and send events with track(event:properties:) (Mixpanel Swift docs). The SDK sends events in batches every 60 seconds by default. Projects with EU or India data residency must set a serverURL.
You choose the event names, so the funnel is whatever you define: onboarding steps, paywall events, purchases. Funnels and retention analysis are on the Free plan, which allows up to 1M events a month and unlimited seats. The Free plan also limits saved reports to 5 per seat (pricing).
Your effort: name and send every funnel event from the app, then build each funnel report.
Stay with Mixpanel if you need funnels over custom events, or web and mobile in one tool.
ActivationPal for mobile app funnels
ActivationPal answers the five questions with a funnel that is already built. There is no query to write and no report to assemble.
Prerequisite: none beyond the SDK. For native Swift it is one file with no dependencies, iOS 15+. Android, Flutter and React Native / Expo have their own SDKs. The quickstart has the steps.
Instrumentation: one configure call sends first_open and app_open automatically. Onboarding and paywall are one call each:
ActivationPal.configure(app: "myapp", key: "ap_pk_YOUR_KEY")
ActivationPal.onboardingStep(0, id: "goal")
ActivationPal.onboardingCompleted()
ActivationPal.paywallShown("onboarding")
ActivationPal.paywallPlanSelected("yearly")
ActivationPal.paywallPurchased("yearly")
Purchases, trials and renewals arrive server-side through the RevenueCat webhook. Superwall is also supported.
Reporting: the funnel runs install, each onboarding step, completed, paywall shown, plan selected, purchased. Every stage counts unique devices from the install cohort, so no stage can exceed 100% of installs. Hovering a stage shows its step conversion and the users lost. The same numbers are available over REST and MCP, so an agent can read them without opening the dashboard (events reference).
Cost: the first 10,000 events are free across all your apps, and apps and members are unlimited on every plan. The pricing page lists the paid plans.
Limits: the funnel is fixed. Custom events appear in the Events card but do not enter the funnel. It covers mobile apps only, with no web funnels, and it counts devices rather than people. To check the arithmetic on your own numbers, use the funnel calculator.
Setup and reporting effort compared
- Data prerequisite: Metabase needs events in a database it supports. Mixpanel and ActivationPal collect them through an SDK.
- Instrumentation: Metabase has none of its own, so it depends on your pipeline. Mixpanel needs every funnel event named and sent by you. ActivationPal needs the SDK and five fixed calls.
- Reporting effort: in Metabase you write the step queries and the funnel chart. In Mixpanel you build each funnel report. In ActivationPal the funnel is built.
- Cost: Metabase Open Source is free to self-host and paid plans are priced per plan and per user. Mixpanel is free up to 1M events a month. ActivationPal is free for the first 10,000 events.
How to choose
- Metabase if your events already live in a database and you or your team write SQL.
- Mixpanel if you need funnels over events you define, or web and mobile analytics in one product.
- ActivationPal if the questions are onboarding and paywall conversion in an iOS or Android app and you do not want to build reports.