A Report Type defines which objects and fields are available when building a report. It's the schema lens — choose "Opportunities with Products" and you can report on those two related objects' fields together; choose "Opportunities" and Products' fields aren't accessible.
Salesforce ships standard report types for every object and most relationships. Custom Report Types let you compose your own — pick a primary object, optionally add up to four related objects with A-with-B or A-with-or-without-B logic, choose which fields are available, and rename for clarity. The "with-or-without" join is what enables reports like "Accounts with or without Opportunities" — the equivalent of an outer join, which standard report types often can't express.
Why it matters:
- Report design starts here. If the right Report Type doesn't exist, your users can't build the report.
- Performance — Custom Report Types let you remove unused fields from the picker, speeding up large reports.
- Security — fields hidden via FLS still don't appear; report types layer on top of FLS, not under it.
Common gotcha: changing field labels affects standard report types' display but not their underlying field reference, so reports keep working but may show stale labels until refreshed.
