%% 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