Overview · Analytics

What is mobile app analytics, and how do you build it in Metabase?

Mobile app analytics covers the full arc of an app: store impressions and listing views, installs, what people do once inside, subscriptions, revenue after platform fees, and the crash and rating quality underneath it all. The structural problem is that Apple and Google each report their own store in their own shapes and their own vocabulary, and neither will ever show you both. A unified install-to-proceeds view across stores only exists if you build it — and once the data is in a warehouse it can also be joined to ad spend and in-app behavior, which no store console can do.

TL;DR — Land both stores' report files in a SQL warehouse under three tables (app_store_daily_metrics, app_store_subscriptions, app_store_quality), each keeping a store column. Neither store has an official MCP server, Apple's export is asynchronous, and Play's installs and earnings are Cloud Storage CSVs rather than an API. Name your install definition before putting both stores on one chart.

What does mobile app analytics measure?

  • How many people see the listing, how many open it, and how many install — per store, per country, per source.
  • Which store converts better, and whether the gap is real or a definition artifact.
  • What the platforms actually keep: proceeds against gross sales, blended across the 15% and 30% tiers.
  • How subscriptions move — trials, starts, renewals, cancellations — across both stores at once.
  • Whether installs stick: net install growth against uninstalls, and retention from your own event data.
  • Whether a release broke something: crash rate and ANR rate read against install and rating trends.
  • What an install costs and what it returns — the join of ad spend, attribution, and store proceeds that no console offers.

Which tools feed mobile app analytics?

ToolBest forGetting data into Metabase
App Store ConnectImpressions to product page views to installs funnel; Store conversion rate by country and sourceApp Store Connect Analytics Reports API, or a Fivetran connector into your warehouse
Google Play ConsoleStore listing visitors to acquisitions conversion; Installs and uninstalls by country and devicePlay Developer Reporting API (vitals), or a Fivetran connector into your warehouse
RevenueCatCross-store subscription revenue as one subscriber modelWarehouse export or connector
AppsFlyerInstall attribution and campaign-level costData locker or warehouse export
AmplitudeIn-app behavior, funnels, and retention cohortsWarehouse sync or event export

The boundary is worth stating plainly, because it decides which tool answers which question: store data ends at the install. Both stores publish aggregated counts with no identifier to join on, so nothing that happens inside the app can be traced back to a download. Attribution supplies the campaign that produced the install, product analytics supplies the behavior after it, and RevenueCat supplies subscription revenue normalized across both stores.

What shared data models should you build?

Three tables carry both stores. Keep a store column on each so Apple and Play rows coexist, and leave store-specific columns store-specific rather than forcing them into a shared name that means two things.

  • app_store_daily_metrics — one row per day per app per store per dimension slice (country, device, source). Apple contributes impressions, product page views, first-time downloads, redownloads, units, sales and proceeds; Play contributes store listing visitors and acquisitions, device and user installs, uninstalls, and proceeds. This is the acquisition and money core.
  • app_store_subscriptions — one row per day per app per subscription product: active subscriptions, new subscriptions, cancellations, renewals, trial starts, and proceeds, with Apple's product IDs and Play's base plan IDs preserved.
  • app_store_quality — one row per day per app per version: Apple's sessions, crashes, crash rate, average rating and rating count; Play's daily crashes, ANRs, and average rating. Only meaningful read against install growth.

The rules that keep those three tables trustworthy:

  • Apple's first-time downloads and redownloads stay in separate columns — conflating them inflates acquisition and buries a retention problem.
  • Pick one Play install definition, document it in the model, and stick to it.
  • Apple's Analytics Reports and its Sales & Trends / Finance reports are different pipelines with genuinely different numbers. Never sum them as one revenue source; use the funnel from one and the money from the other, each labeled.
  • Normalize Play earnings to one reporting currency with the currency_conversion_rate column, keep refunds as the negative rows they arrive as, and report gross and net separately.
  • Play writes per-dimension files — a country file and a device file, but no country-by-device file. Don't promise a cross-tab the source cannot produce.
  • Apple's Standard reports omit Campaign, Source Info, and Page Title; only Detailed reports carry them. An empty conversion-by-campaign model usually means the wrong report tier was requested.

Which mobile app metrics matter most?

  • App store conversion rate— Apple's page views to downloads, Play's visitors to acquisitions. Defined per store, compared with a caveat.
  • Platform fee rate — the effective commission, derived from proceeds against sales rather than the rate card.
  • Conversion rate — the generic funnel-step pattern the store metrics specialize, and the one to reach for once the funnel continues past the install in your own data.
  • Activation rate — the first in-app milestone after install, from your event tables. The store cannot see it.
  • Churn rate — cancellations over active subscriptions, per store product or normalized cross-store.
  • MRR — recurring subscription revenue, cleanest when it comes from one normalized subscriber model.
  • ARPU — proceeds per active user, which needs the store's money next to your own active-user counts.
  • LTV — only meaningful once acquisition cost from attribution sits in the same warehouse as store proceeds.

How do you connect tools to Metabase?

