1.1 Record Stuck on "Awaiting Salesforce Sync"
Symptom: A Quickbooks_Customer__c (or other QB record) has Status__c = 'Awaiting Salesforce Sync' and the parent Salesforce record fields are not being updated.
Cause: The record was synced to QBO successfully but the trigger-based write-back to the parent Salesforce object failed. This is typically a field mapping issue.
Fix:
-
Check
Status_Description__con the QB record — it will contain the specific field that could not be written (e.g.,'JSON error :: Cannot parse the field mapping json'or'Field Mapping not found'). -
Go to Admin Setup → Field Mapping and verify the reverse mapping (QBO→SF) is correctly configured for the parent object.
-
Check that the mapped Salesforce fields are accessible to the running user (FLS).
1.2 "Company not found" on QB Records
Where it appears: Status_Description__c = 'BatchSFQBCustomerSync.execute Company not found'
Cause: The Quickbooks_Customer__c (or similar) record has a Quickbooks_Company__c lookup that points to a Quickbooks_Company__c record that either does not exist, is inactive (Active__c = false), or has not yet been connected.
Fix:
-
Open the QB record → verify
Quickbooks_Company__cis populated and points to an active, connected company. -
Go to Admin Setup and confirm the company's
Status__cisSuccessfully SyncedandActive__c = true. -
If the company record is missing, re-run the authorization flow to recreate it.
1.3 Duplicate Records Not Created (Upsert Logic)
Symptom: Running the QBO→SF sync appears to succeed but no new records are created in Salesforce, even for records that should be new.
Cause: All QBO→SF syncs use upsert on the Composite_Unique_Key__c field. The key format is: {QB_Id}::{EntityType}::{realmId} (e.g., "59::Customer::1185883450"). If a record already exists with the same key, it is updated, not inserted.
This is expected behaviour. It prevents duplicates across repeated sync runs.
When this is a problem: If you see the wrong data on an existing record, check the Composite_Unique_Key__c field on the QBO record in Salesforce — if it matches a different company's realm ID, a previous authorization may have merged data from two companies.
1.4 Webhook-Triggered Sync Not Firing
Symptom: A record is updated in QBO but the corresponding Salesforce QB record is not updated.
Cause options:
-
The
Ignore_Webhook__cflag istrueon the record (set by the connector itself after an outbound sync to prevent loops). -
The webhook notification was delivered for an operation the handler does not process (
DeleteandMergeare not handled byWebhook_QBChangeHandler— onlyCreate,Update, andVoid). -
The QBO webhook is not configured or has expired in the Intuit Developer Portal.
Fix:
-
For
Ignore_Webhook__c: this flag resets tofalseautomatically on the next save. If it is stuck, manually set it tofalseon the record. -
For unsupported operations: run the Sync from QuickBooks batch manually from the Admin Setup page.
-
For webhook configuration: verify the endpoint
https://your-org.my.salesforce.com/services/apexrest/getUpdatesQB/is registered and active in the Intuit Developer Portal under Webhooks