External Object
An External Object in Salesforce is similar to a custom object, but it maps to data stored outside the Salesforce org rather than inside it.
Definition
An External Object in Salesforce is similar to a custom object, but it maps to data stored outside the Salesforce org rather than inside it. External Objects do not store data in Salesforce; instead, they provide real-time access to external data through Salesforce Connect using OData 2.0, OData 4.0, cross-org, or custom Apex adapter connections. External Object API names end with '__x' and their records are retrieved on-demand from the external system when a user views or queries them. They support a subset of standard Salesforce features, including list views, detail pages, record feeds, and reporting.
In plain English
“An External Object is like a custom object, but instead of storing data inside Salesforce, it points to data living somewhere else. When you view an External Object record, Salesforce fetches the data from the external system on the spot. The API name ends in __x.”
Worked example
Tanglewood Studios, a film and TV production company, keeps its 14,000 active production-asset records in a NetSuite ERP. Rather than syncing those into Salesforce (where they'd duplicate and drift), the integration team creates an External Object called Production_Asset__x powered by Salesforce Connect's OData adapter. The External Object appears in list views, detail pages, and reports just like a native object - but every record is fetched live from NetSuite when accessed. A producer scoping a new shoot sees live asset availability without leaving Salesforce, and Tanglewood maintains exactly one source of truth for asset data instead of two systems with reconciliation jobs running between them.
Why External Object matters
An External Object in Salesforce is similar to a custom object, but it maps to data stored outside the Salesforce org rather than inside it. External Objects don't store data in Salesforce; instead, they provide real-time access to external data through Salesforce Connect using OData 2.0, OData 4.0, cross-org connectors, or custom Apex adapters. External Object API names end with '__x' (compared to '__c' for custom objects), making them visually distinct in code and metadata.
When users view or query an External Object, Salesforce fetches the data on demand from the external system, ensuring it's always current. External Objects support a subset of standard Salesforce features including list views, detail pages, record feeds, and reporting, though some features (like triggers and complex workflows) are limited because the data isn't actually stored in Salesforce. They're particularly valuable for surfacing large datasets, authoritative source-of-truth data, and data subject to residency requirements that prevent copying.
How to create External Object
External Objects look like regular Salesforce objects but their data lives in an external system — accessed live via Salesforce Connect's OData adapter. Useful for showing ERP data alongside CRM data without copying. Setup involves an External Data Source first, then the External Object syncs from it.
- Confirm Salesforce Connect is licensed
External Objects require Salesforce Connect (paid add-on for non-Salesforce sources; free for Salesforce-to-Salesforce).
- Setup → External Data Sources → New
Set up the connection first. Pick Adapter Type: OData 2.0 / OData 4.0 / Salesforce / Cross-Org Adapter / Custom (Apex).
- Configure connection details
URL of the external system. Authentication: Anonymous / Per User / Named Principal. Identity Type, OAuth flow if applicable.
- Save → Validate and Sync
Validate tests the connection. Sync auto-creates an External Object for each table the data source exposes.
- Object Manager → External Objects → review the synced objects
Each external table = an External Object. Field mappings auto-derive.
- (Optional) Add Lookup / Master-Detail relationships
Indirect Lookups can link External Objects back to standard / custom Salesforce objects.
- Add to a Lightning App + Page Layout
Like any other object — but realize queries hit the external system live, so list views / reports may be slow.
Required. The connection that backs this External Object.
Auto-derived from the synced table. Manually editable but rarely changed.
- External Objects don't store data in Salesforce. Every list view / report query hits the external system live — performance depends on the external system's API speed and rate limits.
- Not all features work on External Objects. Workflow, Process Builder, Flow create-record actions, Sharing Rules, and some report types are limited or unavailable.
- Indirect Lookups require an External ID field on the related Salesforce object that matches the External Object's primary key. Set this up carefully — mismatched keys produce broken navigation.
How organizations use External Object
Created an External Object pointing to their ERP's order table. Salesforce users see and search ERP orders from inside Salesforce without any data sync, with the data always current.
Uses External Objects with cross-org adapters to display data from a regional Salesforce org in their global org, avoiding bidirectional sync complexity.
Built a custom Apex adapter to expose data from a legacy system as External Objects, giving users a Salesforce-native experience over data they couldn't otherwise easily access.
Trust & references
Straight from the source - Salesforce's reference material on External Object.
- External Data Sources With Salesforce ConnectSalesforce Help
Test your knowledge
Q1. What is an External Object?
Q2. What suffix do External Object API names have?
Q3. What technology powers External Object data access?
Discussion
Loading discussion…