HubSpot's native and Salesforce integration is a well-documented and powerful piece of software. And yet, what it can and cannot do still comes as a surprise to many organisations hoping to rely on it to effectively connect these two complex systems.
Furthermore, there are important nuances to the ways that both systems and the integration work that, if not understood and embraced, frequently lead to confusion and frustration.
Having worked on a raft of integrations, we consistently see the same struggles arise again and again. In this post, we've pulled all of these, and their answers or solutions, into one place. If you're rolling out a HubSpot Salesforce integration now or in the near future, read this first.
Since this is a long post and there is no perfect order for the contents, here's what we will cover, in case you want to jump to the relevant subject.
- Salesforce Leads vs Contacts
- Account creation and duplication
- Standard vs custom objects
- Inclusion lists and syncing from HubSpot to Salesforce
- Syncing from Salesforce to HubSpot
- Owner assignment
- Achieving HubSpot Salesforce integration success.
Salesforce Leads vs Contacts
The first thing to understand before attempting integration is the fundamental differences in how both systems handle the records associated with individuals and, crucially, how your organisation is going to operate these.
(If you've already decided that you will not utilise Salesforce leads, at all, and will only use contacts, you can probably skip this section.)
You most likely already know that HubSpot has just one contact record for people, while Salesforce has two, leads and contacts.
The philosophy behind Salesforce is that a person is first created as a lead (often before your organisation has had any contact with them) before it is later converted into a contact. While in lead form, a person cannot be associated with an account record, even if you know which company it is and it already exists in your Salesforce instance.
When a lead is converted (meaning a rep clicks the convert button on the Salesforce lead screen) into a contact, the user is prompted to either create the associated account record, or select it from a list of those already existing. At that moment, the company information that was on the lead record becomes, or merges with, the account information and the contact record carries the information pertaining to the individual. The lead record remains, but it is hidden and archived.
When selecting the account, users are also prompted to optionally create a new opportunity that will be associated with the account and the contact simultaneously.
We frequently hear statements like 'we don't use contacts, we convert our leads straight into opportunities' and similar. Typically the product of long-term use and either forgetting or never having known the real structure of Salesforce data, this kind of thinking is wrong and, frankly, dangerous. This is not how Salesforce works in reality and if this kind of thing is allowed to persist in your organisation you will almost certainly run in to, potentially unsolvable, process and data integrity issues.
HubSpot meanwhile treats leads and contacts in Salesforce as just contacts in its database. It will look at both Salesforce leads and contacts when deduplicating (using email address only) to ensure it creates or updates the correct record - assuming you don’t have any duplicates across leads and contacts that would cause an error. The assumption here is that a person should not be a contact before they are a lead, and cannot be both.
When enabling the HubSpot Salesforce integration you are given the choice whether new contact records in HubSpot should create new leads or contacts in Salesforce, if they do not already exist there and they become eligible to sync (see inclusion list issues below).
Selecting leads as your new record type implies that you will operate Salesforce the way it is intended and will manually convert leads and create accounts. Selecting contacts implies that you will bypass lead conversion and account creation in Salesforce, performing the latter in HubSpot. Both approaches have their pros and cons and result in different constraints being necessary around account creation and management.
Account creation and duplication
Given that account creation is prompted at the point of lead conversion in Salesforce, this implies fairly strongly that it is intended to be a manual process with human oversight controlling quality and accuracy. Integrating HubSpot doesn't change this intention, but may result in you working around it.
If HubSpot is configured to create new contacts as leads in Salesforce, you are effectively electing to continue performing account creation in Salesforce. Accounts should therefore be created only in Salesforce (turning on HubSpot's automatic account creation setting is ill-advised in this instance) and synchronised down to HubSpot once leads are converted into contacts and account records associated in Salesforce.
If, however, new contacts in HubSpot are created as contacts in Salesforce, this introduces a new dynamic around account creation.
Until fairly recently, if HubSpot created contacts in Salesforce they would all be orphans. Now, thankfully, HubSpot can create accounts in Salesforce, meaning it can create contacts and associated companies, preventing the creation of orphans. Be advised however, that company creation and association doesn't always happen before the contact is created in Salesforce. In this case an orphan contact will be generated until such a time as a re-sync is triggered after the company has been associated in HubSpot.
This ability has led to more and more organisations relying on HubSpot's handy ability to automatically create companies based on the email sending domain of new contacts. If the integration is configured to create contacts in Salesforce, this allows HubSpot to automatically create and associate both contacts and accounts, saving loads of time and admin for the sales team.
There is a caveat though. While HubSpot's automatic company creation feature is brilliant, it isn't perfect. Driven exclusively by detection of contacts' email sending domain, which can differ across large and multi-national organisations, HubSpot will frequently create duplicate accounts. A .co.uk email address for example creating a different company than a .co.jp one, even if the company is the same. Depending on the nature of the account, your company and the deal in question, this may be the right outcome, or it may not be - but HubSpot is never able to tell.
Automatically created accounts, duplicates and all, can be synchronised across to Salesforce, potentially with different owners. This can cause frustration for sales teams who thought that HubSpot had relieved them entirely of the duty of managing account data. If ignored, this situation can result in account handling issues ranging from minor to revenue threatening.
A system for managing duplicate accounts therefore needs to be created. What's more, because this information is now in two systems, resolving duplication becomes even harder. Not least because the ability to merge accounts in HubSpot is disabled when the Salesforce integration is turned on.
Salesforce's duplicate detection and prevention roles can play a part in that solution but require careful configuration so that they do not prevent HubSpot from creating the duplicates in Salesforce before they can be flagged to a sales rep for resolution.
Standard vs custom objects
The native HubSpot Salesforce integration, at the time of writing, can only see three objects on the HubSpot side (contacts, companies, and deals) and four objects on the Salesforce side (leads, contacts, accounts, and opportunities). Nothing else.
The most common frustration arising from this is that HubSpot can not see or use information (e.g. to trigger workflows or personalise/segment emails) on custom objects in Salesforce.
There is a workaround, with limitations. Using process builder (and possibly some other methods in Salesforce, such as formula fields, depending on the situation) you can take data that is on a record that the integration cannot see and copy it on to one that it can - the contact or account for example.
This works well in many situations, especially when the object in question has a one-to-one relationship with the contact or company, but it is less useful when the relationship is many-to-one; object associated with events or meeting for example.
Inclusion lists and syncing from HubSpot to Salesforce
The synchronisation of data between HubSpot and Salesforce is controlled by an active list of contacts called the inclusion list. By adding contacts selectively to the inclusion list, you can control which contacts are synchronised with Salesforce.
It's important to understand that while the inclusion list can only include contacts, it also controls which companies and deals can synchronise - both of which will only sync to Salesforce when an associated contact is present in the inclusion list.
For organisations that take an account-based view of the world, this can cause a few issues.
First of all, accounts can't synchronise if there are no associated contacts in the inclusion list.
Second, if all the associated contacts are removed from the inclusion list, the account will stop syncing, until at least one associated contact is added to the list again. The previously syncing record will remain in Salesforce and changes can be made by the sales team, but these changes will not be present in HubSpot. Gaps like this in synchronisation and discrepancies in the data can cause all sorts of issue for the marketing team.
To completely prevent issues arising from non-syncing records or gaps in syncing, a full sync of all the data in HubSpot (every contact and company) is preferable. If that isn't possible, the next best thing is to at least ensure that a contact's membership in the inclusion list is permanent so that once is has been synchronised with Salesforce, it always stays in sync.
Syncing from Salesforce to HubSpot
The inclusion list controls which contacts in HubSpot are either created or kept in sync with Salesforce. It does not control which contacts (and associated accounts) in Salesforce are created or kept in sync with HubSpot
Your choices for handling this are limited.
You can leave synchronisation of records from Salesforce to HubSpot turned off, as most users do, and only manually sync records by importing them from Salesforce into HubSpot. The requires manual process before data that exists in Salesforce can used in HubSpot-based marketing activity.
Alternatively, you can turn on synchronisation of new and/or existing Salesforce contacts and potentially make every record in Salesforce eligible to sync to HubSpot - there is no intelligence for either systems to know which specific records you want to synchronise, so all will sync.
The only middle ground that currently exists is something called selective sync and it works by modifying the permissions of the integration user (the Salesforce login used to connect HubSpot to Salesforce) so that is can only see the records you want to have in HubSpot. With this modification in place, you then turn on the full sync from Salesforce to HubSpot as described before, but only the records the integration user can see will sync over.
If bringing records over to HubSpot from Salesforce using one of the methods above, you then need to make sure they are added to the inclusion list so that they stay in sync across both systems.
Contact and company owner assignment can easily become a tug of war between HubSpot and Salesforce if you are not careful.
Using Salesforce at all implies that your reps will be active on that platform, and it may or may not have been your intention to grant them access to HubSpot. The expectation from Salesforce is, I think, that you will do your owner assignment on Salesforce.
However, with leads potentially being nurtured before qualifying to sync to Salesforce and the desire to send automated emails in the correct reps names, there is a lot to be said for assigning owners in HubSpot in the first place.
Furthermore, if the HubSpot Salesforce integration creates a contact or company record in Salesforce before it has been assigned its rightful owner, the integration user will automatically be assigned as the owner. Depending on how things are configured and the timing of events (there can be delays in lead rotation, synchronisation, or in the running of HubSpot workflows and Salesforce processes) this can lead to issues if the incorrect owner is replicated across related objects and then synchronised across both systems.
If you also want all contacts at the same account to be assigned the same owner then you will probably want to switch on HubSpot's sync contact and company owner setting. But beware, doing so introduces some new rules to observe. Basically, unless the company owner is blank, the syncing of owner across objects will only work if the account is changed, not individual contacts. If a contact's owner is changed away from being the same as the company owner, it will not change the company. Whereas if you change the company owner, all associated contacts will update. If you try to replicate a similar system in Salesforce, which is possible, the two can very easily become tangled up with one another.
Explicit vs implicit lifecycle data
Automatic lifecycle changes in HubSpot based on information in Salesforce sounds like a great setting to turn on. Often, however, nothing happens when doing so because the right processes are not in place.
There is no explicit statement of HubSpot's lifecycle stages in Salesforce. Even if you create a custom Salesforce property and map it to HubSpot's, this will not power the automatic lifecycle stage updates.
To drive these updates, the integration monitors the relationship between contacts (not companies/accounts) and opportunities. If a contact is associated with an opportunity in Salesforce, their lifecycle stage will be update to Opportunity in HubSpot. If a contact is associated with an opportunity that becomes closed won, the integration now moves their lifecycle stage to Customer.
This will only work if contacts are properly associated with their opportunities.
Often, reps have a habit of creating opportunities from the accounts tab in Salesforce and not actually associating any contacts with them at all. This may be fine for them, but it prevent the integration from making those automatic updates to the lifecycle and prevents you from closing the sales and marketing loop.
Where to start with campaigns? Campaigns are totally different concepts in HubSpot and Salesforce, and they are hardly compatible at all.
In HubSpot, a campaign is a collection of assets. It is possible to report which contacts were generated by and have come into contact with each campaign.
In Salesforce meanwhile, campaigns are like lists of contacts. They can report who came into contact with an asset, but they can also be used to drive campaigns (like an email list) or create segments within the data.
It is possible to add a specific Salesforce campaign as a hidden field on a HubSpot form. But, campaigns can not be automatically added to HubSpot, they must be entered manually beforehand, nor can the campaign set by a form be made dynamic in any way.
A HubSpot campaign cannot sync to a Salesforce campaign.
Achieving HubSpot Salesforce integration success
At Blend we truly believe in the power of HubSpot and Salesforce, if integrated properly. But proper integration comes with its challenges.
If you are unwilling or unable to make changes to the way your company operates them, especially Salesforce frankly, effective integration may never be possible.
Too often HubSpot is positioned as a solution for problems that seem too hard to solve on Salesforce, and this is never a good strategy. If you can't find the will or the budget to change the way Salesforce is used in your organisation, or to solve issues you have with it, bringing in HubSpot will not make things better.
If you are willing to make changes to the ways you use both systems though, effective integration and the rewards that come with it can be yours.