What are the associations or connectors between SalesForce and HubSpot records?

Top Contributor

Hi there! I understand that the HubSpot <> SalesForce integration is pretty robust. My concern is that a lot of duplicate records will be created. In order to make sure this does not happen, I'm hoping to learn more about how records are associated between the two platforms. Is there a unique ID that's created when records are synced between the two or are records associated by fields like "email".




If a contact is created in HubSpot and therefore created in SalesForce, what is the common identifier the two systems will use to keep the two records in sync? Also, I have the same question for Leads, Opportunities, Accounts, and for all of these in the reverse direction...a record is created in SalesForce and then created in HubSpot. 

1 Reply 1
Key Advisor

Hi, @taylorfriss. The good news is that the connector is designed to avoid the unnecessary creation of duplicates in Salesforce. The bad news is that existing duplicates in Salesforce have the potential to muck this up. 


Whether you're initially syncing a contact from Salesforce to HubSpot or vice versa, the email is used as the unique identifier. If a contact is being automatically added to HubSpot from Salesforce, the litmus is easy: does the newly-created Salesforce lead or contact have a valid and unique email matching an existing HubSpot contact? If so, it syncs to that existing contact; if not, it creates one in your portal instead. 


If you have a brand-new contact in HubSpot eligible to sync to Salesforce (with or without an inclusion list), HubSpot will look in Salesforce for an exact match on emails. It starts with contacts first, then leads if no match on contacts. As soon as it finds any match on email, HubSpot syncs to that Salesforce lead or contact. 


What you don't see during this process, behind the scenes, is the connector linking these two records together in a way you can't see. With previous versions of the connector, there was a custom object (HubSpot Intelligence), which created a single custom HubSpot Intelligence record, associated with that lead or contact, and also associated to the HubSpot contact. 


With the latest version of the connector, the same behavior happens, only there's no more custom HubSpot Intelligence object behind the scenes, or no actual record you can use as validation. You just have to trust the connector knows which records are which.

For the most part, the connector does a pretty ding-dang good job of this. However, as email is used as the unique identifier, that presents a very,. very real practical challenge: What happens if duplicate emails exist in Salesforce? 


If your Salesforce org has duplicates - like it, hate it, or megahate it, most orgs are impacted this way - then editing a record with a duplicate email changes the associated Salesforce record on the HubSpot contact. This is most easily spotted by going through an individual HubSpot contact's history. Search for Lead ID or Contact ID, and if you see multiple Lead or Contact IDs writing to the history, then someone's been editing duplicates. 


What sort of sadists would build such functionality into the connector? you ask, and that's a fair question. As contacts in your Marketing Hub can't be duplicated, this makes it difficult to be able to build a connector flexible enough for this. In order to ensure no interruptions with syncs when a duplicate is edited, the association change is sort of a lesser of two evils. Does that conflict with some org's use cases? Absolutely. But this is the best way to accommodate all orgs which use the connector. 

Depending on the prevalence of duplicates in your Salesforce org, this can be anywhere from a trivial issue, to something that makes you invoke every single expletive you can think of. Unfortunately, there's no way around that connector behavior. If you have not started material work on the connector, a first order of business should be cleaning up the duplicates in Salesforce - even if that means offloadign their email address into a custom field with an email data type. [The connector ignores any custom email fields with regards to its deduplication, so changing up emails on dupes is one quick-and-dirty way to deal with a large volume of these.]

Brad Mampe, Salesforce Analyst, Fidelity
I'm probably wrong. I may not be right about that.