Bullhorn to HubSpot
Bullhorn combines an ATS and CRM for staffing agencies. The ATS side handles candidates and placements, and the CRM side handles clients and job orders.
Bullhorn data can move into HubSpot, landing mainly in Sales Hub. 5 of 12 mapped objects move directly (ClientCorporation, ClientContact, Opportunity and Note); 4 items need manual work and 2 do not move. Plan roughly 3-6 weeks for a small move and 12-24 weeks for a large one.
Migration checklist for Bullhorn
Three phases, specific to this system. Tick steps off as you go.
Before
0 of 5 doneDuring
0 of 5 doneAfter
0 of 5 doneWhat will it take?
No price list: cost follows volume, custom objects and how much logic must be rebuilt. Answer four quick questions for a planning range.
The three scenarios
Small migration
Up to 10k records across clients, contacts and candidates
Native Data Sync or a scripted import. The ATS is retained.
Mid migration
10k-150k records, with custom objects
Scripted API extraction with dedupe and custom-object design.
Large migration
150k+ records, with multiple divisions and heavy attachments
Phased cutover with a long ATS and HubSpot coexistence.
What moves the number
Timeline ranges are planning estimates, not a quote. A partner confirms scope after discovery.
Access, mapping and limits
Start with how data leaves Bullhorn: what you need to get in, what lands in HubSpot, and what will not.
REST over HTTPS with JSON responses. A legacy SOAP API exists but is not recommended for new work.
OAuth client_id, client_secret and an API username. Customers get these through a Bullhorn support ticket and they are not self-service.
Bullhorn support must issue the API credentials. The API user's entity permissions govern what can be read.
One secondary guide reports published limits of 1,500 requests/minute, 50 active sessions and 100,000 calls/month, scoped to the OAuth Client ID. Access tokens last 10 minutes and refresh tokens are single-use. I have not verified these against Bullhorn's own docs.
Choose your route
How will you move the data?
HubSpot offers an integration for importing records from Bullhorn.
- You need: OAuth client_id, client_secret and an API username. Customers get these through a Bullhorn support ticket and they are not self-service.
- Permission: Bullhorn support must issue the API credentials. The API user's entity permissions govern what can be read.
Native imports often bring over only some data, so check coverage per object in the mapping below.
Export each object, clean it, then import it into HubSpot.
- REST /query and /search endpoints with pagination. Search covers only 9 entities: Candidate, ClientContact, ClientCorporation, JobOrder, Lead, Note, Opportunity, Placement and Task.
- Entity event subscriptions for delta changes, using dateLastModified or INSERTED/UPDATED/DELETED events
- File attachments fetched through fileAttachments and /file endpoints
- Open-source Data Loader and other libraries on GitHub
Limits: One secondary guide reports published limits of 1,500 requests/minute, 50 active sessions and 100,000 calls/month, scoped to the OAuth Client ID. Access tokens last 10 minutes and refresh tokens are single-use. I have not verified these against Bullhorn's own docs.
Migration and sync tools can move more than a plain import. Confirm which objects each one supports before you choose.
Best when volume is high, custom objects are many or automation is heavy. That is the Large scenario: 12-24 weeks, usually phased.
Talk to a partnerWhere each object lands
In Bullhorn
In HubSpot
Hover or tap anything on the left to see where it lands.
| Source object | In HubSpot | Moves | Notes |
|---|---|---|---|
| ClientCorporation | Companies | yes | Parent/child corporations and fee arrangements need association labels or custom properties. |
| ClientContact | Contacts | yes | Keep the client-contact versus candidate distinction with a property. |
| Candidate | Contacts | partial | The Data Sync default maps candidates to Contacts. Decide whether the candidate database belongs in HubSpot at all. |
| Opportunity | Deals | yes | Business-development pipeline stages need rebuilding in HubSpot. |
| Lead | Contacts | partial | Data Sync mirrors Leads into Contacts. Lifecycle stage mapping is a design decision. |
| JobOrder | Custom objects | partial | Jobs arrive as custom-object records under Data Sync. |
| Placement | Custom objects | partial | Placements arrive as custom-object records under Data Sync. Billing fields need design. |
| JobSubmission | Custom objects | manual | This entity joins a Candidate to a JobOrder. I found no documented HubSpot mapping. |
| Note | Notes | yes | Data Sync mirrors Notes. |
| Task | Tasks | yes | Data Sync mirrors Tasks. |
| Appointment | Meetings | partial | Data Sync mirrors Appointments. Whether they land as Meetings is unverified. |
| File attachments (resumes) | Files | manual | Fetch via the /file endpoints and upload to HubSpot Files. Association is scripted. |
What to expect
HubSpot is not an ATS. A general source says it generally cannot replace one, so retain the ATS.
The Bullhorn API includes payroll export and a pay-and-bill entity model. HubSpot has no equivalent.
The decision is made per record. Identity and account ownership go to the CRM, and billing terms stay in the ATS.
A person can be both a Candidate and a ClientContact, and HubSpot keys contacts on email.
Bullhorn allows up to 35 custom objects per entity, per one migration guide.
Data Sync mirrors records and does not create JobOrders from closed-won deals.
Constrain the sync scope or exclude Candidate entities.
Query by externalID before each write and store the Bullhorn ID immediately.
Request credentials at project kickoff.
Re-login on a 401, handle 307 redirects, and never hardcode the restUrl.
Confirm the tier before scoping, or use a scripted import.
Data governance and compliance
Decide what is allowed to move before anything is exported. Tick each gate once it is agreed.
How we researched this page
How much to trust each section, and where it comes from.
The API, auth and entity model are documented by Bullhorn and by secondary guides. The HubSpot connector and object mapping rest on third-party descriptions. I did not visit HubSpot's own docs or Bullhorn's export and compliance docs.
Sources
Related migrations
Frequently asked questions
How do I migrate Bullhorn to HubSpot?
1. Raise a Bullhorn support ticket for OAuth client_id, client_secret and an API user. 2. Inventory entities in scope: ClientCorporation, ClientContact, Candidate, Opportunity, JobOrder and Placement. 3. Export the custom field and custom object definitions for each entity. 4. Decide whether Candidates move to HubSpot, and which ones, for example only active or consented.
What data can move from Bullhorn to HubSpot?
These objects move directly: ClientCorporation, ClientContact, Opportunity, Note and Task. Check the mapping table for partial and manual items.
What does not move from Bullhorn to HubSpot?
Resume parsing and ATS candidate workflow and Job-board distribution, payroll and pay/bill exports. Plan to rebuild or retire these.
How long does a Bullhorn to HubSpot migration take?
Small (Up to 10k records across clients, contacts and candidates): 3-6 weeks. Mid (10k-150k records, with custom objects): 6-12 weeks. Large (150k+ records, with multiple divisions and heavy attachments): 12-24 weeks. These are planning estimates, not a quote.
What access do I need to export from Bullhorn?
OAuth client_id, client_secret and an API username. Customers get these through a Bullhorn support ticket and they are not self-service. Bullhorn support must issue the API credentials. The API user's entity permissions govern what can be read.
Is there a native HubSpot connector for Bullhorn?
Yes. Confirm the supported objects in discovery.
What compliance issues apply when moving Bullhorn data?
Check: Employment and hiring data, Possible payroll and financial data, Possible government ID or right-to-work documents in attachments and Possible diversity or EEO data. Agree consent, retention and access rules before exporting.
Moving Bullhorn into HubSpot?
A network of 153+ tiered HubSpot partners and 1,800+ accounts of experience. Tell us what you are moving and which hub matters most.
Talk to a partner