Keep records synchronized between two or more systems. Handles create/update/delete propagation with conflict resolution. Essential for multi-system environments.
Rendering diagram…
Use a data sync bridge when:
Bidirectional sync is significantly more complex than one-way sync. Start with one-way unless you truly need changes flowing both directions.
Source System → Detect Change → Transform → Target System
(Salesforce) (trigger/poll) (map fields) (SharePoint)
System A ←→ Change Detection ←→ Conflict Resolution ←→ System B
(both directions) (who wins?)
| Source Field (Salesforce) | Target Field (SharePoint) | Transform |
|---|---|---|
| Account.Name | Company Title | Direct copy |
| Account.Phone | Phone Number | Format: +1 (xxx) xxx-xxxx |
| Account.Industry | Industry Dropdown | Map picklist values |
| Account.AnnualRevenue | Revenue | Convert USD string to number |
| Account.LastModifiedDate | Last Synced | Store for conflict detection |
| Strategy | Pros | Cons |
|---|---|---|
| Event-driven (webhooks, triggers) | Real-time, efficient | Requires webhook support |
| Polling (check every N minutes) | Works with any system | Delay, more API calls |
| Change log (query audit logs) | Catches all changes | Not all systems expose logs |
| Timestamp comparison (last modified > last sync) | Simple to implement | Clock skew issues |
For each detected change:
| Change Type | Action in Target |
|---|---|
| New record | Create record with mapped fields |
| Updated record | Find matching record by sync ID, update changed fields only |
| Deleted record | Soft-delete (flag as inactive) or hard-delete based on policy |
| No match found | Log orphan warning, create new if appropriate |
When both systems change the same record:
| Strategy | Rule | Best For |
|---|---|---|
| Last write wins | Most recent timestamp wins | Non-critical data |
| Source of truth | Designated system always wins | One system is authoritative |
| Field-level merge | Take each field from its most recent update | Complex but accurate |
| Human review | Flag conflict for manual resolution | Critical data |
Track every sync operation:
| Field | Purpose |
|---|---|
| Sync ID | Unique identifier for the sync pair |
| Source record ID | ID in source system |
| Target record ID | ID in target system |
| Last sync timestamp | When the records were last synced |
| Sync status | Success, failed, conflict |
| Error details | If failed, what went wrong |
A common cause of sync failures is infinite loops: System A changes → syncs to B → B's change triggers sync back to A → repeat. Always mark synced changes so they're ignored on the return trip.
Periodically check an external system for changes and trigger workflows when new or updated records are detected. The reliable alternative when webhooks aren't available.
Receive real-time events from external systems via webhooks, validate them, and trigger the appropriate workflow response. The foundation of reactive automation.