Important points to ensure before of any integration

CRM synchronizations (leads / contacts / companies / accounts)

  • Mapping contacts - ideally via email, as it is unique
  • Mapping companies and accounts - ideally via VAT ID, or trade registration numbers; alternatively name and country combination, while this is error prone
  • How to deal with duplicates in two systems? Either merge and take one of the two as the leading entity or ignore records and send an email

Sales Funnel synchronizations (deals / opportunities / orders / invoicing / configure price quote (CPQ))

  • CPQ - multiple line items per invoice
  • Mapping product ids ideally based on a common number
  • Currency - Either use currency symbols or ideally unique three letter codes (EUR, USD, …)
  • Discounts - ideally in both systems as a percentage or integer number, being a percentage; mixed spellings need a mapping table (Env Variables) 
  • Tax rates - ideally in both systems as a percentage or integer number, being a percentage; mixed spellings need a mapping table (Env Variables)

Considerations for real-time sync vs. daily

  • For real-time syncs, either webhooks need to be available on both systems, informing the other system that something changed, or a scheduler needs to be run every five minutes and be able to only check for recently updated records and no one should have worked in the other system in parallel.
  • If the before mentioned options are not available, e.g. due to old system that doesn’t have updated time stamps nor webhooks, a leading system should be determined and ideally synchronizations should happen less frequent and all data entry and updates should be done in the leading system.

Integration Check List

  • Are test or staging systems available?
  • Test data should be prepared for the first instance, but also for testing later changes
  • Authentications: Are all API keys or username and password at hand? If restricted role-based access is available, this should be agreed upon and configured
  • Are firewalls present or is IP-white labeling required?
    • For firewalls, VPN access needs to be granted
    • Our static IP needs to be requested via a support ticket and white-labled on the other systems
  • If the to be integrated system is not present yet on our platform, please contact with all information on this list to be able to add it, including the API documentation (swagger-/ OpenAPI docs)
  • Consider all data privacy and GDPR / DSGVO requirements, e.g. deletion requirements etc.
  • Synchronisation technical aspects
    • Real-time vs. e.g. daily sync
    • Object mapping - Sometimes objects don't map 1:1 and on one system and object can be represented in two objects on the other system. This has implications on the integration flow
    • Field mappings - Please request our Google sheet template as an ideal basis
    • Custom fields - If one systems allows custom fields, how are they handled in the other system? Can they be added by users easily and how should the integration handle unexpected new custom fields?
    • Data model relations - through what unique / foreign keys are objects connected?
    • Validation - Do the systems provide validation of data (length, some characters only, ...) and how are they enforced? If they are not enforced, there are several ways e.g. the Validation Helper and the replace('#', '') Jinja-function to do this on our side.
    • Pagination - For large data sets, how is pagination taken care of?
    • Filtering - Can views, list or collections be filtered via the API?
    • Sorting - Can views, list or collections be sorted via the API?
    • Transformation of data,...
      • e.g. one system uses UTC-timestamps, the other German timestamps; how is the transformation done?
      • One system uses EUR and USD as currencies, the other currency symbols $ € - how is the mapping done?
      • Select drop-down fields: Where are the options stored? What if a new option is generated (e.g. it is easy to generate new options in Salesforce) should a default be used or an error be thrown?
      • ...
  • Who gets error messages if an integration run fails?
  • Once records are - created, updated or deleted - on one system, what should happen on the respective other system?