%% Salesforce event-driven reference architecture %% Reference architecture: a reusable pattern, not a live client integration flowchart TB subgraph z0["Your Salesforce org"] crm["Salesforce records
selected objects"] flow["Flow and Apex
business logic"] d360["Data 360
data actions"] cdc["Change Data Capture
change events"] pe["Platform events
custom event types"] apexsub["Apex trigger subscribers
in-org"] end subgraph z1["Your integration estate"] mw["Middleware
MuleSoft or other"] bus["External event bus
your cloud or streaming platform"] erp["ERP and back office
consumers"] dw["Data warehouse
analytics consumer"] dlq["Dead-letter queue
failed messages"] mon["Monitoring
alerts and dashboards"] end pubsub["Pub/Sub API
gRPC, HTTP/2, Avro"] relay["Event relay
managed relay"] crm -->|"record changes"| cdc flow -->|"publish"| pe d360 -.->|"data actions"| pe cdc -->|"subscribe"| pubsub pe -->|"subscribe"| pubsub pe -->|"in-org handling"| apexsub pe -->|"relayed events"| relay pubsub -->|"event stream"| mw relay -->|"relayed events"| bus mw -->|"normalised events"| bus bus -->|"business events"| erp bus -->|"event history"| dw mw -->|"failed after retries"| dlq dlq -->|"depth alerts"| mon erp -.->|"status write-back"| crm classDef salesforce stroke:#125BD8,fill:#e8f0fd class crm,flow,cdc,pe,apexsub salesforce classDef data stroke:#2f8a3a,fill:#e9f6ea class d360,dw data classDef integration stroke:#334155,fill:#eef2f6 class pubsub,relay,mw integration classDef security stroke:#1f2937,fill:#f3f4f6 class dlq security classDef external stroke:#64748b,fill:#ffffff class bus,erp external classDef people stroke:#125BD8,fill:#ffffff class mon people