Real-time sync
How Kombo keeps integration data up-to-date without sacrificing API reliability and performance.
The problem
If you’ve ever built an integration with a more legacy or enterprise system, you’ll know the struggles you have to go through to perform even the simplest of reads:
Information about a single concept (e.g., an employee) is spread across five different endpoints, requests sometimes take minutes to finish, and unreliable servers force you to implement complex retry logic.
We were faced with a choice: Either we expose these same problems to our customers, resulting in slow and unreliable endpoints, or we come up with a solution — we decided to go with the latter.
The solution
We’re now mirroring the data in the source systems into a database at regular intervals (and when you manually trigger a sync). When you call our API, we will simply read from this database, resulting in endpoints that always respond reliably and quickly.
Through our syncing approach, we can also provide webhooks for systems that don’t provide webhooks themselves.
Note that syncs adhere to your scope config, so if there are sensitive data points you’re not using, then those will not end up in our database.
Sync types
You might find hints of different sync types in the dashboard or webhook body. However, the sync types are an implementation detail on Kombo’s side and you likely won’t have to think about them.
Kombo has three sync types. Their availability depends on the tool that is being used. Some tools might not support different sync types. Kombo has different sync types to distinguish between syncs that fetch all the data from a tool or syncs that only fetch the data that has changed since the last sync.
Kombo will automatically choose the correct type depending on
the schedule that we create. The updated_after
filter will work the same for
all sync types and will only return you the data that actually changed. Kombo
tracks the changes in its database.
Default Sync
The default sync is the standard sync type. It will fetch all the data for a tool. Generally, you will find this for tools that don’t have a lot of data, so the sync is fast. If integrations use default syncs, there is only one sync frequency (by default, 3 hours). Default syncs will track what was deleted in the integrated tool. Tools with this sync type don’t have other sync types.
Full syncs and delta syncs
Tools that allow us to fetch only changed data will have two sync types: full syncs and delta syncs. A full sync will retrieve all the data and is technically the same as a default sync. A delta sync will only fetch the data that has changed since the last sync from Kombo’s side.
Delta syncs will not check the completeness of the data. That means the sync will not fail if not all entries are found. It will also not mark deleted entries because we are only fetching a subset of data.
Delta syncs will pause full syncs of their integration to utilize rate limits and make sure that you get the latest changes as soon as possible.
We support these two sync types because some tools have a lot of data, and a sync fetching all the data sometimes runs for many hours. If we did not do delta syncs in between, you would not get any data for a long time.