Salesforce Reports: Complete Guide

Quick Summary:

Reports are how you turn raw Salesforce data into something readable — grouped, filtered, and summarized. Understanding the four report types is the foundation everything else (dashboards, exports, scheduled delivery) builds on.

What Is a Salesforce Report?

A report queries your org's data based on a report type (which defines what objects and fields are available), then lets you filter, group, and summarize the results. Reports are the single most common way non-technical users interact with Salesforce data without needing to understand the underlying database structure.

The Four Report Formats

Report TypeBest ForGrouping
TabularSimple lists, mailing lists, exportsNone
SummaryGrouped totals (e.g. Opportunities by Stage)Rows only
MatrixCross-tabulated data (e.g. Sales by Rep by Month)Rows and columns
JoinedCombining unrelated report types in one viewVaries by block

How to Build One

  1. Go to the Reports tab and click New Report.

  2. Select a report type — this determines which objects and fields you can use.

  3. Add filters to narrow the data (date ranges, field values, cross filters).

  4. Add groupings for Summary or Matrix format, and choose which columns display.

  5. Add summary formulas or bucket fields if you need calculated or categorized values.

  6. Save to an appropriately-permissioned folder, and optionally schedule recurring delivery.

🚫 Common Mistake

Using Tabular format for data that actually needs grouping. Tabular reports can't be used as dashboard chart sources for grouped visualizations — if you're planning to build a chart from this report later, Summary or Matrix format is almost always the right starting choice.

💡 Pro Tip

Use cross filters to answer "which records don't have related records" questions — accounts with no recent activity, opportunities with no contact roles — a genuinely common reporting need that basic filters can't express on their own.

Frequently Asked Questions

What are the four report format types?

Tabular (simple list), Summary (grouped with subtotals), Matrix (grouped by both rows and columns), and Joined (combining multiple report types in one view).

Can I schedule a report to run automatically?

Yes, reports can be scheduled to run on a recurring basis and emailed to specified recipients, either as the report itself or a snapshot.

What\'s a cross filter?

A cross filter lets you filter records based on whether related records exist or don't exist — for example, Accounts with no Opportunities in the last 90 days.

Can I add a formula field directly within a report?

Yes, using a report-only formula field (row-level or summary formula), which exists only within that specific report without needing a permanent object field.

What\'s the difference between a bucket field and a formula field in reports?

A bucket field groups existing values into custom categories (e.g. grouping deal sizes into Small/Medium/Large) without any calculation; a formula field performs actual calculations on the data.

How do I remove duplicate rows from a report?

Salesforce doesn't have a native one-click deduplication for report rows — this usually means addressing duplicates at the data level (via Duplicate Rules) rather than the report level.

Can reports be exported to Excel or CSV?

Yes, reports can be exported directly, and Salesforce also supports connecting reports to Excel via Salesforce Connect for a live, refreshable link.

What\'s the maximum number of records a report can return?

Standard reports can display up to 2,000 rows in the browser view, though the underlying data processed can be larger — for bulk exports beyond this, use the Export option or a reporting API.

Can I control who can access a specific report?

Yes, through report folder permissions — access is managed at the folder level, so organizing reports into appropriately-permissioned folders is the primary access control mechanism.

Why is my report showing fewer records than I expect?

Most commonly caused by filter logic (check for an unintended AND where OR was needed), or the running user's own record-level access not including records visible to you.