Quick Bridge: two-way QuickBooks and Salesforce 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:
- The same field edited on both sides since the last sync.
- The same customer created separately in both systems.
- A record deleted on one side and edited on the other. If the app guesses wrong here, data is lost.
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