Salesforce’s official Integration Patterns and Practices guide names six canonical patterns. Every real integration is one of them, or a composition of two. Knowing the names — and which technology fits each — is what separates an interview answer that sounds rehearsed from one that sounds practiced.
The six patterns
| Pattern | Direction | Sync/Async | Typical tech |
|---|---|---|---|
| Request and Reply | SF → External (wait for answer) | Synchronous | REST/SOAP callout from Apex/Flow |
| Fire and Forget | SF → External (don’t wait) | Asynchronous | Platform Events, @future, Outbound Messages |
| Batch Data Synchronization | Either way, bulk | Asynchronous, scheduled | Bulk API 2.0, ETL tools, Data Loader |
| Remote Call-In | External → SF | Synchronous | REST/SOAP API, Apex REST/SOAP services |
| UI Update from External System | External → SF UI | Asynchronous | Platform Events + LWC empApi |
| Data Virtualization | External → SF (no copy) | On-demand | Salesforce Connect / OData |
Request and Reply — the most common
User clicks “Run Credit Check.” Salesforce calls the credit bureau API, waits up to a few seconds, displays the score. Use when: the caller needs the answer immediately and the round-trip is fast enough for the UI to wait.
Implementation: Http.send() from Apex behind a Lightning button, or an External Service flow action.
Fire and Forget — for downstream notifications
A new Opportunity closes. Salesforce should notify ERP, but the user shouldn’t wait. Use when: the external system doesn’t need to return data, or its response doesn’t affect the current UI.
Implementation: Publish a Platform Event, or call out from @future(callout=true). Outbound Messages (Workflow-era) still work but are legacy — avoid for new builds.
Batch Data Synchronization — for nightly bulk loads
Sync yesterday’s orders to the data warehouse at 2 AM. Use when: latency tolerance is high, volume is huge, both systems can be reconciled offline.
Implementation: External ETL tool (Informatica, Mulesoft, Boomi) pulling via Bulk API 2.0, or Apex Batch + REST callouts pushing out.
Remote Call-In — external systems writing to Salesforce
A web form on your marketing site creates a Lead. The form posts to a Salesforce REST endpoint. Use when: the source of truth lives outside, and Salesforce needs the data created/updated synchronously.
Implementation: Salesforce REST API, SOAP API, or custom Apex REST/SOAP service (@RestResource, webservice keyword).
UI Update from External System — real-time push to users
A trading floor app shows live stock prices. An external system publishes prices; Salesforce LWC users see updates without refreshing. Use when: the user UI must reflect data changing outside Salesforce in near-real-time.
Implementation: External system publishes Platform Events to Salesforce via the Pub/Sub API; LWC subscribes via the lightning/empApi module.
Data Virtualization — don’t copy, just query
Customer order history lives in SAP. Reps want to see it on the Account page. Use when: data must stay in the source system (compliance, size, freshness) but appear inside Salesforce.
Implementation: Salesforce Connect with an OData 2/4 adapter exposes external data as External Objects (__x suffix). They’re queryable via SOQL, reportable, related to standard objects via External Lookup, but never copied into Salesforce.
Composition example
Real integrations chain patterns:
- Web form (Remote Call-In, REST) → creates Lead
- Lead Trigger publishes a Platform Event (Fire and Forget) → marketing automation tool consumes it
- Nightly job (Batch Data Synchronization) syncs converted Leads to the data warehouse
- Account page shows live billing data via External Objects (Data Virtualization)
Common interview follow-ups
- Request-Reply vs Remote Call-In? — Direction. Request-Reply is Salesforce initiating outbound; Remote Call-In is an external system initiating inbound.
- Why pick Platform Events over Outbound Messages? — PE supports multiple subscribers, replay, retries, and external pub/sub. Outbound Messages are SOAP-only, single-target, no retries.
- Data Virtualization sounds great — why not always? — Cross-system joins are slow, governor limits still apply to External Objects, and not every external system speaks OData.
Verified against: Salesforce Integration Patterns and Practices. Last reviewed 2026-05-17 for Spring ‘26 release.