← all projects

Quick Bridge: two-way QuickBooks and Salesforce sync

C# · Electron.js · integration · sync

Context

A client needed QuickBooks and Salesforce to stay in sync in both directions. Finance works in QuickBooks, sales works in Salesforce, and the same customers and invoices exist in both.

Why two-way sync is harder

One-way sync is just copying: read from the source, write to the target. Two-way sync is about conflicts. Both systems can be edited, so the same record can change on both sides between two sync runs, and the app has to figure out what really happened.

The main cases the design had to handle:

Approach

The app tracks sync state for each record and each field, not just for each run. This way it knows what changed, not just that something is different. Because of field-level tracking, if two people edit different fields of the same record, both changes are kept and neither overwrites the other. In practice, most conflicts are like this.

Real conflicts (same field, changed on both sides, no clear winner) are shown to a person to decide. The app does not silently use "last write wins". You should not guess with financial data.

It is a desktop app: C# for the sync engine and Electron for the UI.

Stack

C# · Electron.js · QuickBooks API · Salesforce API