The “Event Storm” Problem
We’ve all been there. You enable Change Data Capture (CDC) on a high-traffic object and suddenly your downstream systems—MuleSoft, Heroku, or AWS—are drowning.
By default, CDC publishes an event for every field change. If a batch job updates 50,000 records to fix a typo, you just burned 50,000 events from your daily quota. If that change didn’t matter to your integration, you’ve wasted resources and hit limits for nothing.
This is the “Event Storm.” It kills scalability.
The Solution: Stream Filtering
Architects must “shift left.” Don’t make subscribers filter the noise; prevent the noise from ever reaching the bus. Platform Event Channel Filtering turns a high-volume firehose into a high-signal notification service.

How to Implement (4 Quick Steps)
Filtering CDC events isn’t (yet) a “point-and-click” journey in the Setup menu. It requires a bit of Metadata/Tooling API work.
- Create a Custom Channel: You cannot filter the standard
ChangeEventschannel. Create a custom one via thePlatformEventChannelobject.
// Tooling API: PlatformEventChannel
POST /services/data/v63.0/tooling/sobjects/PlatformEventChannel
{
"FullName": "HighValueAccount_Chn__chn",
"Metadata": {
"channelType": "Event",
"label": "High Value Account Changes"
}
}
- Add a Channel Member: Bind your object (e.g.,
AccountChangeEvent) to your new custom channel. - Define the Filter: This is where you define the logic. Using the
PlatformEventChannelFilterobject, you can filter by fields or even change types.
Example Filter Expression: SELECT Id, AccountStatus__c FROM AccountChangeEvent WHERE Industry = 'Technology' AND AnnualRevenue > 1000000
// Tooling API: PlatformEventChannelMember
POST /services/data/v63.0/tooling/sobjects/PlatformEventChannelMember
{
"FullName": "AccountUpdates_Channel__chn",
"Metadata": {
"eventChannel": "HighValueAccount_Chn__chn",
"selectedEntity": "AccountChangeEvent",
"filterExpression": "Industry = 'Technology' AND AnnualRevenue > 1000000"
}
}
- Deploy: Use your CI/CD pipeline or CLI to push the metadata.
Trade-offs at a Glance
| Advantage | Disadvantage |
| Protects Quotas: Stops draining your 24-hour delivery limits. | Simple Logic Only: No cross-object formulas or complex logic allowed. |
| Consumer Efficiency: Middleware stops processing “junk” events. | No UI: Must be managed via API/CLI and Git. |
| Lower Latency: Less traffic on the bus means faster delivery. | Harder to Debug: You can’t easily “see” what was filtered. |
The Bottom Line
Efficiency isn’t just about fast code; it’s about doing less unnecessary work. Filtering CDC streams is the best way to keep your event-driven architecture lean, cheap, and fast.
Leave a Reply