Before you begin
- A model with a unique primary key.
How CDC works
Each time a sync runs, Hightouch compares the current query results against a stored snapshot of the previous run, called the diff file, and sends only the rows that differ:- Query the model against your source.
- Compare the results to the previous run’s diff file, matching rows by primary key.
- Classify each row as added, changed, or removed.
- Send those changes to the destination, along with any rows that failed on the previous run.
- Save a new diff file for the next comparison.

CDC compares only mapped model columns. The exception is custom destinations,
such as HTTP Request, which consider every
column.
CDC depends on a unique primary key
The primary key is how CDC identifies a row from one run to the next. If primary keys are missing or duplicated, Hightouch can’t reliably tell an added row from a changed one. See primary key requirements.CDC by sync mode
The sync mode determines which detected changes become destination operations:- Insert — sends only rows whose primary key is new since the previous run.
- Update and Upsert — send rows whose mapped values changed.
- Archive and All (sometimes called Mirror) — don’t use CDC. Every row is sent on every run, and these modes don’t store requests in the live debugger.
Reset or reprocess CDC
Some changes require Hightouch to rebuild CDC state before the next run behaves as you expect. Reset CDC, full resync, and clear-and-fill are run behaviors, not sync modes.
For the consequences and click paths of each action, see the Syncs overview.
When CDC runs
CDC happens after Hightouch receives the query results and before it writes to the destination. While the sync status shows Querying, Hightouch is waiting for query results, computing the diff, or saving the new diff file.Where CDC runs
By default, Hightouch computes CDC on its own infrastructure, called the basic engine. For supported sources, the Lightning Sync Engine computes CDC directly in your warehouse, which speeds up syncs at higher volumes.
Where diff files are stored
Hightouch stores the previous run’s query results to compute the next diff. By default, diff files live in an encrypted, Hightouch-managed bucket and are retained for 30 days. Some plans let you bring your own bucket to keep diffs in your own infrastructure.