QuickBooks Conflict Resolution
When you use two-way sync, both ContractorScope AI and QuickBooks can edit the same data. Most of the time this works silently — whoever changed something last, that change flows to the other side automatically. But occasionally you or someone on your team edits a contact name in ContractorScope AI while a bookkeeper updates the same contact in QuickBooks. Without a smart way to handle that situation, one of those edits would disappear.
ContractorScope AI uses true per-field conflict detection to prevent that. This page explains how it works and how to resolve conflicts when they occur.
How Conflicts Work
The Three-Value Comparison
Every time a sync runs, ContractorScope AI compares three values for each tracked field:
- App value — what the field currently says in ContractorScope AI.
- QuickBooks value — what the field currently says in QuickBooks.
- Last-synced value — what the field said the last time both sides agreed (the "base").
By comparing all three, the system can tell the difference between:
- One side changed, the other did not → the changed value is applied to the other side automatically and silently. You do not see anything.
- Both sides changed → a conflict is recorded. Nothing is overwritten. You decide which version to keep.
This is called a three-way diff, the same technique version control systems use to merge code changes.
Automatic Resolution (No Action Required)
The vast majority of sync events resolve on their own:
| Situation | What Happens |
|---|---|
| You edited a contact name in ContractorScope AI; QuickBooks was not touched. | App value is pushed to QuickBooks automatically. |
| A bookkeeper added an email in QuickBooks; nothing changed in ContractorScope AI. | QuickBooks value is pulled into ContractorScope AI automatically. |
| Both sides already agree. | Nothing happens. |
Manual Resolution Required
A conflict is recorded when both sides changed the same field since the last sync:
| Situation | What Happens |
|---|---|
| You changed a phone number in ContractorScope AI AND a bookkeeper changed the same phone number in QuickBooks. | A conflict is recorded. Both values are preserved. You choose which one to keep. |
Conflicts do not overwrite either side until you make a choice.
Seeing Pending Conflicts
When one or more conflicts are waiting for your decision:
- A "N pending conflicts" badge appears on the QuickBooks card in Settings → Integrations.
- Click the badge to open the Conflict Resolution modal.
Resolving Conflicts in the Modal
The modal shows each pending conflict on its own row. For each one, you see:
- Field — which field is in conflict (for example, "Phone Number").
- App value — the value currently in ContractorScope AI.
- QuickBooks value — the value currently in QuickBooks.
- Last-synced value — what both sides agreed on before the divergence (shown in gray for context).
To resolve a conflict:
- Review the two values and decide which one is correct.
- Click Keep App to use the ContractorScope AI value, or Keep QuickBooks to use the QuickBooks value.
- The winning value is written to both sides so they agree going forward.
- If you have multiple conflicts, you can click Keep all App or Keep all QuickBooks to bulk-resolve everything in one step.
Once resolved, the conflict disappears from the list and the badge count decreases.
What Gets Tracked
Contacts (Shipped)
Two-way conflict detection is active for all linked contacts:
| ContractorScope AI Field | QuickBooks Field |
|---|---|
| Display name | Customer DisplayName |
PrimaryEmailAddr | |
| Phone | PrimaryPhone |
One-sided changes apply automatically. Both-changed → conflict.
Projects (Now Also Syncs)
Project and job names are now also tracked for conflicts:
| ContractorScope AI Field | QuickBooks Field |
|---|---|
| Project name | Job DisplayName (a QuickBooks sub-customer) |
One-sided changes apply automatically. Both-changed → conflict.
A QuickBooks "Job" is represented as a sub-customer under the parent customer record. ContractorScope AI routes project syncs through this relationship automatically.
Estimates (Status Only)
Estimate status is now also tracked for conflicts:
| ContractorScope AI Field | QuickBooks Field |
|---|---|
| Estimate status (sent / accepted / rejected) | Estimate TxnStatus |
Line items, totals, and other estimate details are app-generated and do not sync back from QuickBooks. Status is the only field that can diverge between the two systems.
Conflict Stays "Pending" After I Resolved It
If a conflict shows "try again" or stays pending after you click a resolution button, it means ContractorScope AI could not confirm that the write to QuickBooks succeeded. The conflict is intentionally left pending rather than silently dropped. Common causes:
- Your QuickBooks authorization has expired. Go to Settings → Integrations → QuickBooks and click Reconnect, then try the resolution again.
- QuickBooks returned an error (for example, the record was modified in QuickBooks between when the conflict was detected and when you resolved it). Click Try Again in the modal. If the error persists, check QuickBooks for any data validation issues on that record.
- A temporary QuickBooks API outage. Wait a few minutes and retry.
Sync Mode and Conflicts
Conflict detection only applies to Two-Way sync mode. If you use one-way sync, there are no conflicts:
- QuickBooks to ContractorScope AI (one-way) — QuickBooks always wins. App edits to synced fields are overwritten on the next sync.
- ContractorScope AI to QuickBooks (one-way) — ContractorScope AI always wins. QuickBooks edits to synced fields are overwritten on the next sync.
- Two-Way — True conflict detection. One-sided edits apply automatically; both-changed edits wait for your decision.
To change your sync mode: Settings → Integrations → QuickBooks → Sync Settings.
Frequently Asked Questions
Will a conflict block other syncs? No. A pending conflict on one field does not block syncing other fields or other records. Only the conflicting field on that specific record is held until you resolve it.
What if I ignore a conflict? The conflict stays pending indefinitely. The field in question is not synced in either direction until you resolve it. All other fields for that record continue to sync normally.
Can conflicts appear for estimates I did not send through ContractorScope AI? Estimate status conflicts only appear for estimates that ContractorScope AI sent to QuickBooks. Estimates created directly in QuickBooks are not tracked.
How do I prevent conflicts from happening? There is no way to eliminate all conflicts when two-way sync is enabled — that is the nature of two systems that can both be edited. The best practice is to designate one system as the primary editor for each type of data, or to train your team to check before editing a record that might have been recently changed in the other system.
Next Steps
- QuickBooks Integration — Connect and configure the integration.
- Contacts & CRM — Manage the contacts that sync with QuickBooks.
- Projects — Track jobs that sync as QuickBooks Jobs.