Know what changed, not just that something did
Synchronoid compares each new snapshot of a source with the previous one and emits business events such as "company address changed". Downstream apps subscribe and react, with provenance attached.
From snapshots to events
Many sources only tell you the current state. Synchronoid keeps snapshots in the raw and staged layers, computes field-level differences, and turns them into named events you define.
- Merge with
track_changes=Trueand changes are recorded automatically. - Group low-level differences into business events.
- Every event links back to the run and values that caused it.
{
"id": "evt_01J9ZK3Q",
"type": "company.address_changed",
"asset": "companies_current",
"key": { "org_id": "org_4412" },
"before": { "address": "Lindenweg 3, Berlin" },
"after": { "address": "Hauptstrasse 12, Berlin" },
"provenance": {
"source": "company_registry",
"fetched_at": "2026-10-28T02:03:12Z",
"run_id": "run_b19c"
},
"occurred_at": "2026-10-28T02:03:41Z"
}Three ways to consume the same feed
Webhooks
Signed HTTPS calls to your endpoint. Failed deliveries are retried with backoff, and slow endpoints do not block others.
Apache Kafka
Publish events to a topic in your cluster, keyed by record key, so ordering per record is preserved. Kafka integration
Pull API
Read events with a cursor when you prefer to poll at your own pace. REST API reference
At-least-once, with replay from a cursor
Every event is delivered at least once, so no change is silently missed. Each event has a stable id, which lets consumers ignore duplicates. If your consumer was down or had a bug, ask for the feed again from any cursor.
$ curl -H "Authorization: Bearer $SYN_TOKEN" \
"https://api.synchronoid.com/v1/feeds/companies/events?cursor=cur_8841200&limit=100"
{
"data": [ ... ],
"next_cursor": "cur_8841300",
"has_more": true
}Ready to stop babysitting pipelines?
Synchronoid is in private beta. Tell us about your data and we will get you a workspace.