Metabase reads SQL databases and warehouses, or CSVs loaded with the CLI. So the work is getting the store report files somewhere Metabase can query.

  1. Scheduled exports — Apple's four-hop asynchronous Analytics Reports flow (request, wait one to two days, list instances, download gzipped tab-delimited segments), and a gcloud storage copy of Play's monthly stats/ and earnings/ CSVs. Poll Apple on a schedule: an unpolled request is marked stopped due to inactivity and the gap cannot be backfilled.
  2. Connectors — Fivetran has official connectors for both stores, with fivetran/dbt_apple_store, fivetran/dbt_google_play, and the combined fivetran/dbt_app_reporting package for cross-store models. Airbyte's App Store source was deprecated in 2024 and it has no official Play source.
  3. CLI for a first pass — download a month of files and run mb upload csv to see whether the dashboard earns a pipeline. Not a standing solution: both stores restate recent data, and Play rewrites the current month's file every day.

There is no useful MCP route on either store — neither vendor ships a server, and Play's community servers cannot see the bulk reports where installs and revenue live. The app stores category walks through both export paths in detail.

Which dashboards should you build first?

  • App store performance — conversion, installs, and proceeds by store and country. Needs only app_store_daily_metrics, so it ships on day one.
  • Subscription analytics — starts, renewals, cancellations, and trial-to-paid by product.
  • Product retention — what happens after the install, built on your own event data rather than store reports.
  • MRR and churn & retention — the subscription business view, once cross-store subscriptions are normalized.

Common mistakes

Putting both stores on one chart without a stated definition.→ Apple counts first-time downloads per account; Play offers device installs, user installs, install events, and active device installs. Name the pair you chose in the column names and caveat the card.
Treating Apple's revenue numbers as one source.→ Analytics Reports and Sales & Trends / Finance reports are separate pipelines with genuinely different figures. Use each for its job and label every revenue card with where it came from.
Waiting on an API that will never return Play revenue.→ The Play Developer Reporting API covers vitals only — crash rate, ANR rate, slow starts. Installs, store conversion, and earnings are monthly CSVs in a Cloud Storage bucket. No single API returns Play revenue.
Building the pipeline and then not watching it.→ Apple stops generating reports for a request that stops being polled, and marks it stopped due to inactivity — leaving a gap you cannot backfill. Alert on a missing day, and keep the one-time snapshot from setup as a history anchor.
Selling a user-level funnel you cannot deliver.→ Store reports are aggregated counts with no join key. The store data ends at the install; in-app behavior has to come from your own analytics, and saying so up front is cheaper than explaining it later.
Reporting installs without cost or retention beside them.→ Install counts flatter every channel. Join attribution cost and post-install retention in the warehouse — that join is the entire reason to build this outside the consoles.

Integrations

Analytics

Dashboards

FAQ

What is mobile app analytics?
Mobile app analytics is the reporting layer over an app's whole lifecycle: impressions and store listing views, installs, in-app behavior, subscriptions, revenue after platform fees, and crash and rating quality. The awkward part is that no single system holds it. Apple and Google each report their own store in their own shapes and their own vocabulary, and neither console will ever show you both — so a unified install-to-proceeds view across stores exists only if you build it. In Metabase you build it on a SQL warehouse holding both stores' report files, with attribution and in-app behavior joined alongside.
Why not just use the App Store and Play consoles?
Because each console is a wall around one store, and the questions that matter cross it. Neither will show you blended install-to-proceeds across iOS and Android, and neither can join store data to ad spend or in-app behavior — that join simply doesn't exist inside a store console. Once both stores' reports are in a warehouse, cross-store comparison is a GROUP BY store, and cost per install or proceeds per active user is a join away.
Where does store data stop being useful?
At the install. Both stores publish aggregated reports — counts by date, country, device, and source — with no identifier to join on, so there is no user-level funnel from store data and no way to follow a download into the app. Everything after the install comes from your own analytics: Amplitude or your event tables for in-app behavior, AppsFlyer for which campaign produced the install, and RevenueCat for cross-store subscription revenue as one subscriber model rather than two report formats.
How do I get App Store and Google Play data into a warehouse?
Two different jobs. Apple's Analytics Reports API is asynchronous: POST a report request, wait one to two days for the first generation, list instances by granularity, then download gzipped tab-delimited segments — and a request that stops being polled is marked stopped due to inactivity, leaving a gap that cannot be backfilled. Google Play publishes monthly CSVs into a Cloud Storage bucket that you copy with gcloud storage. Fivetran has official connectors for both if you would rather not own the plumbing.
Do Apple or Google offer MCP servers for this data?
No, neither ships an official MCP server (verified July 2026). For Apple, the most-cited community server is archived with no release since September 2025; maintained community alternatives exist and do cover the Analytics Reports flow, but they are unaffiliated and one npm name collides with an unrelated repo. For Play, community servers wrap the Play Developer API and cannot reach the bulk statistics or earnings reports at all, so they cannot answer install or revenue questions regardless. Scheduled exports into a warehouse are the route that actually works.
Why don't my iOS and Android install numbers line up?
Usually because they are counting different things. Apple counts first-time downloads per account; Google Play reports several install counts — daily_device_installs, daily_user_installs, install_events, active_device_installs — that measure genuinely different events. Choose the closest pair, name both columns explicitly in the model, and caveat the card. The same discipline applies to conversion: Apple measures product page views to downloads, Play measures store listing visitors to acquisitions. Define app store conversion rate once per store and say which is which.
Which dashboards should a mobile team build first?
Start with app store performance — conversion, installs, and proceeds by store and country, which only needs app_store_daily_metrics. Add subscription analytics once subscription rows are modeled, then product retention from your own event data, and MRR and churn & retention as the subscription business grows up.