Stream row-level changes out of a database in near real-time using the transaction log. No polling, no app changes — downstream systems get inserts, updates, and deletes as they happen.
Rendering diagram…
Use CDC when you need to stream changes from a database to other systems without polling or modifying the application:
CDC shines when: the source DB can't be changed, latency matters (sub-second to few-second), and you need every change, not a snapshot.
Databases write every change to a transaction log before applying it. CDC tools (Debezium, AWS DMS, Fivetran HVR, native CDC in SQL Server / Postgres logical replication) tail that log and emit a stream of change events, each describing:
The stream is typically published to Kafka or a similar event bus. Downstream consumers subscribe and apply changes to their own stores.
CDC captures every change including sensitive ones. If your CDC stream flows to a less secure environment, you've just leaked PII. Plan encryption, masking, and access control before you connect anything.
Postgres: set wal_level = logical and create a publication. SQL Server: enable CDC on the database and the tables. MySQL: enable binlog_format = ROW. Each has knock-on effects on disk usage and backup — read the docs.
The log only has changes. Downstream consumers need the current state too. Most CDC tools do a one-time snapshot first, then switch to tailing the log. Plan for this window — the snapshot of a 500GB table takes time.
A column added upstream needs to propagate. A column dropped could break consumers. Decide: hard-fail loudly on schema drift, or route old-schema events through a compatibility layer?
Most CDC tools preserve per-row ordering (all events for user-42 arrive in order). Cross-row ordering is usually not preserved. If you need causal consistency across tables, design for it explicitly.
Lag is the most important metric. A 30-second lag is healthy; a 30-minute lag means your search index is 30 minutes stale. Alert on sustained lag over a threshold.
Periodically check an external system for changes and trigger workflows when new or updated records are detected. The reliable alternative when webhooks aren't available.
Receive real-time events from external systems via webhooks, validate them, and trigger the appropriate workflow response. The foundation of reactive automation.