

Recruitment to HR
Bullhorn to Workday integration: a consultant's first placement as a hire in Workday
With an integration between Bullhorn and Workday, the first placement of a candidate who joins your payroll automatically becomes a pre-hire and hire in Workday, with the start date of paid employment and the salary with its unit. Contractors from Bullhorn become a contingent worker or stay out of Workday, and later placements of the same person do not start a new hire.
What the integration does
Organisations that place consultants or seconded staff through Bullhorn and manage their own workforce in Workday enter the person in Workday by hand after every first placement. With a following assignment HR has to check whether someone is already an employee, and contractors do not belong in Workday as employees.
- The recruiter creates a Placement in Bullhorn for candidate and assignment.
- KoppelHet reads the placement from the event queue and looks at the employee type.
- If the candidate is not yet in Workday, KoppelHet creates a pre-hire and starts the hire or the contract.
- If the candidate is already in Workday, a notice goes to HR instead of a second hire.
- Workday runs its own approvals; a rejection is shown with the reason in the KoppelHet platform.
What to watch for with Bullhorn and Workday
- Bullhorn creates a new Placement for every assignment. Only a candidate's first placement leads to a hire in Workday; with later placements KoppelHet recognises the person by the Bullhorn candidate number in Workday and starts nothing new.
- The employee type is stored per placement in Bullhorn, with values such as Employee or Contractor. Per value we record whether Workday starts a hire, a contingent worker contract or nothing. That way freelancers do not end up as employees in Workday.
- A Placement has a start date for the work and a separate date on which paid employment begins, meant for payroll integrations. KoppelHet uses that second date as the hire date in Workday and only falls back to the work start date when the field is empty.
- The salary on a Placement is per year or per hour, and a separate field says which. In Workday a different compensation plan belongs to each. KoppelHet chooses the plan based on that unit and stops with a notice when the unit is missing.
- The cost centre field on a Placement is the client's cost centre and decides how Bullhorn groups invoices. It is not a cost centre of your own organisation. KoppelHet therefore does not copy it to Workday; your own cost centre follows from the position.
- Candidate and job of a Placement cannot be changed after creation. If a placement is attached to the wrong candidate, the recruiter creates a new one; KoppelHet tells HR that the earlier hire in Workday must be rescinded.
- Bullhorn keeps events in a queue that the integration empties itself, and a previously retrieved batch can be requested again. If KoppelHet is briefly unavailable, placements are not lost but are processed on restart.
How we build and run it
- The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
- Every sync and every error is visible in the functional log; on an error your administrator is notified.
- A change that cannot go through is not half-applied but queued for another attempt.
- KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
- After go-live we manage the integration and adjust it when your process changes.
- The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.
Implementation and price
This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.
A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.
Frequently asked questions
Does Bullhorn have its own Workday integration?
We did not find one in Bullhorn's public documentation; only general automation platforms offer templates. KoppelHet builds on the APIs of both systems.
What happens with a second assignment for the same consultant?
Then no new hire starts. If HR wants to see the assignment in Workday, that can be added later as an extension.
Does the BSN come from Bullhorn?
No. Bullhorn's SSN field is for the US number. HR or payroll adds the BSN.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Bullhorn through the REST API after OAuth 2.0 and a REST login that returns a BhRestToken and its own base URL. An event subscription (type entity, names Placement, eventTypes INSERTED and UPDATED) fills a queue that KoppelHet reads with GET event/subscription and maxEvents; with requestId a batch can be fetched again. Then GET entity/Placement (employmentStartDate, dateBegin, dateEnd, employeeType, salary, salaryUnit, candidate) and entity/Candidate (firstName, middleName, lastName, dateOfBirth).
- Workday through the Staffing web service with an Integration System User. Put_Applicant creates or updates the pre-hire, Hire_Employee hires the pre-hire into a position, headcount or job, and Contract_Contingent_Worker contracts the pre-hire as a contingent worker.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Bullhorn | Field in Workday | Notes |
|---|---|---|
Candidate.id en Placement.id | External_Integration_ID_Data | Recognises a later placement of the same candidate |
Candidate.firstName, middleName en lastName | Legal_Name_Data | namePrefix is a title such as Dr., not a Dutch name prefix |
Candidate.dateOfBirth | Birth_Date | |
Candidate.email en mobile | Email_Address_Data en Phone_Data (privé) | |
Placement.employmentStartDate (anders dateBegin) | Hire_Date | |
Placement.employeeType | Hire_Employee of Contract_Contingent_Worker | Through a table per type |
Placement.salary en salaryUnit | Compensatieplan per jaar of per uur | |
Placement.dateEnd | Einddatum tijdelijk contract | Empty for a permanent placement |
Related
Bullhorn → AFAS Profit
Bullhorn to AFAS integration: a consultant's first placement starts onboarding
Bullhorn → BambooHR
Bullhorn to BambooHR integration: first placement as an employee with a status row in BambooHR
Bullhorn → Dayforce
Bullhorn to Dayforce integration: first placement of an employee as an employee in Dayforce
Bullhorn → Deel
Bullhorn to Deel integration: first placement as a direct employee with a contract in Deel