Matrix Report
A Matrix Report in Salesforce is a report format that groups and summarizes records by both rows and columns at the same time.
Definition
A Matrix Report in Salesforce is a report format that groups and summarizes records by both rows and columns at the same time. The result is a cross-tab grid: each cell holds an aggregated value (sum, count, average, min, or max) for the records that fall under one row group and one column group together. The classic example is revenue by region by quarter, with regions down the side, quarters across the top, and total Opportunity amount in every cell.
Salesforce offers four report formats: tabular, summary, matrix, and joined. Matrix is the one to reach for when a question has two dimensions instead of one. Summary reports group by rows only, so they answer single-dimension questions. Matrix adds the column axis, which lets you compare related totals side by side and spot patterns that a flat list or a single grouping would bury.
How matrix reports cross-tab your data
Where matrix sits among the four formats
Salesforce reports come in four formats, and each fits a different shape of question. Tabular is a flat list of records, much like a spreadsheet, and it is best for a simple export or a single grand total. Summary groups rows under one or more headings and shows subtotals, which makes it the everyday workhorse for grouped data. Matrix groups by rows and by columns at once, producing a true cross-tab grid. Joined places several report blocks beside each other so you can compare different report types in one view. The official guidance is to pick a format complex enough to capture the data you want, but simple enough to read. Matrix earns its keep only when both axes carry meaning. If you have one grouping dimension, a summary report is easier to build and easier to scan. Reach for matrix when the question itself is two-dimensional, such as cases by priority and by owner, or pipeline by stage and by product family. The format you choose also shapes which charts and dashboard components are available later.
Row groupings and column groupings
A matrix report needs at least one row grouping and one column grouping. The row groupings run down the left side; the column groupings run across the top. Each axis accepts up to two levels of nesting, so you can put region and then sub-region on rows while year and then quarter sit on columns. That gives a grid that reads like a financial table. One rule trips people up: the same field cannot be used for both a row grouping and a column grouping in the same report. If you try, Salesforce blocks it, because a field cross-tabbed against itself produces no useful intersection. A matrix report that loses one of its axes does not stay a matrix. Drop the only column grouping and the report falls back to a summary report automatically. By contrast, summary and joined reports allow up to three grouping levels on rows, since they do not split a budget across two axes. Plan your nesting before you build, because the order of groups controls how subtotals roll up.
Aggregating the cell values
The number in each matrix cell is not a raw record. It is an aggregate computed over every record that matches both the row group and the column group for that cell. Salesforce supports the standard summary functions: sum, count (record count), average, maximum, and minimum. You choose which numeric field to summarize and which function to apply, then the grid fills itself in. The most common pattern on a sales org is sum of Amount on the Opportunity object, which turns the grid into total revenue per intersection. Count is handy for volume questions, such as how many cases each team closed each month. Average suits things like deal size or handle time, where a total would mislead. You can summarize more than one field at once, and each summarized field gets its own value inside every cell. Custom summary formulas let you build derived metrics, such as win rate or margin percent, that reference the subtotals at row, column, or grand-total level. Those formulas are evaluated per cell, which is what makes matrix reports strong for ratio analysis.
Subtotals, grand totals, and hiding detail rows
Every matrix report carries subtotals for free. The right edge shows a subtotal for each row group, the bottom edge shows a subtotal for each column group, and the bottom-right corner holds the grand total. A row subtotal is the regional total, a column subtotal is the quarterly total, and the grand total is the everything number. That structure is exactly why matrix reports feed executive dashboards so well. Salesforce documentation recommends hiding the underlying detail rows when you view a matrix report. With details shown, the grid is buried under raw records and the cross-tab is hard to read. Turn off Detail Rows (the toggle sits at the bottom of the report preview) and you are left with a clean grid of totals. Most people build a matrix, hide details, and read only the summarized grid. You can still drill into any cell to see the records behind a number when you need the detail. Subtotals also respect your grouping order, so moving a group up or down on an axis changes how the rollups nest.
Date grouping turns dates into time buckets
Matrix reports shine when one axis is time, and Salesforce makes date grouping easy. When you group on a date field, open the group menu and choose Group Dates By, then pick a bucket: day, week, month, quarter, fiscal quarter, year, and so on. A Close Date field grouped by quarter gives you the quarterly columns that the revenue-by-region-by-quarter pattern depends on. You are not stuck with calendar periods either. If your org defines a fiscal year, the fiscal options follow your fiscal calendar, so Q1 starts where your finance team says it does. Combining a date bucket on columns with a category on rows is the single most common matrix layout in practice. Product family by month, owner by week, lead source by quarter: all of them follow the same recipe. The date bucket also controls the chart. A matrix grouped by month produces twelve columns, which a stacked bar or line chart can render cleanly. Choosing a coarser bucket, such as quarter, keeps the grid readable when the date range is wide.
Charts, color, and reading the grid
A raw matrix grid is dense, so the visualization matters as much as the data. Matrix reports support several chart types that map naturally onto two dimensions. A stacked bar groups on one axis and stacks the segments by the other, which is good for part-to-whole comparisons across categories. Grouped (side-by-side) bars compare cells directly. Line charts work well when the column axis is time. Heat-style coloring shades each value by magnitude so outliers jump out without you reading a single number. Salesforce also offers conditional highlighting on matrix grids: pick a measure, set low and high thresholds, and cells shift color from red through yellow to green based on where the value lands. That makes the grid scannable for performance dashboards, capacity views, and any cross-tab where the question is really where are the problems. The guidance is consistent across the docs: build the grid for accuracy, then add a chart or color so a reader gets the pattern in a glance. A well-chosen chart on a matrix often communicates more than the grid it sits on.
Performance and when to pre-compute instead
Matrix reports aggregate at run time. Every time the report runs, Salesforce scans the matching records and recomputes each cell, each subtotal, and the grand total. On modest data that is instant. On objects with millions of rows, the aggregation can get slow, and very large reports can hit row limits or time out. The fix is to filter aggressively so the report only touches the data that matters. Scope by date range, by record type, by owner, or by stage before you worry about layout. Standard report filters, plus filter logic and cross filters, keep the working set small. When a cross-tab needs to run against truly large volumes, or you want a trend captured over time, move off run-time reporting. Reporting Snapshots write report results into a custom object on a schedule, so you build trend reports on pre-computed rows instead of recalculating history every run. For heavy, interactive analysis across big datasets, CRM Analytics ingests data into optimized datasets that handle scale far better than a standard matrix report. Match the tool to the volume.
Build a matrix report in the Lightning report builder
A matrix report is built, not installed. You create a report on the right report type, then add one grouping to rows and one to columns in the Lightning report builder Outline panel. These steps assume edit access to reports and a report type that exposes the fields you want to cross-tab.
- Create the report
From the Reports tab, click New Report and choose a report type that includes both fields you plan to cross-tab and the numeric field you want to summarize, such as Opportunities. Click Start Report to open the Lightning report builder.
- Add a row grouping
Open the Outline panel. Under Group Rows, use the Add group picklist to pick the field for your row axis (for example, a region or owner field). The report becomes a summary report at this point.
- Add a column grouping
Under Group Columns, use the Add group picklist to pick a different field for the column axis (for example, Close Date). The report switches to matrix format as soon as it has at least one row and one column grouping.
- Bucket dates and set the measure
If the column field is a date, open its group menu, choose Group Dates By, and select quarter or month. Then add a summarized field (such as Sum of Amount) so each cell shows an aggregate instead of being empty.
- Hide details and save
Turn off Detail Rows so only the summarized grid shows. Add a chart if you want a visual, then click Save, name the report, choose a folder, and run it.
The Outline picklist that sets the left-side axis. Accepts up to two nested levels.
The Outline picklist that sets the top axis and turns a summary report into a matrix. Accepts up to two nested levels.
Date-field option that buckets values into day, week, month, quarter, fiscal quarter, or year.
Choose the numeric field and function (sum, count, average, max, min) shown in each cell.
Preview toggle that hides the underlying records so the cross-tab grid reads cleanly.
- You cannot use the same field for a row grouping and a column grouping in one matrix report.
- Removing the last column grouping silently converts the report back to a summary report.
- Each axis is capped at two grouping levels; summary and joined reports allow up to three on rows.
- Run-time aggregation over millions of rows can be slow or hit limits; filter hard or switch to Reporting Snapshots or CRM Analytics.
Trust & references
Cross-checked against the following references.
- Report Formats in Salesforce ClassicSalesforce
- Group Your Report DataSalesforce
Straight from the source - Salesforce's reference material on Matrix Report.
- Report Formats in Salesforce ClassicSalesforce
- Group Your Report DataSalesforce
Hands-on resources to go deeper on Matrix Report.
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What is a Matrix Report?
Q2. When are Matrix Reports the right choice?
Q3. What are the four report formats?
Discussion
Loading discussion…