What a sales dashboard in Power BI actually is
A sales dashboard is a screen that tells you, at a glance, whether the business is on track. It usually answers three things: how much has been sold against target, what is in the pipeline for the coming months, and where deals are being lost.
Power BI has a naming quirk. What the tool calls a dashboard is a single page in the service where you pin visuals taken from one or more reports. What almost everyone calls a "Power BI sales dashboard" is really a report: one or more pages with filters, built on a data model. This guide is about that, because it is what is almost always needed.
Whether a sales dashboard works is decided underneath the screen: a tidy data model and well-defined measures. So this guide starts there and leaves the charts for the end.
How to build a sales dashboard in Power BI, step by step
- 1List the decisionsWhat the sales director decides every week, what each rep decides every day and what leadership decides every month. Every visual has to serve one of those decisions.
- 2Pick the sourcesThe CRM for opportunities and accounts, the ERP for orders and invoices, a sheet or table for targets. If there are several, it pays to land them in a data warehouse first and have Power BI read from there.
- 3Build a star schemaFact tables (orders, opportunities) in the middle and dimension tables (accounts, reps, products, calendar) around them, with one-to-many relationships.
- 4Add a date tableOne row per day, no gaps, marked as a date table. Without it, year-on-year comparisons break or return odd numbers.
- 5Write the DAX measuresRevenue, target, pipeline, win rate. Defined once in the model and reused by every page.
- 6Design few pagesOne per decision: leadership summary, pipeline, rep detail. At the top of each, the question it answers.
- 7Publish with permissionsRow-level security so each rep sees their own numbers, scheduled refresh and a Power BI app to distribute it.
The star schema, with a sales example
A star schema separates what happens (facts) from what describes it (dimensions). In a typical sales dashboard it looks like this:
- Orders: one row per order line, with date, account, rep, product and amount.
- Opportunities: one row per CRM opportunity, with created date, expected close date, stage, status, probability and amount.
- Targets: one row per rep and month, with the amount they have to sell.
- Accounts, Reps, Products and Calendar: the dimensions, one row per item.
Relationships run from dimension to fact, one-to-many, filtering in a single direction. When someone filters by region on the reps table, the filter flows to orders, opportunities and targets at once, and the three figures agree with each other.
The most common mistake is the opposite: one huge table exported from the CRM with everything mixed in. It works for a few months, and then every new measure is a patch.
The date table
DAX time intelligence functions —previous year, year to date, same period— need a continuous date table: every day, none skipped, from the first date in your data to the last. A simple way to create one is a calculated table:
Calendar = CALENDAR(DATE(2024, 1, 1), DATE(2026, 12, 31))
Then you add year, month and quarter columns, mark it as a date table (in Power BI Desktop, "Mark as date table") and relate it to the date in each fact table. If targets are monthly, relate them on the first day of each month.
DAX measures for a sales dashboard
Dashboard figures belong in measures, not calculated columns: a measure is evaluated against whatever filters are active (rep, month, region), while a calculated column is fixed row by row. These five cover almost any sales dashboard. They use the tables from the example above.
Revenue
Revenue = SUM(Orders[Amount])
Revenue last year
Revenue LY = CALCULATE([Revenue], SAMEPERIODLASTYEAR(Calendar[Date]))
It works with any date filter: if you are looking at March this year, it returns March last year.
Attainment
% of target = DIVIDE([Revenue], SUM(Targets[Amount]))
DIVIDE avoids an error when a rep has no target that month: it returns blank instead of dividing by zero.
Weighted pipeline
Weighted pipeline = CALCULATE(SUMX(Opportunities, Opportunities[Amount] * Opportunities[Probability]), Opportunities[Status] = "Open")
It adds up the amount of each open opportunity multiplied by its probability. Probability has to be stored as a number between 0 and 1.
Win rate
Win rate = DIVIDE(CALCULATE(COUNTROWS(Opportunities), Opportunities[Status] = "Won"), CALCULATE(COUNTROWS(Opportunities), Opportunities[Status] IN {"Won", "Lost"}))
It counts only decided opportunities. If open ones go into the denominator, the rate drops every time the team opens new deals.
For the full list of sales KPIs with their formulas, see sales dashboard KPIs.
Five sales dashboard examples in Power BI
These are typical examples: what each dashboard usually contains depending on who uses it. They are not client case studies or screenshots of real projects.
1. Sales leadership dashboard
For the sales director's weekly meeting. At the top, four figures: revenue this month against target, revenue year to date against last year, weighted pipeline for the quarter and win rate. Below, the monthly trend of revenue against target and a table by team or region with the same figures. No activity metrics: those go in another report.
2. Pipeline and forecast
To know whether the quarter will land before it ends. Pipeline by stage, pipeline by expected close month, pipeline coverage against what is left of the target, and each rep's forecast compared with the weighted one. A separate page lists the deals that have been stuck in the same stage the longest.
3. Rep dashboard
What each rep opens on Monday. Their revenue against their target, their open opportunities sorted by expected close date, the ones nobody has touched for weeks and their accounts that are buying less. With row-level security, one report serves the whole team and each person sees only their own.
4. CRM sales dashboard: from marketing to sales
So marketing and sales look at the same funnel. Leads by channel, lead-to-opportunity conversion, won deals by source channel, spend by channel and cost per customer. It requires the CRM to store where each lead came from; otherwise the funnel stops halfway. For the cost side, see how to calculate true CAC.
5. Balanced scorecard
The balanced scorecard was proposed by Robert Kaplan and David Norton in 1992, in the Harvard Business Review. It groups indicators into four perspectives, which for a B2B sales team could look like this:
- Financial: revenue, gross margin and customer acquisition cost.
- Customer: retention, revenue from key accounts and satisfaction.
- Internal processes: sales cycle, stage conversion and lead response time.
- Learning and growth: months a new rep takes to reach target, training and real CRM usage.
In Power BI it works well as one page per perspective plus a summary page with one indicator and its target for each.
Sales dashboard best practices
Sales dashboard FAQ
How long does it take to build a sales dashboard in Power BI?
It depends mostly on the state of the data. With one clean source it is a matter of days; if CRM, ERP and campaigns have to be joined, the long part is the data, not the charts.
Is there a sales dashboard template I can download?
We do not offer downloadable templates: a report built for someone else's data model rarely fits yours. On the call we tell you what yours should include and can build it on your data.
What is the difference between a report and a dashboard in Power BI?
A report has one or more pages with filters on a model. A dashboard is a single page in the service where you pin visuals from one or more reports.
Do I need Power BI Pro to share the dashboard?
To publish and share with others, generally yes, unless the content sits in a Premium or Fabric F64 or larger capacity. Who needs which licence depends on where it is published.
Want your sales dashboard in Power BI?
Tell us what your sales team has to decide and where the data lives. In a 30-minute call we will tell you how we would build it and where to start.
Book the 30-minute call