Two different questions
Platform Events and Change Data Capture ride the same pipes (the Pub/Sub API, the event bus, a ~72-hour replay buffer) but answer different questions. Platform Events are messages you define and publish - from Apex, Flow, or the API - for app-to-app signalling: "order approved", "sync requested". Change Data Capture is the platform telling you a record changed - automatically, for every create, update, delete, and undelete on the objects you enable, with the changed fields listed. If your goal is "react to Salesforce data changing", CDC is the one that requires no publishing code at all.
Side by side
| Platform Events | Change Data Capture | |
|---|---|---|
| What it carries | A custom event schema you design | Record changes: object, change type, changed fields, record data |
| Who publishes | You - Apex, Flow, or API calls, counted against publishing allocations | The platform, automatically, when records change |
| Effort to emit | Define the event, add publish code/automation everywhere a change matters | Tick the object in Setup → Change Data Capture |
| Blind spots | Changes made by paths that forget to publish (data loader, API edits, other packages) | None for enabled objects - every DML lands on the stream |
| Best for | Business-level signals and cross-app messaging | Data integration, sync, audit, cache invalidation, real-time downstream reactions |
They're complementary - plenty of orgs use both. The comparison is about which stream answers your question, not which is better.
Either way, the subscriber is the hard part
Whichever event type you choose, consuming it means the same infrastructure: a long-lived gRPC subscription over HTTP/2, Avro schema resolution, replay-id checkpointing so a restart resumes instead of rewinding, reconnect and backoff logic tuned to the Pub/Sub API's quirks, and monitoring so you notice when the stream dies silently. That subscriber - not the event definition - is where the engineering time goes. (We wrote up the details in the build-vs-buy breakdown.)
SFHooks runs that subscriber for Change Data Capture and hands you the result as signed JSON webhooks: at-least-once delivery, retries with a dead-letter queue, and per-event observability. We don't currently forward custom Platform Events - if that's what your architecture needs, talk to us about where it's headed.
Frequently asked
Should I use Platform Events or Change Data Capture for data sync?
Change Data Capture. CDC events are emitted automatically for every create, update, delete, and undelete on enabled objects - including changes from the data loader, API edits, and other packages that custom publish code tends to miss. Platform Events are the right tool when you're signalling a business event you define yourself.
Does SFHooks support Platform Events?
SFHooks subscribes to Change Data Capture and delivers record-change events as signed webhooks. Custom Platform Event forwarding isn't part of the product today - contact us if your use case needs it.
What is the replay window for Salesforce events?
The event bus retains events for about 72 hours. A subscriber that's down longer than that loses the ability to replay what it missed - one reason a managed, monitored subscriber matters. SFHooks checkpoints its position continuously and records a visible gap incident if a stream is ever down past the buffer.