A Salesforce object is a database table — a structured container that stores records of a specific type. Every row in an object is a record, every column is a field, and Salesforce auto-generates a tab, layouts, list views, and an API endpoint for the object. Salesforce ships with dozens of built-in standard objects (Account, Contact, Lead, Opportunity, Case, User, etc.) and lets admins create custom objects for business-specific data.
What makes a Salesforce object more than a table
A “table” in a traditional database is just rows and columns. A Salesforce object brings a whole platform layer with it the moment you create it:
- A tab in the App Launcher (optional)
- Page layouts for record detail and edit screens
- List views with filters, columns, and sharing
- Standard buttons and actions (New, Edit, Delete, Clone)
- Search indexing so the object’s records appear in global search
- API endpoints — REST, SOAP, Bulk, Streaming all work automatically
- Reports and dashboards — Report Types can be built on the object
- Audit fields (
CreatedById,CreatedDate,LastModifiedById,LastModifiedDate) - Sharing infrastructure — a
__Sharetable if OWD is Private or Public Read Only - History tracking (when enabled)
- Triggers, validation rules, flows, and formulas can target the object
The two kinds of objects
| Type | Naming | API name suffix | Examples |
|---|---|---|---|
| Standard | Ships with Salesforce | No suffix | Account, Contact, Lead, Opportunity, Case, User, Task, Event |
| Custom | Created by you | __c | Project__c, Stakeholder__c, Invoice__c |
A few important sub-categories interviewers may dig into:
- Big Objects — for storing very large historical data sets (billions of rows). Suffix
__b. Limited query support. - External Objects — read from external systems via Salesforce Connect, not stored in Salesforce. Suffix
__x. - Custom Metadata Types — config-style records that deploy with metadata. Suffix
__mdt. - Custom Settings — hierarchical or list settings used by configuration code. Suffix
__con the setting object.
What you get and don’t get for free
When you create a custom object via Setup → Object Manager → Create, you get:
- A
Namefield (text or auto-number — your choice at creation) - Standard system fields:
Id,CreatedById,CreatedDate,LastModifiedById,LastModifiedDate,SystemModstamp,OwnerId(if not detail),IsDeleted(in queries against*__History) - A
__Sharetable (only if OWD is Private or Public Read Only) - A
__Historytable (only when field history tracking is enabled) - Standard tabs/layouts as you opt into them
You do not get for free:
- Joinable behavior with standard objects beyond explicit lookups/master-detail you create
- Person Account support unless the object is a contact-like relationship
- Pricing, forecast, or activity timeline behaviors — those are object-specific platform features
When to use standard vs custom
| Need | Object type |
|---|---|
| Track companies you sell to | Account (standard) — don’t build a custom “Company” object |
| Track people at those companies | Contact (standard) |
| Track deals or revenue forecasts | Opportunity (standard) — gets pipeline, forecasting, stages |
| Track support tickets | Case (standard) — built-in queues, SLAs, console support |
| Track project work | Custom object (Project__c) — no standard fit |
| Track invoices, contracts, equipment, custom assets | Custom object — model to your business |
A senior admin’s instinct is always check whether a standard object fits before creating a custom one. Standard objects come with deeply integrated features (Lead Conversion, Opportunity Forecasting, Case Routing) that custom objects can never fully replicate.
API name patterns interviewers test
- Standard object:
Opportunity - Standard field on standard object:
Opportunity.Amount,Account.Industry - Custom field on standard object:
Account.Annual_Revenue_Tier__c(always__c) - Custom object:
Project__c - Custom field on custom object:
Project__c.Status__c - Lookup field on standard object pointing to a custom object: ends in
__c - Standard relationship field name:
OpportunityId,AccountId(no suffix) - Custom relationship field name:
Project__cfor the field, with the relationship nameProject__rfor SOQL traversal
Verified against: Salesforce Help — Objects and Object Reference for Salesforce. Last reviewed 2026-05-17.