If your business is using multiple pieces of specialised software, you’ve probably run into the problem of sharing data between all your different applications. The great thing about specialised software is that it does a few things very well. However, this also means that there’s a lot a specific piece of software can’t do. And this makes sense. We use software to do a task, and do it easily and efficiently. If you’re looking for an application that does everything, you run into a “Jack of all trades, master of none” scenario and wind up with something that mostly works, but not as well as it can. Software is just a tool and, just like with physical tools, you need the right tool for the job. You wouldn’t use a hammer to saw a piece of wood in half.
If you’re using different tools that have similar data, or can benefit from the data of the other, how do you easily get these tools to talk to each other? That’s where integrations come in. At Red Crow Digital, we specialise in third party integrations, meaning we’re good at getting one piece of software to work well with another piece of software.
In this article, we’re going to explore one such integration we did recently for the Minnesota Historical Society (MNHS) between Tessitura and HubSpot. This is hardly a tutorial on how to integrate HubSpot and Tessitura, but it’s a bit of an explanation of some of our methods.
Recognising the Strengths and Weaknesses of the Software
We have a lot of experience with Tessitura integrations. It’s a great tool for cultural and arts organisations to manage events and sell tickets. However, while Tessitura has some email capabilities as well as some CRM capabilities, it’s not dedicated to these functions. HubSpot on the other hand is a great CRM. It doesn’t manage events and sell tickets though.
The MNHS society gave us a great brief, so we mostly knew where a lot of the information needed to go, but we still evaluated the strengths and weaknesses of each piece of software. This was both for our own understanding of the challenge as well as to better advise the client.
Here’s what we wanted to do with the data and why:
Tessitura: We wanted to get information on website behaviour and email interactions from HubSpot to Tessitura. This was because if customer data stored in Tessitura also has information about email open rates and website interaction, it gives a business a lot more information about key customer cohorts, what events do well (and with whom), and how to target specific customers better.
HubSpot: We wanted to get subscription information and event attendance from Tessitura to HubSpot. This was because if HubSpot has data on subscription information, events attended, and tickets purchased, businesses can have better email journeys and more personalised marketing experiences for customers.
Understanding the API, Finding Limitations, and Workarounds
A big challenge that came up quite early were the limitations in Tessitura’s REST API. Don’t get us wrong, Tessitura has a well maintained API that’s very developer friendly. That being said, no developer can anticipate every scenario. There will always be gaps.
Because of this, we made use of several SQL stored procedures. By leveraging Tessitura's Custom endpoint resource, we were able to access these procedures directly. This approach proved invaluable as it granted us access to crucial data points stored within the Tessitura database tables, which were not otherwise accessible through standard Tessitura calls.
Bringing It All Together
From there, we had data from Tessitura and from HubSpot, but that data didn’t necessarily conform to the requirements of the system it was being sent to. This is a pretty common challenge when sending data from one piece of software to another. Again, developers do a great job in building software, but they’re building the software to store their data, so some manipulation is often required.
Bringing all the data together into the right place involved checking that all the data we wanted from a particular customer was available at the time of the migration. For example, if a customer didn’t have an email address associated with them in the database, we’d make additional calls to see if they had any household members associated with their account.
We also needed to do some form of data cleaning between the two services, Tessitura and HubSpot store common attributes, like addresses and timestamps in completely different ways, so we used Django as a middleman to ensure data was in the correct format when travelling between the two services.
Finally, we used Google Cloud Platform to drive the entire process. By setting a scheduled Cloud Run Job, we were able to execute the Django management command containing the migration logic at regular intervals. This allowed us to get the data we needed, clean and validate it to the correct format, then sync it with HubSpot.
How’s your integration going?
Integrating software isn’t an easy task. Every piece of software is different and the business needs of the organisation that needs the integration may be different from other organisations, even if they’re both integrating the same software. Hopefully this article has shone a light on our methods and approach.