
Recruitment to HR
Bullhorn to Personio integration: placements as a person with employment in Personio
With an integration between Bullhorn and Personio, a candidate's first approved placement becomes a person with employment in Personio, in onboarding status, with start date, weekly hours, entity and an internal or external type. A later placement of the same person does not create a new person, and a changed placement goes to HR as a notice.
What the integration does
Organisations that place people through Bullhorn and use Personio as their HR system copy every new colleague into Personio by hand. Bullhorn gives hours per day and the client's cost centre, Personio wants hours per week and your own cost centre, and HR converts that for every placement.
- The recruiter sets the Placement in Bullhorn to approved.
- KoppelHet reads the placement from the event queue and checks whether the candidate is already in Personio.
- KoppelHet converts the hours and determines entity, type and cost centre with a table.
- Person and employment are created in Personio in onboarding status.
- If the placement changes afterwards, HR gets a notice instead of an automatic change.
What to watch for with Bullhorn and Personio
- Personio has an internal or external type for an employment. KoppelHet translates the employee type in Bullhorn, with values such as Employee or Contractor, per value to that type, so a freelancer does not count as an own employee in Personio.
- Bullhorn records the number of hours per day per placement, Personio the contract hours per week with two decimals. KoppelHet multiplies by the number of working days per week in the table and adds the entity's full-time hours, so the part-time factor is right.
- The cost centre field on a Bullhorn placement belongs to the client and drives invoice grouping. Personio spreads an employee over your own cost centres with a weighting that adds up to 100. KoppelHet therefore does not take the client field, but sets your own cost centre from the table at 100.
- An approved placement can no longer be edited directly in Bullhorn; a change goes through a change request with approval and can have a later effective date for pay. KoppelHet therefore does not update Personio automatically, but tells HR what changed after approval.
- A candidate can have several consecutive placements in Bullhorn, and Personio allows an email address for one person only. KoppelHet only creates a person on the first placement and recognises later placements by the Bullhorn candidate number in a custom attribute.
- For a temporary placement Bullhorn has an end date and sometimes a duration in weeks; for a permanent placement the end date is empty. When there is an end date, KoppelHet creates a task for HR to record the contract end in Personio, because the assignment and the contract do not always run in parallel.
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 Personio integration?
We did not find one in the public documentation of Bullhorn or Personio. KoppelHet builds on the APIs of both.
Do contractors also go to Personio?
Only if you want, and then as an external employee. We record that per type in Bullhorn.
Does Personio run Dutch payroll?
No. Personio supplies data to a Dutch payroll; that is a separate integration.
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 with BhRestToken. Event subscription on Placement (INSERTED and UPDATED), read with GET event/subscription. Placement fields status, employeeType, employmentStartDate, dateBegin, dateEnd, durationWeeks, hoursPerDay and costCenter (Client Cost Center); changes through PlacementChangeRequest with dateEffective. Candidate firstName, lastName and email.
- Personio through POST /v2/persons (scope personio:persons:write; first_name and last_name required; email unique; employment with status ONBOARDING, employment_start_date, type INTERNAL or EXTERNAL, weekly_working_hours, full_time_weekly_working_hours, legal_entity and cost_centers weighted to 100; custom_attributes with id and value).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Bullhorn | Field in Personio | Notes |
|---|---|---|
Candidate.id | Eigen attribuut in Personio | Recognises a later placement |
Candidate.firstName en lastName | first_name en last_name | |
Candidate.email | email | Unique in Personio |
Placement.employmentStartDate (anders dateBegin) | employment_start_date | |
Placement.hoursPerDay | weekly_working_hours | Times the agreed number of working days |
Placement.employeeType | type (INTERNAL of EXTERNAL) | Through a table per type |
Bullhorn-kantoor van de plaatsing | legal_entity en cost_centers | Own cost centre with weighting 100 |
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