Skip to main content Skip to complementary content

Two-way data synchronization

Two-way sync is between two platforms (A and B) where data can be changed in either platform.

All remarks for one-way sync also apply to two-way syncs! On top of that, two-way sync requires the below points of attention.

Example two-way sync pattern

Here's a simple example of 2-way sync of Contacts, without deletes:

A two-way sync pattern.

an automation consisting of a Start block, a List Updated Contacts Incrementally Only Once block containing a Create Or Update Contact By Email Only Update When Changes block, and a List New And Updated Contacts Incrementally block containing an Add Or Update Contact By Email Only Update If Changes block.

Endless loops

Avoid endless loops where an update from A to B causes an update from B to A, which causes a new update from A to B etc. This is accomplished by using the only update when needed rule (see above) so that timestamps of objects are not increased when no changes are needed.

Conflict handling

Keep the synchronization intervals as low as possible to reduce the change of conflicts (change made to the same object in A and in B at the same time).

Comparison automations

A good practice is to create a Compare automation that compares all data from A and B, to make sure that the synchronization is working as expected. A compare automation could run e.g. once a day or even once a week because it typically needs to process a high amount of data.

A Compare automation could reveal issues that otherwise go unnoticed, e.g. issues related to a human mistake in the Blend, issues related to timestamps, issues related to the API or Webhooks of one of the platforms, etc.

You can send out an email alert in the Compare automation when issues are detected.

Example:

A Comparison automation.

an automation consisting of a Start block, two List Contacts blocks, a Compare Lists block, and a Condition block that accesses a Send Email block if the count is greater than zero.

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!