Reports and dashboards are how Salesforce data becomes useful to the people who need to make decisions with it. Every stakeholder interaction with Salesforce data — the weekly pipeline review, the monthly performance dashboard, the team activity tracker — runs through this layer. Getting it right is core to what makes an org functional for its users.
This session covers the complete layer: Report Types, four report formats, filter types, formulas, bucket fields, dashboard components, Dynamic Dashboards, subscriptions, and the data visibility rules that govern all of it.
Report Types: the foundation
Every report is built on a Report Type. The Report Type determines which objects and fields are available in that report. Think of it as the schema layer: it defines what data can appear, and how related objects are joined.
Standard Report Types are provided by Salesforce and cover the primary objects: Accounts, Contacts, Opportunities, Cases, Leads, Activities, and their common relationships. Most reporting needs can be met with standard types.
Custom Report Types are created by admins when standard types don't include the relationships you need, or when you need to control the join behaviour precisely. You define:
- The primary object (the starting point of the report)
- Related objects in a chain (A → B → C, up to 4 levels)
- At each level: whether records must have the relationship (inner join) or may or may not have it (outer join)
- Which fields from each object are available in the report builder
Four report formats
| Format | Structure | Best for |
|---|---|---|
| Tabular | Simple rows and columns, no grouping | Lists: all contacts created this month, all open cases |
| Summary | Grouped by one or more row fields, with subtotals | Pipeline by stage, cases by priority, revenue by rep |
| Matrix | Grouped by rows AND columns, with cross-totals | Revenue by account by quarter, cases by type by month |
| Joined | Multiple report blocks (up to 5) from different types in one report | Side-by-side comparison of different object data |
The format choice has practical consequences. Tabular reports cannot be used as the source for most dashboard charts — they don't have groupings or summary fields for the chart to visualise. If you need to display data in a dashboard, use Summary or Matrix format.
Three types of filters
Standard filters appear on every report. Date Range filters the report by a date field (Close Date, Created Date, etc.) within a time period. Show filters scope by record ownership (My Records, My Team's Records, All Records).
Field-level filters are conditions applied to any field in the report. You add them in the Filters panel: Stage equals Closed Won, Amount greater than 10000, Account Type equals Partner. Multiple field-level filters use AND logic by default. Use Advanced Filter Logic to mix AND and OR conditions.
Cross-filters filter based on related objects. They are the most powerful filter type and the most underused:
- Accounts WITH open Opportunities (show only accounts that have at least one open opp)
- Accounts WITHOUT Cases in the last 90 days (show accounts with no support activity)
- Contacts WITH Activities last week (show contacts who were engaged recently)
Cross-filters answer relationship questions that field-level filters can't — they let you scope reports by presence or absence of related record data.
Formulas and calculated fields
Row-level formula fields calculate a value for each row using field values on that row. Example: a margin percentage field that calculates (Amount − Cost) / Amount. These appear as regular columns.
Summary formula fields calculate values at the group level or grand total level, using summary fields (count, sum, average, max, min) as inputs. They appear in subtotal and grand total rows, not per-record rows.
Bucket fields categorise field values within the report without modifying the underlying data. You group numeric ranges or picklist values into named buckets:
- Opportunity Amount: Small (under £10k), Medium (£10k–£100k), Large (over £100k)
- Lead Source: Digital (Web, Social), Outbound (Cold Call, Email), Partner (Referral, Partner)
Bucket fields are a lightweight way to add analysis categorisation that only needs to exist in the report — not as a permanent custom field on the object.
Dashboard fundamentals
Dashboards are collections of components, each displaying data from a source report. You build the report first, then create a dashboard component that points to it. Components can display the same source report in different ways depending on the component type chosen.
| Component type | Use case |
|---|---|
| Chart | Visualise grouped report data as bar, line, donut, funnel, or scatter |
| Gauge | Show a metric against a target range (green/yellow/red bands) |
| Metric | Display a single large KPI number — total pipeline, total closed won |
| Table | Show a grid of grouped or summarised report data |
Dashboards can contain up to 20 components. Use the filter bar to add dashboard-level filters that users can adjust without editing the underlying reports.
The Running User and data visibility
Every dashboard has a Running User setting. The Running User is the profile whose sharing access controls which records the dashboard shows. All viewers of the dashboard see data through the Running User's permissions — not their own.
This has a major consequence: if the Running User is a System Admin (who can see all records), every viewer of that dashboard sees all records, regardless of their own sharing access. This is often not what you want for a sales team dashboard where each rep should see only their own data.
Dynamic Dashboards
Dynamic Dashboards solve the Running User problem for scenarios where each viewer should see their own data. When a dashboard is set to Dynamic, it renders as the viewing user — each user sees data filtered to their own records and sharing access.
Requirements and constraints:
- Requires Enterprise edition or higher.
- Each Dynamic Dashboard uses one allocation from your org's dynamic dashboard limit (5 for Enterprise, 10 for Unlimited).
- Dynamic Dashboards cannot be scheduled to refresh automatically — they refresh on demand or when the user loads the page.
- They cannot be viewed by higher-privilege users on behalf of lower-privilege users (unlike fixed Running User dashboards).
For sales team dashboards, rep-level activity views, or any context where personalisation matters, Dynamic Dashboards are the correct tool.
Subscriptions
Both reports and dashboards support subscriptions — automated notifications that deliver data to specified users on a schedule.
- Report subscriptions: run on a schedule (daily, weekly, monthly) and email the report results to specified recipients as an attachment or inline view.
- Dashboard subscriptions: notify users when the dashboard refreshes, or when a specific metric crosses a threshold you define.
- Conditional subscriptions: only notify when a value changes or crosses a threshold. Useful for SLA breach alerts, pipeline below target warnings, or case volume spikes.
Limits to know
- Report UI: Maximum 2,000 rows displayed. Export to CSV to retrieve the full dataset — exports are not subject to this limit.
- Dashboard components: Maximum 20 per dashboard.
- Groupings: Summary reports support up to 3 row groupings. Matrix reports: up to 2 row groups and 2 column groups.
- Scheduled report recipients: Maximum 200 per schedule.
- Custom Report Types: Object relationships limited to 4 levels deep.
Governance and maintenance
Report maintenance is a real admin task that gets neglected. Without structure, a Salesforce org accumulates hundreds of reports in a flat, unnamed folder over several years. Nobody knows which reports are current, which are duplicates, or which are used by scheduled jobs or dashboard components.
- Organise reports into named folders by team and function before the list grows unmanageable.
- Use descriptive names: team, subject, and frequency in the report name.
- Fill in the Description field: what it shows, who uses it, when it was last reviewed.
- Run a quarterly usage audit — Salesforce tracks last-run date. Archive or delete reports with no access in 90 days.
- Before deleting any report, check whether it is used as a dashboard component source or a scheduled subscription.
Real Syllabus · Session 90
Session 91: Salesforce Integrations →