Use Salesforce External Objects with OData 4.0 to expose a Heroku Postgres table as a Salesforce object and run a SOQL join between it and a native Salesforce object
Configure an OData 4.0-compatible endpoint on the external system exposing an entity set with a metadata document at /$metadata
In Salesforce Setup, create an External Data Source of type 'Salesforce Connect: OData 4.0' pointing to the external endpoint URL
Validate the data source to auto-generate External Object definitions, then customize field mappings and label the external ID field
Define an indirect lookup relationship on a native Salesforce object (e.g. Account) referencing the External Object's external ID
Run a SOQL query with a relationship traversal across the indirect lookup (e.g. SELECT ExternalObj__x.Field__c FROM Account WHERE ...) and observe the federated query behavior
Known gotchas
Salesforce Connect issues OData queries to the external system at query time — there is no local caching by default, so each SOQL call hits the external endpoint and counts against external callout limits
Indirect lookups require an 18-character Salesforce ID stored in the external system's join column; if the external system stores 15-character IDs the lookup will silently return no results
Cross-object SOQL joins involving External Objects cannot be used inside Bulk API jobs or Flow loops — only synchronous SOQL is supported
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp