How to build a SaaS revenue dashboard: metrics, data sources, and structure
Max Musing
Max Musing Founder and CEO of Basedash · May 10, 2026
Max Musing
Max Musing Founder and CEO of Basedash · May 10, 2026
A good SaaS revenue dashboard answers three questions in under thirty seconds: how much recurring revenue do we have, how fast is it changing, and where is the change coming from. Anything else is supporting detail.
This guide walks through how to build that dashboard from scratch — which metrics to include, where the underlying data comes from, how to lay it out, and the mistakes that quietly make most revenue dashboards untrustworthy. It is aimed at founders, finance leads, and operators at SaaS companies between roughly $50K and $50M in ARR who want a single source of truth for revenue without buying a heavyweight finance platform.
A revenue dashboard has a narrower job than people often assume. It is not a finance close tool, a forecasting model, or a customer success workbench. Its job is to give the leadership team and operators an accurate, current view of recurring revenue and the levers that move it.
In practice, that means three layers:
If your dashboard answers those three things clearly, it is doing its job. Adding pipeline coverage, support tickets, NPS, or product usage tends to dilute it. Those belong on adjacent dashboards.
Pick a small core set and resist the temptation to add more. The following metrics cover most SaaS businesses and map directly to investor and board reporting.
MRR (monthly recurring revenue) and ARR (annual recurring revenue) are the same number expressed at different cadences. ARR is just MRR multiplied by twelve.
The non-trivial part is defining what counts. A clean definition includes only normalized recurring subscription revenue from active paying customers — typically excluding:
Pick the definition once, write it down, and apply it consistently. The most common reason a revenue dashboard loses trust is that two views of MRR don’t reconcile because someone counted a pilot or a one-time fee in one place but not another.
Net new ARR for a period is the most useful single number for understanding momentum. It breaks down into four components — the “growth waterfall”:
Net new ARR = New + Expansion − Contraction − Churned. This single chart, shown as a stacked bar over time, is often the most-referenced visual on a SaaS revenue dashboard because it explains why ARR is moving.
Gross revenue retention (GRR) measures what percentage of starting ARR you retained from existing customers, ignoring expansion. Net revenue retention (NRR) measures the same thing but counts expansion.
Both should be calculated on a trailing-twelve-month basis to smooth out monthly noise. NRR above 110% is generally considered strong for B2B SaaS; below 90% is a warning sign.
Logo growth complements ARR growth. Track:
ARPA is useful because the same ARR growth can come from many small customers or a few large ones, and the implications for sales motion, support cost, and concentration risk are very different.
Depending on your business, also consider:
For most teams, CAC, LTV, and unit economics belong on a separate growth or finance dashboard rather than on the revenue dashboard itself. Mixing them in dilutes the revenue narrative.
This is the part most teams underestimate. A SaaS revenue dashboard typically pulls from three or four systems, and reconciling them is where most of the work lives.
For most SaaS companies, the billing system — Stripe, Chargebee, Recurly, Maxio, Paddle — is the system of record for what was actually charged. It is the cleanest source for cash collected and for recurring charges, but it is not automatically a clean source for MRR.
Stripe in particular requires care. A few specific gotchas:
plan.amount is not always equal to its effective monthly revenue. Annual plans, custom prices, and quantity-based pricing all complicate the math.Stripe’s own revenue recognition reports help, as do tools like ChartMogul, Maxio, or Mosaic that specialize in SaaS metrics out of Stripe data. If you are doing it yourself, the cleanest pattern is to compute MRR from a subscription snapshot table rather than from Stripe events.
Your app database tells you which accounts are active, what plan they are on, when they signed up, and any internal flags (paying / trial / churned / paused). This is essential for segment analysis — revenue by plan, by signup cohort, by region, by self-serve vs. sales-led, etc.
The dashboard usually needs to join billing data with application data on a customer or workspace identifier. This join is where definitions matter most — does “customer” mean a Stripe customer, a workspace, an organization, or a user?
If you have a sales team, the CRM (Salesforce, HubSpot, Attio) is where new ARR, expansion, and downgrades get attributed to deals, segments, and reps. Pull from the CRM if you want revenue by segment, by industry, or by sales rep. Skip it if you are pure self-serve.
For anything beyond a few thousand customers, the practical pattern is to centralize Stripe, your app database, and your CRM in a warehouse — Snowflake, BigQuery, Redshift, ClickHouse, or Postgres — using an ELT tool like Fivetran, Airbyte, or Stitch, then build the dashboard on top of clean modeled tables.
For smaller teams, you can build a credible revenue dashboard directly on Postgres with a few well-designed views and a BI tool that connects natively to your database. The warehouse is not strictly required until your data volume or query complexity demands it.
The structure below works for most B2B SaaS companies and matches how leadership teams actually scan the data.
The first thing visible — large KPI cards, no scrolling required.
If someone has thirty seconds, this section should be sufficient for them to know whether things are on track.
A single line chart of ARR (or MRR) over the past 12–24 months, with a clear marker for the current period. Include a comparison line to plan if you have one.
This is the chart investors and the board will look at first. Keep it clean, don’t add a second axis, and don’t try to overlay every metric onto it.
A stacked bar chart by month showing new business, expansion, contraction, and churn. This is the most analytically dense chart on the dashboard — most “why is ARR slowing?” conversations get answered here.
Pair it with the same data shown as a small table for the most recent period, with absolute numbers and percentages.
NRR and GRR by trailing twelve months, plotted over time. Optionally a cohort retention table — starting cohorts as rows, months since signup as columns, with retained ARR as the value. Cohort tables are dense; only include one if your audience knows how to read it.
The “why” charts. Choose two or three breakdowns that match how your business actually segments revenue:
If you have more than four segmentation views, consider splitting them into a separate “revenue segments” dashboard. The main revenue dashboard should stay tight.
Often overlooked, but very useful: a small table at the bottom listing recent material customer events — new deals over $X, expansions over $Y, churns over $Z. This grounds the abstract numbers in specific accounts and is the part the CEO will read most carefully.
Most revenue dashboards do not need to be real-time. Daily is plenty for nearly every SaaS team. The exceptions:
A standard pattern is a daily refresh at 6 AM in the company’s primary time zone, so the dashboard is fresh before the morning standup. Pair this with an automated alert that flags large day-over-day changes in MRR or churn so people don’t have to manually scan for surprises.
The technical setup is usually not the hard part. The hard part is keeping the numbers trustworthy over time.
Inconsistent MRR definition. The dashboard says one number, the board deck says another, the investor update says a third. Pick one definition, document it, and rebuild any view that disagrees. A revenue dashboard whose numbers don’t match the board deck is worse than no dashboard.
Counting one-time revenue as MRR. Setup fees, professional services, and one-time charges sneak into MRR through Stripe metadata or product mappings. Audit the source data quarterly. Anything that is not contractually recurring should be excluded.
Mixing booked and recognized revenue. Bookings (signed contracts) and recognized revenue (delivered) are different numbers and should not be summed together on the same chart. If you show both, label them clearly.
Treating annual prepayments incorrectly. A customer who pays $12,000 for an annual plan is $1,000 of MRR, not $12,000. This sounds obvious but is one of the most common errors in homegrown dashboards built directly off Stripe charges.
Churn timing ambiguity. Decide whether churn is recognized when the customer cancels, when their access ends, or when their last paid period ends. All three are defensible, but only one should be used. Document it.
Not handling currency. If you have customers in multiple currencies, decide whether ARR is reported in USD using the period-end FX rate, the period-average rate, or contract-locked rates. Inconsistency here will quietly make trends look wrong.
Dashboards without owners. A revenue dashboard without an owner becomes inaccurate within a quarter. Pricing changes, plan renames, and new product launches all change the source data. Assign ownership — usually finance or revenue ops — and review it monthly.
There are three reasonable paths, depending on team size and complexity:
Path 1: Specialist SaaS metrics tools. ChartMogul, Maxio, Baremetrics, and similar tools plug directly into Stripe and produce a usable revenue dashboard within a day. They are the fastest route for teams that do not have a data team and run primarily on Stripe. The tradeoff is limited customization — they enforce their own definitions of MRR and segments, which may or may not match how you want to report.
Path 2: A general BI tool on top of your own data. Tools like Basedash, Metabase, Hex, Mode, or Looker Studio let you build a fully customized dashboard from your warehouse or production database. This is the right path if you want to control the definitions, segment by your own business logic, and combine billing data with product and CRM data. It requires more setup but produces a dashboard that genuinely matches how your team thinks about the business.
Path 3: A hybrid. Use a specialist tool for raw MRR plumbing and a BI tool for everything segment-, cohort-, and product-related. Common at companies between roughly $5M and $50M in ARR where finance owns the SaaS metrics tool and the data team owns the BI layer.
For teams already working in a database-connected BI tool, Basedash lets you describe the dashboard you want — “show me ARR by month with a stacked bar of new, expansion, contraction, and churn, broken down by plan” — and build it from your Stripe and application data without having to wire each chart manually. That works well when you want a customized revenue dashboard but don’t want to spend a week of analyst time on it.
Before publishing a SaaS revenue dashboard internally, verify:
A revenue dashboard built this way is not glamorous — most of the work is in the definitions, not the visualizations — but it is the one dashboard the leadership team will actually open every morning, and the one investors will ask to see during diligence. Getting it right is worth the time.
For teams thinking through how this dashboard fits into a broader BI setup, the principles in how to build dashboards that drive decisions apply directly: start with the decisions the leadership team needs to make, keep the metric set small, and design for the audience scanning the dashboard rather than the analyst building it.
Written by
Founder and CEO of Basedash
Max Musing is the founder and CEO of Basedash, an AI-native business intelligence platform designed to help teams explore analytics and build dashboards without writing SQL. His work focuses on applying large language models to structured data systems, improving query reliability, and building governed analytics workflows for production environments.
Basedash lets you build charts, dashboards, and reports in seconds using all your data.