How to Build a Revenue Dashboard in Metabase
Revenue metrics are the vital signs of a SaaS business, but most teams either rely on their billing provider's limited dashboards or wait weeks for a data team to build custom reports. Metabase connects directly to your production or replica database and lets you build real-time revenue dashboards without writing SQL for every question, though SQL is available when you need it.
A good revenue dashboard answers three questions at a glance: how much are we making, is it growing, and where is it coming from. This guide walks through building a dashboard that covers MRR tracking, churn analysis, expansion revenue, and cohort-based metrics, giving your leadership team a single URL they can check daily instead of requesting ad-hoc reports.
Step-by-step guide
Connect Metabase to your database
In Metabase Admin > Databases, add a connection to your production database replica (never connect to your primary production database for analytics). Use a read-only database user with access limited to the tables needed for revenue analysis: subscriptions, invoices, payments, customers, and plan tiers. Set the sync schedule to run hourly so your dashboards stay current without overloading the database.
- Create a read-only database user for Metabase
- Connect to your replica database in Admin > Databases
- Verify Metabase can see your billing-related tables
Build the MRR calculation query
Create a new question using the SQL editor. Write a query that calculates Monthly Recurring Revenue by summing active subscription amounts at the end of each month. Account for annual subscriptions by dividing their amount by 12. Exclude trial subscriptions, paused accounts, and one-time charges. Save this as a reusable model named 'Monthly MRR' that other questions can reference.
- Write a SQL query that calculates MRR from your subscriptions table
- Handle annual-to-monthly conversion and exclude non-recurring items
- Save as a Metabase model for reuse across the dashboard
Create MRR movement breakdown
Build a query that decomposes MRR changes into four categories: New MRR (from first-time subscriptions), Expansion MRR (upgrades and seat additions), Contraction MRR (downgrades), and Churned MRR (cancellations). Display this as a stacked bar chart where green bars show new and expansion above the axis, and red bars show contraction and churn below. This instantly reveals whether growth is coming from new customers or expansion of existing ones.
Add customer churn and revenue churn metrics
Create two separate churn calculations. Logo churn counts the percentage of customers who canceled in a given month. Revenue churn sums the MRR lost from cancellations and downgrades as a percentage of starting MRR. Display both as line charts with a 3-month rolling average to smooth out monthly noise. Revenue churn often tells a different story than logo churn, especially if your largest customers are stable but small accounts churn frequently.
Build cohort retention tables
Create a SQL query that groups customers by their signup month and tracks what percentage of each cohort's initial MRR is retained in each subsequent month. Display this as a Metabase pivot table with signup month as rows and months-since-signup as columns. Color-code cells from green (high retention) to red (low retention). This visualization instantly reveals whether your product is getting better at retaining customers over time.
- Write a cohort query grouping by signup month
- Calculate MRR retention percentage for each cohort at each month
- Format as a pivot table with conditional coloring
Assemble the dashboard layout
Create a new Metabase dashboard and arrange your cards in a logical hierarchy. Top row: three number cards showing current MRR, month-over-month growth rate, and net revenue retention. Second row: MRR trend line chart and MRR movement bar chart side by side. Third row: logo churn and revenue churn trend lines. Bottom: cohort retention table. Add date filters at the top that apply to all cards so viewers can drill into specific time periods.
Set up alerts and subscriptions
Configure Metabase alerts on critical metrics. Set an alert if MRR month-over-month growth drops below zero. Set another if churn rate exceeds your target threshold. Create a dashboard subscription that emails a PDF snapshot to your leadership team every Monday morning. This ensures decision-makers see the numbers without having to remember to check the dashboard.
Common mistakes
Querying the primary production database
Running complex analytical queries against your primary database can degrade application performance. Always use a read replica for Metabase connections. If you do not have a replica, schedule heavy queries to run during off-peak hours and cache results aggressively in Metabase.
Not accounting for subscription billing cycles
If you calculate MRR by summing all active subscriptions, you will overcount annual subscriptions paid upfront and undercount subscriptions billed in arrears. Normalize all subscriptions to their monthly equivalent and use the subscription's active period, not payment dates, for timing.
Mixing one-time revenue with recurring revenue
Including setup fees, professional services, or one-time purchases in your MRR calculation inflates the number and hides the true recurring revenue trend. Create separate dashboard sections for one-time and recurring revenue, and never combine them in the headline MRR number.
Tips
Use Metabase's caching feature to set a 1-hour cache duration on complex revenue queries so the dashboard loads instantly while still staying reasonably current.
Create a 'Revenue Debug' dashboard with the raw queries and intermediate calculations visible, so when a number looks wrong, you can trace it back to the source data.
Add a 'Data Freshness' card to your dashboard showing the timestamp of the last database sync, so viewers know how current the numbers are.
Build a secondary dashboard focused on expansion revenue that breaks down MRR growth by upgrade type (plan change, seat addition, feature add-on) to identify your most effective growth lever.
How Vantage helps
Vantage helps PMs translate revenue insights into product action. When your Metabase dashboard reveals that a specific cohort churns faster or a feature upgrade drives expansion revenue, Vantage lets you capture that data as context, build a PRD around the opportunity, and generate the engineering tickets to ship the fix or feature.