Integrating Zoho CRM with Other Applications
Our Zoho CRM team has recently completed some projects where Zoho CRM was connected to (“integrated with”) other business systems. I feel that sharing some of the experience we had in these projects can be valuable for others considering an integration between Zoho CRM and other systems.
What Is an Integration and Why Is it Important?
The term “integration” is used liberally around situations when multiple IT systems are involved. When we talk about integration what we usually mean is that the functionality and/or data from one system becomes available in another.
Every day more and more cloud based software (Saas - Software as a Service) are available to businesses to support an ever growing array of functions; manage customers, bill clients, track time, run projects, execute marketing campaigns, keep track of resources and so on. It is unavoidable that there will be an overlap in the data these multiple systems store and the functionality they offer. This often results in double (or triple, or even quadruple) data entries and inaccuracies between the different versions of data across each system. Think about a simple case such as storing customer information in your CRM, billing and marketing software at the same time.
With these multiple systems naturally rises the need to avoid double entries and the wish that data entry in one system would create a record in another system. Also, most users have a primary go to system, like CRM for sales. Integration raises the prospect of one being able to log into a primary system and perform most activities from there without having to go elsewhere.
Most Saas based software offer so-called web Application Programming Interfaces or web API’s that - in simple technical terms - allow for access to the data in a system for developers. These web API’s can be used to inter connect multiple systems and transfer data between them. Though they are not the only method to offer connectivity, API’s adhering to the REST standards are what many developers use to build integrations. Our recommendation for business owners is to only consider to adopt business software that has open and well documented API’s.
Making Sense of an Integration
I will use a recent project as a simple scenario to demonstrate the questions one can face building an integration. In this project we built custom code to connect Zoho CRM and QuickBooks. The primary goal was that invoices created in Zoho CRM be synced into QuickBooks.
So the FUNCTIONALITY we want to integrate here is invoice creation. But on the DATA level this apparently simple issue becomes a bit more complex. The reason for that is that an invoice is actually made up of multiple pieces of data: it requires a customer and at least one product.
Most systems - including Zoho and QuickBooks - require that a Customer and a Product be present in the database before an invoice can be created. So the actual steps to create an invoice in Zoho CRM would be the following:
- Create a Contact and an Account
- Create a Product,
- And then create an Invoice
At this point we can start thinking about syncing the Invoice created in the process out into QuickBooks. To do this we also need to understand that QuickBooks
- Uses Customers, that are the combination of a Contact and an Account
- Uses Items for products
- Requires an existing Customer and Item for the creation of an Invoice
What this means in practice is that the Account, Contact and Product used to create the Invoice in Zoho CRM will have to be present in QuickBooks before we can sync out any invoices. Either entered manually on the QuickBooks side or synced out in the process - before the actual invoice is synced.
It is easy to see how these dependencies between different pieces of data can make a seemingly simple integration task more complex. But we are just getting started with the technical details. We also need to consider the afterlife of the synchronized data: What happens when a change is made to the data in Zoho CRM after it has been synced out? For example an Invoice gets updated. And what happens if the same invoice is modified in QuickBooks?
The quick conclusion we can draw here is that
- Being able to set up connectivity between two cloud based systems is a standard expectation these days and from a technical standpoint it's relatively easy
- The availability of such connectivity is not what constitutes the true challenge of an integration, rather, it has to make sense both on the data and functionality levels
If the API’s are available, connecting two systems on the data level is relatively easy. But how that connection is used, what data is being exchanged and whether that data exchange makes sense for real life business situations are what lie at the center of a good integration.
Continuing with our invoice sync example above, if I was asked “Can you integrate invoices from Zoho CRM into my QuickBooks?” then I would ask back that “What is the business situation that requires this?”. Implicit in this question are the underlying business considerations that arise around general data entry and the specifics of creating invoices:
Will there be data entry in both systems or only in one?
To answer this question we also have to consider the functionality of the two systems: QuickBooks is a financial software while Zoho CRM is a customer and sales management tool.
How do we make sure data entry is consistent in both system?
This is especially relevant considering that they store the same type of data (Customer vs. Account + Contact) in very different ways. Are we prepared to handle those differences so as not to confuse users?
What should happen to changes to existing data in either system?
An update to a customer’s phone number can take place in either system - but should it be reflected in the other? What afterlife can an invoice have and how should the system handle the different outcomes? After an invoice is created, it can get modified, cancelled or even a credit memo/refund issued for it. It needs to be determined what should happen when one of these events occur in order for both systems to provide accurate financial information. If one system shows and outstanding invoice while it has been cancelled in the other then one of the systems system will display inaccurate financial data. Can we afford that to happen?
The above questions represent just the tip of the iceberg and we used them to show how integrations are not about just data but rather capturing and syncing data between multiple systems in a way that makes sense for the business.
To avoid many of these pitfalls that integrations can present, the following factors should always be considered.
What to Consider for an Integration
Functional role in the workflow
How does the integration tie into existing workflows - does it make sense for the people who will be using it? CRM is often used by sales and customer service, while QuickBooks is preferred by bookkeepers and accountants. Does it make sense for CRM users to be able to create invoices - and cause headaches for bookkeepers?
What data to sync
What is the scope of data that will be synced - and are there any strings attached? As we saw above, syncing invoices will require syncing customers and products as well.
Differences in the data structure
Different systems store the same type of data differently and the integration has to deal with these differences. A missing email address is no big deal in QuickBooks but can prevent a record from being saved in Zoho CRM.
How soon after a change in the data should that change be reflected in the other system? Immediately? Within 1 hour? The next morning? Prompt data is good, but not necessarily a true business requirement in every scenario. Some data requires immediate updates while others are just fine if posted overnight. Immediate updates can generate high volumes of traffic between the two systems while batch processing (e.g. all changes of the day in one overnight update) can make things more predictable.
Which way should data flow between the systems, and should it be a one-way or two-way flow? Either case comes with a trade off: one way syncs will inherently ignore changes applied to data in the target system while two-way syncs have to deal with resolving conflicting between records that changed on both sides.
Handling errors and exceptions
A good integration system will deal with many of the above aspects and still, errors will happen and there will always be data that escape the rules. What a well built integration system can do at least in unexpected situations is warn an administrator and provide detailed information of the nature of the problem so that the error can be analyzed, resolved and the results incorporated back into the integration’s logic.
How to Do it Right
Many of the mentioned technical issues have to be dealt with in any integration project. A prepared integration solution provider will address most of them for their clients. What business users should consider when thinking about connecting cloud software systems are the following:
When the two systems are connected, what functionality do they expect from the two systems combined? Does that functionality make sense for the users of both systems?
How can the integration be used to extend the functionality of the connected systems, and what are the business benefits users can expect from it?
How do they get prepared to deal with the differences in functionality and the way data is stored between the two systems?
Will the integration require changes to how data is entered and used in either system?
Doing integrations the right way can become a jigsaw puzzle - putting together the pieces so that all shapes match but also the big picture at the end comes out attractive.