Syncing Custom Objects and Fields From Your Data Warehouse to HubSpot
We use and love HubSpot and so do our customers and therefore we decided to draft this guide that walks you through the process of syncing custom objects and fields from your Data Warehouse to HubSpot.
November 4, 2020
At Hightouch, we're huge fans of HubSpot. In fact, I'm an ex-HubSpotter myself. Every September, when HubSpot's INBOUND conference rolls around, we're excited to see what new toys are available to play with.
INBOUND 2020 has been filled with tons of exciting product announcements ranging from an ABM toolkit toCPQ integrations to a brand new report builder. That said, our favorite product announcement by far is HubSpot Custom Objects. In fact, we believe it might be HubSpot's most exciting product announcement since their Sales CRM was originally released in 2014.
We were so excited about HubSpot's announcement that a week after its release, we shipped a new feature allowing you to automatically sync custom data from your database or data warehouse into HubSpot.
In this post, we'll go over:
- What are HubSpot custom objects?
- What are some example use cases?
- How can I sync my custom product, billing, etc. data to HubSpot?
What are HubSpot custom objects and why are they so exciting?
Over the last 13 years, HubSpot has evolved into a "swiss army knife"— with functionality ranging from a Sales CRM to Marketing automation platform to CMS to Survey tool.
The foundation of all of these services is a simple object model. By default, HubSpot's CRM comes with a number of standard objects, like contacts, companies, deals, and tickets. These get the job done for simple sales and marketing use cases, but in reality, every business is unique. With custom objects, you can store all your data in HubSpot and structure it exactly how you need to without sacrifices.
What are some example use cases?
Subscription business billing data
Let's say you run a business that sells an online subscription via Stripe and your Customer Success, Sales, and Support teams all live out of HubSpot. You want these business teams to be able to view all the pending and processed charges towards your customers— subscriptions, overage fees, etc.— within HubSpot so that you don't have to give them Stripe access or make them hop back and forth.
Before custom objects, you could set one-off custom fields like
arr, total_paid_last_30d, or overage_fees_last_30d on HubSpot's company objects or find a way to represent this information as HubSpot deal objects. That said, all you really want to do is expose Stripe's "charges" objects in HubSpot. With Custom Objects, you can do just that.
Product usage data with hierarchy
Let's say that my business sells a project management platform like Atlassian's JIRA that's used by large enterprises. Since we serve large enterprises, we have a system of "projects" within our product. My marketing teams want to set up a reengagement campaign when a team's usage drops below a certain threshold.
With custom objects, you can simply create a custom object "projects" with fields:
and use those in the condition of your HubSpot marketing email campaign.
How do I get custom data into HubSpot?
As of today, HubSpot custom objects must first be defined using the API. Once you've defined your custom object, you can create custom object records using the HubSpot web app or API. For more details on how to create custom objects, see: https://developers.hubspot.com/docs/api/crm/crm-custom-objects.
Our customers often already have SQL databases or data warehouses (e.g. Snowflake, BigQuery, Redshift) with rich data from internal databases, analytics data, and SaaS services like Stripe, Zendesk, etc. If your company is in that boat and wants to sync data from your database to HubSpot, then you can use the Hightouch platform to do so without any engineering efforts— all you need is a colleague that can write SQL once.
Hightouch: SQL → Custom field on HubSpot contacts
Let's take a simple example without custom objects first— you want to record a
last_logged_in_at timestamp on every HubSpot contact so that your sales team can know the last time they logged into the app.
First, simply write a SQL query that finds each user and their last session timestamp:
Then, connect the HubSpot destination in Hightouch:
As you can see above, Hightouch will upsert (insert or update, if exists) results of the SQL query to HubSpot's Contacts collection using the contact's email address as the key and translate the
last_logged_in_at field from SQL to the "Last Logged In At" field in HubSpot.
Boom! All of your contacts in HubSpot with a matching email address will now have a
Hightouch: SQL → HubSpot "charges" custom object
Now, time for an example with custom objects. Earlier, we discussed a use case of showing charges from Stripe under company records in HubSpot.
With Hightouch, you can setup this sync in under 5 minutes. First, write a SQL query that lists charges from your warehouse:
Then, connect the HubSpot destination in Hightouch:
As you can see above, Hightouch will upsert (insert or update, if exists) results of the SQL query to the custom "charges" collection you've created in HubSpot using the charge's id as the key and create an association between each charge and a HubSpot company object using "domain".
Boom! Charges from Stripe are continuously flowing to HubSpot via Hightouch's warehouse sync.
We believe HubSpot custom objects are going to be a game-changer for enterprise and overall, extensibility of the wider HubSpot platform. We recommend all HubSpot customers take a look at custom objects to see how they can improve day-to-day workflows.