Mastering Salesforce Platform Events: A Complete Guide

 Introduction to Platform Events

Salesforce Platform Events are a powerful feature that enables real-time event-driven architectures within the Salesforce ecosystem and beyond. They provide a scalable way to communicate changes and trigger actions across different parts of your Salesforce org or with external systems.


3 Ways to Use Salesforce Platform Events

1. Platform to External App (Salesforce → External System)

Salesforce publishes events to external apps via APIs
  • Platform Event
  • CometD/Streaming API
  • OAuth/JWT Auth


2. External App to Platform (External System → Salesforce)

External apps publish events to Salesforce
  • Platform Event
  • REST/SOAP API
  • Apex Trigger/Flow

3.Platform to Platform (Internal Communication)

Events within Salesforce (between orgs/components)
  • Platform Event
  • EventBus
  • Flow

Code examples for all three Platform Event scenarios.

// Publish from Apex
public class OrderEventPublisher {
    public static void publishOrderEvent(String orderId, String status) {
        Order_Update__e event = new Order_Update__e(
            Order_Id__c = orderId,
            Status__c = status
        );
        EventBus.publish(event);
    }
}

// External app (Node.js subscriber)
const jsforce = require('jsforce');
const conn = new jsforce.Connection({...});
conn.streaming.topic("/event/Order_Update__e").subscribe(message => {
    console.log(`Order ${message.payload.Order_Id__c}
    updated to ${message.payload.Status__c}`);
});

External App to Platform (External → Salesforce)

// External app (Python publisher)
import requests
url = "https://yourinstance.salesforce.com/services/data/v56.0/sobjects
/Payment_Event__e"
headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
data = {
    "Payment_Id__c": "PAY123",
    "Status__c": "Completed"
}
requests.post(url, json=data, headers=headers)

// Salesforce trigger handler
trigger PaymentEventTrigger on Payment_Event__e (after insert) {
    for(Payment_Event__e event : Trigger.New) {
        if(event.Status__c == 'Completed') {
            // Update related records
        }
    }
}


// Publisher Apex
public class InventoryService {
    public static void publishLowStockEvent(String productId) {
        Low_Stock_Alert__e event = new Low_Stock_Alert__e(
            Product_Id__c = productId,
            Timestamp__c = System.now()
        );
        Database.SaveResult sr = EventBus.publish(event);
        if(!sr.isSuccess()) {
            System.debug('Publish failed');
        }
    }
}

// Subscriber Flow
// Create a Record-Triggered Flow on Low_Stock_Alert__e
// Add actions like: Send Email Alert & Create Case


Useful Resources to Link

Platform Event Developer Guide     Platform Events Developer Guide

Streaming API vs Platform Events    Streaming API vs Platform Events
Apex Trigger For Platform Events     Apex Triggers for Platform Events
Platform Events Limits     Platform Events Limits

Which Platform Event use case are you implementing? Share in the comments!
For hands-on practice, try the Trailhead Module on Platform Events."

Post a Comment

Post a Comment (0)

Previous Post Next Post