Salesforce Reports Tutorial: From Basic to Advanced
Most Salesforce users know how to run a report. Fewer know how to build one that actually answers the question they're asking. This guide covers the four report types, how to use them, and the 6 reports every sales team should have built.
Estimated read time: 12 minutes
The four report types
| Type | Structure | Best for |
|---|---|---|
| Tabular | Flat list of rows | Exports, simple lists |
| Summary | Grouped rows with subtotals | Pipeline by stage, revenue by rep |
| Matrix | Rows and columns (pivot) | Win rate by quarter and rep |
| Joined | Multiple report blocks | Side-by-side comparisons |
Start with Summary reports — they cover most business questions.
Building a Summary report: Pipeline by Stage
- App Launcher → Reports → New Report
- Object: Opportunities → Start Report
- In the report builder:
- Filters: Add "Close Date = This Quarter" and "Stage Not Equal To Closed Won, Closed Lost"
- Group Rows: Drag "Stage" to the Group Rows area
- Columns: Add Name, Account Name, Amount, Close Date, Owner
- Summarize: Click Amount column → check "Sum"
- Save → name it "Open Pipeline by Stage - This Quarter"
- Run
You now have a report grouped by stage, with total pipeline per stage.
Adding a formula column
Formula columns let you calculate values per row. Example: Days Until Close.
Report builder → Add Column → Add Summary Formula:
CloseDate - TODAY()
Format as Number (0 decimal places). Label: "Days to Close."
Now every row shows how many days until the close date.
Filters: the most important skill
Filters determine what data appears. Three filter types:
- Standard Filters: Date range, owner, record type — quick selects
- Field Filters: Any field, any operator (equals, contains, greater than, etc.)
- Filter Logic: Combine filters with AND/OR/NOT
Example filter logic: Show opportunities where (Stage = Proposal OR Stage = Negotiation) AND Amount > 50000:
1 AND 2
Where Filter 1 = Stage equals Proposal, Negotiation And Filter 2 = Amount greater than 50000.
Building a Matrix report: Win Rate by Quarter and Rep
- New Report → Opportunities → Start Report
- Report Type: Matrix
- Group Rows: Owner Name
- Group Columns: Close Quarter (derived from Close Date)
- Columns: Count of Opportunities, Sum of Amount
- Filters: Stage = Closed Won, Closed Lost
- Add Summary Formula: Win Rate =
CLOSED_WON_COUNT / TOTAL_COUNT(requires custom formula)
Matrix reports are powerful for cross-dimensional analysis but require more setup.
The 6 reports every sales team needs
1. Open Pipeline by Stage (Summary)
- Object: Opportunities
- Filter: Stage not in [Closed Won, Closed Lost], Close Date = This Quarter
- Group: Stage
- Summary: Sum of Amount
2. Pipeline by Owner (Summary)
- Same as above, Group by Owner instead of Stage
- Shows each rep's pipeline
3. Stale Opportunities (Tabular)
- Filter: Stage not in [Closed Won, Closed Lost], Last Activity Date < 14 days ago
- Columns: Name, Account, Stage, Amount, Close Date, Owner, Last Activity Date
- Sort: Last Activity Date ascending
4. Closed Won This Month (Summary)
- Filter: Stage = Closed Won, Close Date = This Month
- Group: Owner
- Summary: Sum of Amount, Count
5. Win/Loss by Quarter (Matrix)
- Group Rows: Owner
- Group Columns: Close Quarter
- Columns: Count, Sum of Amount
- Filter: Stage in [Closed Won, Closed Lost]
6. Overdue Opportunities (Tabular)
- Filter: Stage not in [Closed Won, Closed Lost], Close Date < TODAY()
- Sort: Close Date ascending
- Columns: Name, Account, Stage, Amount, Close Date, Owner
Scheduling reports
Reports can be emailed on a schedule:
- Run the report → Subscribe
- Set frequency (daily, weekly, monthly)
- Set time and recipients
- Set conditions (only email if record count > 0)
Use this for the Stale Opportunities and Overdue Opportunities reports — send weekly to managers.
Common mistakes
1. Reports that run as the wrong user Reports show data based on the running user's access. If a manager runs a report, they see their team's data. If it's scheduled to run as a junior rep, they see only their own. Check "Run As" settings.
2. No date filter A report without a date filter returns all historical records. Always add a date range unless you explicitly want all-time data.
3. Summary formulas that divide by zero
AMOUNT / COUNT fails when COUNT is 0. Use IF(COUNT > 0, AMOUNT / COUNT, 0).
4. Too many columns Reports with 20+ columns are unreadable. Build focused reports for specific questions.
Want reports built for you?
A complete reporting layer — 10 production-ready reports with correct filters, formulas, and scheduled subscriptions — takes a senior admin 2-4 weeks.
RevKit's Reporting Refresh delivers it in 48 hours for $799:
- Audit of existing reports (we delete what nobody uses)
- 10 production-ready reports tailored to your team
- Conditional formatting and summary formulas
- Scheduled subscriptions to the right people
- Documentation for your team
