A Report Type is the template that defines what data is available for a report — which primary object, which related child objects, and which fields can be added as columns or filters. Every report starts by picking a Report Type.
Two kinds
| Type | Source |
|---|---|
| Standard Report Types | Shipped by Salesforce — “Accounts”, “Opportunities with Products”, “Cases” |
| Custom Report Types | Built by admins — define the object combo and field set yourself |
What a Report Type controls
- Primary object — the root of the report
- Related objects — up to 3 levels of child objects (e.g. Accounts → Opportunities → Opportunity Line Items)
- Relationship cardinality — “with” (require child) vs “with or without” (outer join semantics)
- Field set — which fields are exposed in the column picker (you can curate to hide noise)
- Folder / category — where it appears in the Report Builder picker
- Default columns / sort — initial layout for new reports
Standard report types ship for most objects
Every standard object comes with one or more standard report types. Examples:
- Accounts and Contacts
- Accounts with Contact Roles
- Opportunities with Products
- Cases
- Activities
- Campaigns with Campaign Members
Standard types are good enough for many reports — but they’re inflexible (you can’t change the field set or join logic).
Why build a Custom Report Type
You’d build a custom report type when:
- The standard types don’t include the related objects you need (e.g. Accounts → Custom Object → Custom Junction → another Custom Object)
- You want to control the field set — hide rarely-used or sensitive fields
- You need a different join semantic — “Accounts with or without Opportunities” doesn’t exist as standard
- You’re exposing a custom object that has no standard report type
- You want default sort/columns for your team
Building a Custom Report Type
Setup → Report Types → New:
- Pick the primary object (e.g. Account)
- Choose label, name, description, category, folder
- Deploy / In Development — controls visibility in Report Builder
- Define relationships — add child objects with “with” or “without” semantics, up to 4 levels
- Edit Layout — pick which fields appear in the column picker; reorder, add Lookup fields from related records
”With” vs “With or Without”
| Join | What it does |
|---|---|
| Accounts with Opportunities | Only Accounts that have at least one Opportunity |
| Accounts with or without Opportunities | All Accounts; Opportunity fields are null when no related row |
Same as INNER JOIN vs LEFT JOIN in SQL.
Sharing and access
Custom Report Types respect object-level permissions. A user in a custom report type’s field set still only sees data they have row-level access to via sharing.
How many can I have?
- 2,000 custom report types per org in most editions
- 4 levels of object relationships per custom report type
- 1,000 fields exposed per custom report type
Common follow-ups
- Difference from a Report Folder? — Folder is for storing reports. Type defines the data structure.
- Can a Custom Report Type include formulas? — Yes — bucket fields and summary formulas defined on individual reports; the report type itself defines available fields.
- Why is my custom object missing from standard report types? — Custom objects don’t get auto-generated standard types — you need a custom report type.
Verified against: Salesforce Help — Custom Report Types. Last reviewed 2026-05-17 for Spring ‘26.