TimeTracker syncs data with QuickBooks Desktop (QBD) seamlessly and automatically. You can read about how to set that up and use it on our blog, here.

This article is about some of the intricacies/quirks of the sync process. Note that understanding some of these intricacies needs some understanding of Salesforce, TimeTracker AND QuickBooks Desktop.

One thing to remember: QuickBooks Desktop records are unique by the Name field in each record. So, while Salesforce may have two (say) TT Users called "John Smith", QBD will have only one Employee of that name. This is true for all other data that we sync - Accounts, Contacts, Invoices and so on.


Here are the issues that you may want to be aware of, in no particular order.

  1. QuickBooks has no support for putting data into QuickBooks Custom Fields, so we don’t support that either in the near future.
  2. Integration typicall runs once in 6 hours and pulls data from Salesforce to QuickBooks. In theother direction, QBD List IDs are sent back to Salesforce and updated onto the relevant records (look for a field called QuickBooks Desktop List Id on the objects that we support sync for).
  3. All syncs start with the TT Details since the last sync. So only Accounts, Materials, Projects and TT Users included in the current set of TT Details are synced with QBD. So also with Invoices - only the Accounts, Collections, Materials, Projects and TT Users included in the current set of Invoices are synced with QBD. No other records are synced.
  4. Only QBD fields that have a non-null value for their equivalent in Salesforce are included in the sync. All other fields are ignored regardless of their values in Salesforce and in QBD.
  5. Projects are synced as Jobs for the equivalent Customers of the Account that the Project is for.
  6. The Account’s Invoice Contact is the only Contact that the sync includes, for a Customer. If that’s not found on the Account (because, for example, the TT Invoicing module has not been purchased), that field is ignored.
  7. Some Customer fields are not supported in the sync of the relevant Account: AdditionalContactRef, Contacts.AdditionalContactRef, CreditCardInfo, CreditLimit, OpenBalance, OpenBalanceDate, PreferredDeliveryMethod, SalesTaxCountry.
  8. When the sync runs, if the last_sync is null (probably because this is the first time it is running), it gets all TT Details for the current calendar year.
  9. Custom Fields in QBD are not supported. But Custom Fields in Salesforce can be mapped to regular fields in QBD.
  10. The fields mapped for QBD Customers are all from the TT Detail’s Account object relationship (dftlytime__Account__r. …).
  11. If you delete an item in QBD, make sure you remove the QBD List ID for that item with Salesforce, else things will fail with strange messages.
  12. Item Names must be identical between Salesforce and QuickBooks Desktop. For example, if the TT user’s First Name and Last Name don’t add up the Name in QuickBooks (<first-name><space><last-name>), it wont synf them as the same record.
  13. TT Time Worked must be a minimum of 1 minute; records with less than that will not be sent to QBD.
  14. Billable Time Details always need both a QBD Customer:Job AND a service item. We suggest you add a Service Item called “Professional Services” in QBD, to map to.
  15. Address-lines longer than 41 chars are not supported in QBD, so they will be chopped down automatically when sent to QBD.
  16. Ampersands in names come over as “&amp;” (else the QBWC side fails). So those names need to be edited back to a '&' in QBD before the next run of sync.
  17. Expect errors like this when the current combination of Account and Project are not the same as that on the TT Detail: There is an invalid reference to QuickBooks Job "Burlington Textiles Corp of America:Emory Builders" in the TimeTracking.  QuickBooks error message: Invalid argument. The specified record does not exist in the list. In this case, for example, the project Emory Builders was linked to Burlington Textiles Corp of America when the time was reported, but currently (when the sync happened), that project is linked to a different Account.
  18. The Inventory Item for Projects is, by default, “Professional Services”. The config has a js: string with that value and can be changed to whatever Item you have in QBD. The Project Name is available in the line’s Description field (again, via the config mapping).
  19. TT Details that have material used don’t (yet) have the material’s details in the Time Tacking entries in QBD.
  20. The folllowing QBD fields have trouble being set from QBWC to QBD, so they are not brought over from Salesforce: CustomerTypeRef on Customer; RefNumber on Invoice Header.

  21. ItemInventory needs an Income Account (IncomeAccountRef“). So we uses js: on the Salesforce Config to set to a value in the Sample db (“Uncategorized Income”). So also for Asset and COGS accounts.