← Back to blog
· Salesforce· Snowflake· CDC· Integration

Salesforce CDC & Snowflake Dynamic Tables

Unifying Salesforce Bulk API and CDC payloads into a single object in Snowflake using Confluent Kafka Connect and Dynamic Tables.

Why it's needed

Change Data Capture (CDC) is a streaming product on the Lightning Platform that enables you to efficiently integrate your Salesforce data with external systems.

CDC publishes events for changes in Salesforce records — create, update, delete, and undelete operations — so you can update data in an external system instead of doing periodic exports or API polling.

When to use it

The challenge — two distinct data streams

When dealing with two distinct types of data streams:

The challenge: these two streams are structurally different. The Bulk API payload is optimized for high-volume extraction; the CDC payload focuses on granular, event-based updates. The differences make it difficult to work with the data in a unified, meaningful way.

The pipeline I designed

I've designed a data integration pipeline that addresses this by:

  1. Using Confluent Kafka Connect to source both the Bulk API and CDC data from Salesforce.
  2. Leveraging Snowflake's Sink Connector to ingest the data into Snowflake — and most importantly, unifying the two structurally distinct payloads into a single cohesive object using Snowflake's Dynamic Tables.

The architecture diagram below depicts the pattern used to unify the CDC object with the snapshot object using Snowflake Dynamic Tables.

Salesforce CDC → Kafka → Snowflake Dynamic Tables architecture

Walkthrough (video)