Want more than contacts in HubSpot? HubSpot CRM Sync lets you sync Loxo People & Jobs/Candidates with custom objects in HubSpot. Your sales team sees recruiting records in HubSpot without manual updates. Continue reading below for what to decide before you start, how to connect, how mappings work, and answers to common questions.
What is the HubSpot CRM Sync?
This is a standalone connection between your HubSpot account and your Loxo account, available for agencies upon request with Loxo Support. It is separate from the HubSpot Integration you may already use, which keeps HubSpot contacts and Loxo people up to date. HubSpot CRM Sync is built for custom objects outside of contacts, like Jobs & Candidates, and it can also create contacts in either direction related to those custom objects.
For each object you sync, you choose:
Which Loxo record it covers (a person type, or jobs) and which HubSpot object it pairs with.
The direction: Loxo to HubSpot, HubSpot to Loxo, or both.
Whether the sync always happens, or only when a trigger is met.
Loxo sets all of this up with you, then your agency admin connects HubSpot. After that, the sync runs on its own.
The original HubSpot Integration is not required, and HubSpot CRM sync doesn't turn it off. Keep the original HubSpot Integration connected only if you need contact fields to keep updating after the first sync.
Set up HubSpot CRM sync
Step 0: Decide what you want to sync
Before anything gets connected, work out what you want and tell Loxo. Loxo can't guess the HubSpot name of a field from the Loxo field, so having your answers ready makes setup much faster.
For each object you want to sync, decide the following:
Loxo record: a person type, or jobs.
HubSpot object: contacts, or the name and ID of your custom object.
Direction: HubSpot to Loxo, Loxo to HubSpot, or both. Every field on that object follows the direction you choose, so a single field can't have its own direction.
(Optional) Trigger: for HubSpot to Loxo only, decide if everything syncs or only contacts that meet a condition. Pick one HubSpot contact property by its internal name and the exact value, including capitalization. For example, a property with the internal name deal_status set to Closed Won. One property and one value only.
When the trigger is met: tell Loxo whether contacts are created with the value already set, or whether the value is set later.
Person types: which Loxo person types start the sync, and which person type to add when HubSpot creates the person.
Stages and hiring manager: for jobs, the HubSpot association label for each Loxo workflow stage you use, and the label for the hiring manager.
Note: The trigger can be any single contact property you already use, such as lifecyclestage set to "customer". Unsupported objects such as a deal stage, a company field, or two conditions together can't be the trigger.
Finding a HubSpot internal name
The label you see in HubSpot isn't the value Loxo needs. A property labeled Deal Status might have the internal name deal_status, or something else entirely. To find these keys in HubSpot, you can follow the steps below:
In HubSpot, click the gear icon in the top right.
Select "Properties" from the left menu.
Find the attribute or field you need the Internal Name for and click the hyperlinked field name.
The HubSpot Internal Name will be visible under the ‘Internal Name’ field.
Prepare your HubSpot fields
Create the objects, properties, and association labels you want to use in HubSpot. For jobs, create one association label between your candidate object and your job object for each Loxo workflow stage you use, plus a label for the hiring manager. The hiring manager is the person whose job contact type in Loxo is named Hiring Manager exactly.
Connect HubSpot
Once Loxo has turned on HubSpot CRM sync for your agency, an agency admin can connect it:
Click Settings on the navigation bar.
Click Integrations.
On HubSpot CRM Sync, click Connect.
HubSpot asks you to log in and authorize the Loxo CRM app. Once authorized, the card shows your portal ID and a Disconnect button.
You never type a client ID, secret, or API key. If you disconnect, syncing stops and your HubSpot records stay where they are. If the card is missing, you either aren't an agency admin, or Loxo hasn't turned on HubSpot CRM Sync for your agency yet.
Connection can succeed before Loxo has finished entering your mapping, and nothing syncs until the mapping is in. Records that already existed before you connected aren't imported. The sync covers records created or changed after the connection.
Mapping Fields
Mapping pairs a supported Loxo field with the internal name of a HubSpot property. Each object has its own direction and its own optional trigger. People and jobs are separate objects, so you can set them up differently.
People
You can limit a people mapping to certain Loxo person types, so only those people sync.
For Loxo -> HubSpot, the Loxo fields you can pair with a HubSpot property are:
Email and emails
Phone and phones
LinkedIn URL
Name, first name, and last name
Current title and current company
Location
Owner
Source type
Last contacted
Created date
ID
For HubSpot -> Loxo, the Loxo fields you can pair with a HubSpot property are:
Email
Phone
LinkedIn URL
First name and last name
Current title and current company
Location
Owner
Source type
A text custom field in Loxo can also be an extra row coming into Loxo. It's only written when the person doesn't already have a value, and custom fields aren't sent to HubSpot. Owner, location, and source are also only filled in on the way into Loxo when the person doesn't already have them.
Jobs
Jobs sync from Loxo to HubSpot. The Loxo fields you can pair with a HubSpot property are:
ID
Title
Company name
Job status
Job type
Location
Opened date
Filled date
Published date
Remote work allowed
Salary
Job owners
Jobs also need a HubSpot association label for each Loxo workflow stage you use, and one for the Hiring Manager. Each job a candidate is on becomes a link to that Job record, labeled with the candidate's current stage.
Ongoing Maintenance
Once Loxo has finished your setup, the sync runs on its own. Changes follow your save, but it works from a queue, so if HubSpot is rate limiting requests, things can take a little longer.
Here's one example of how a setup can look. Your objects, trigger, and fields are whatever Loxo enters for your agency, and Closed Won on Deal Status is just an example trigger.
A contact meeting the trigger comes into Loxo, once. If the contact's Deal Status is Closed Won, Loxo creates a person with the Contact type, or adds that type when one person already has the email. The company is created by its exact name and linked as the current company. Later edits in HubSpot stay in HubSpot.
A candidate goes to HubSpot, then updates on each change. Adding the Candidate type creates the Candidate record, and later changes update it. Each job is a link labeled with the current stage. Moving stages replaces the label, and leaving the job removes the link. The Candidate record stays.
A job goes to HubSpot, then updates on each change. Creating a job creates the Job record, and mapped fields like status, opened date, and filled date update later. The hiring manager is linked when that person already has a HubSpot contact. The job is still created without the link if they don't.
A Loxo contact goes to HubSpot, once. Adding the Contact type creates the HubSpot contact, even if the person is also a Candidate. Later Loxo edits stay in Loxo.
A few rules apply to every setup:
After the first sync, Loxo and HubSpot find a contact by its stored HubSpot contact ID. Email is only used when that ID isn't stored yet, and name is never used.
Contact edits after the first sync stay in the system where they were made.
The company name can be mapped onto the person, but HubSpot's Company object isn't synced.
Deleting a person, candidate, or job in Loxo leaves the HubSpot record in place. Removing a candidate from a job removes that stage link.
A Loxo contact with no valid email doesn't get a HubSpot contact.
If two Loxo people share the email on the first link, the sync doesn't pick one. The contact stays out until you resolve the duplicate.
If a candidate's email is mapped to a text property, HubSpot doesn't create a contact from it.
Owner is filled in when the Loxo user's email matches a HubSpot user.
A source name that doesn't already exist in Loxo is skipped.
Frequently Asked Questions
Frequently Asked Questions
I don't see the HubSpot CRM sync card. Where is it?
Make sure you're an agency admin and that Loxo has enabled HubSpot CRM sync for your agency. The original HubSpot Integration is separate, so seeing it doesn't mean the CRM Sync is on.
I connected, but nothing is syncing.
Connect can succeed before Loxo has finished your agency's mapping. HubSpot properties with the names you expect aren't enough on their own, because Loxo has to pair each field. Reach out to Loxo to check where your mapping stands.
New records sync, but older records didn't come over.
That's expected. The sync covers records created or changed after the connection.
A contact that meets my trigger never arrived in Loxo.
Check that the property's value matches what Loxo entered exactly, that the contact has an email, and that the email belongs to one person in Loxo or to none. Closed Won is only an example trigger.
I edited a contact in HubSpot, but Loxo didn't change.
That's expected after the first sync. Ongoing contact edits are the job of the original HubSpot Integration, which may not be enabled.
A candidate has no job, or their stage is old.
Check that the job has synced, that the stage was included when Loxo set up your agency, and that the person is still a candidate on that job.
A job has no hiring manager in HubSpot.
Check that the job contact type is named Hiring Manager and that the person already has a HubSpot contact. The job can exist without the link.
One person has two contacts in HubSpot.
Both HubSpot Integration & HubSpot CRM Sync are probably connected, and the first link used different emails. The original integration may still be editing the contact by its stored ID.
I disconnected and reconnected, and older records are missing.
Reconnecting uses the links already stored. It doesn't import records that existed before your original connection.
