Customers
Syncing Customers
One of the objects that is essential to be linked is the Customer object in QuickBooks. All accounting entities within QuickBooks are linked to customers. This means that accounts in Salesforce need to be linked to customers in QuickBooks. Most implementations will need to account for creating new customers, and syncing existing customers to accounts.
Creating New Customers from Accounts
If you are starting with a fresh account, and the customer does not exist inside of QuickBooks, this is the easiest path to push data. There is an action to create new customers in QB from Salesforce accounts. To add this to the page layout:
- Go to Setup→Object Manager
- Navigate to Account
- Select Page Layoutsand open the desired page layout
- In the Mobile & Lightning Actionsfind thePush to QBaction and add this to the actions section.
From here, just press Push to QB on any account that needs to be pushed to QuickBooks.
To see how your Salesforce fields are mapped to QuickBooks Customers, please view the mapping table below
| QuickBooks Field | Salesforce Label | Salesforce API Name | 
|---|---|---|
| Active | True* | True | 
| Billing Address Line 1 | Billing Street | BillingStreet | 
| Billing Address City | Billing City | BillingCity | 
| Billing CountrySubDivisionCode | Billing State | BillingState | 
| Billing Country | Billing Country | BillingCountry | 
| Billing PostalCode | Billing PostalCode | BillingPostalCode | 
| CompanyName | Account Name | Name | 
| DisplayName | Account Name | Name | 
| FreeFormNumber | Phone | Phone | 
| IsProject | False* | False | 
| Id | QB Id | qime__QB_ID__c | 
| Job | False* | False | 
| PrintOnCheckName | Account Name | Name | 
| ResaleNum | Resale Number | qime__Resale_Number__c | 
| SyncToken | SyncToken | qime__QB_SyncToken__c | 
| Shipping Address Line 1 | Shipping Street | ShippingStreet | 
| Shipping Address City | Shipping City | ShippingCity | 
| Shipping CountrySubDivisionCode | Shipping State | ShippingState | 
| Shipping Country | Shipping Country | ShippingCountry | 
| Shipping PostalCode | Shipping PostalCode | ShippingPostalCode | 
| Taxable | Taxable | qime__Taxable__c | 
| TaxExemptionReason | Tax Exemption Reason | qime__Tax_Exemption_Reason__c | 
* Value is hard-coded
Schedule Customer Sync From QuickBooks -> Salesforce
Customers can be brought over hourly. To schedule Customer syncing, perform the following:
- Open the Developer Console
- Run the following code snippet
System.schedule('QB Customer Sync XX:00', '0 0 * * * ?', new qime.QBCustomerBatch());This will sync customers from QuickBooks to Salesforce at the top of every hour.
Sync All Customers From QuickBooks -> Salesforce
During an initial setup, you can bring all customers from QuickBooks to Salesforce. To bring all invoices from QuickBooks to Salesforce, perform the following:
- Open the Developer Console
- Run the following code snippet
System.enqueueJob(new qime.QBCustomerQueueable(0, 0, 50, 0));Please keep in mind that this will overwrite your exsting data under the same QB_Id__c and will not match existing data.
Customer -> Account Mapping
If you are working with a fresh account, and the customer does not exist inside of QuickBooks, this is the easiest path to push data. There is an action to create new customers in QB from Salesforce accounts. To add this to the page layout:
- Go to Setup→Object Manager
- Navigate to Account
- Select Page Layoutsand open the desired page layout
- In the Mobile & Lightning Actionsfind thePull from QBaction and add this to the actions section.
From here, just press Pull from QB on any account that needs to be pushed to QuickBooks.
To see how your Salesforce fields are mapped to QuickBooks Customers, please view the mapping table below
| QuickBooks Field | Salesforce Label | Salesforce API Name | 
|---|---|---|
| Active | True* | True | 
| Billing Address Line 1 | Billing Street | BillingStreet | 
| Billing Address City | Billing City | BillingCity | 
| Billing CountrySubDivisionCode | Billing State | BillingState | 
| Billing Country | Billing Country | BillingCountry | 
| Billing PostalCode | Billing PostalCode | BillingPostalCode | 
| CompanyName | Account Name | Name | 
| DisplayName | Account Name | Name | 
| FreeFormNumber | Phone | Phone | 
| IsProject | False* | False | 
| Id | QB Id | qime__QB_ID__c | 
| Job | False* | False | 
| PrintOnCheckName | Account Name | Name | 
| ResaleNum | Resale Number | qime__Resale_Number__c | 
| SyncToken | SyncToken | qime__QB_SyncToken__c | 
| Shipping Address Line 1 | Shipping Street | ShippingStreet | 
| Shipping Address City | Shipping City | ShippingCity | 
| Shipping CountrySubDivisionCode | Shipping State | ShippingState | 
| Shipping Country | Shipping Country | ShippingCountry | 
| Shipping PostalCode | Shipping PostalCode | ShippingPostalCode | 
| Taxable | Taxable | qime__Taxable__c | 
| TaxExemptionReason | Tax Exemption Reason | qime__Tax_Exemption_Reason__c | 
* Value is hard-coded
Mapping Existing Accounts and Customers
Mapping existing customers within 2 data sets can be a challenging and laborious effort. While it would be nice to be able to link this data automatically, there are too many edge cases to make this possible. If you are looking to sync the two databases, the general workflow is as follows:
- Export data from both systems.
- Use VLOOKUPin an Excel sheet to match the databases on fields like name and email.
- Update the qime__QB_Id__cfield in Salesforce using the newly merged data.
If you are interested in a service like this, reach out to me here