
Recruitment to HR
Greenhouse to Unit4 HR integration: accepted offer as an employee in the right Unit4 company
With an integration between Greenhouse and Unit4 HR, a candidate whose offer is accepted in Greenhouse automatically becomes an employee in Unit4, in the company that belongs to the job's office and with an employment on the right position. The start date comes from the offer, and Unit4 first checks the data without saving anything.
What the integration does
Organisations that recruit internationally in Greenhouse and manage staff, finance and projects in Unit4 re-enter every hire in Unit4. HR works out per hire which Unit4 company and which position belong to a job, and a moved start date only reaches Unit4 late.
- The recruiter or hiring manager clicks Accept Offer in Greenhouse.
- KoppelHet receives the webhook, checks the signature and looks up the Unit4 company for the job's office.
- Unit4 checks the new employee without saving. If anything is missing, HR gets an alert and Unit4 stays empty.
- After a successful check Unit4 creates the employee, with an employment on the position that belongs to the job.
- If the offer changes afterwards, for example the start date, HR gets an alert to review it in Unit4.
What to watch for with Greenhouse and Unit4 HR
- Greenhouse only sends the hire notification when someone clicks Accept Offer on the candidate. An offer that is still open or gets declined therefore never becomes an employee in Unit4, where a saved employee can only be terminated.
- A changed offer becomes a new version in Greenhouse, and the old version gets the status Deprecated. Unit4 does not allow the start date of an existing employment to be set later. KoppelHet recognises a new offer version with a later start date and puts it to HR instead of changing the employment itself.
- In Greenhouse offices belong to the job, not the candidate. Unit4 works with companies, and an unknown company returns a refusal. Per Greenhouse office we record the Unit4 company; a job with an office without a company stops with an alert.
- Every job in Greenhouse can have a requisition ID from headcount planning. KoppelHet uses that ID to find the Unit4 position, so the new employee lands on the position budget was released for, with the cost centre finance expects.
- Greenhouse retries a failed notification up to seven times, spread over about fifteen hours. Unit4 returns a conflict if the same employee number already exists. KoppelHet stores the Greenhouse candidate number on the employee, so a repeated delivery after an outage does not create a second employee.
- Greenhouse disables a webhook if the test notification fails when it is created, and a disabled webhook sends nothing. KoppelHet confirms that test straight away and alerts HR if a working day passes without a hire arriving while Greenhouse shows one.
- If the organisation has an approval workflow on new employees in Unit4, Unit4 saves the hire but the data waits for an approver. KoppelHet passes such a hire to HR as pending, so nobody enters it from Greenhouse again.
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 the salary from the offer come along?
Not in the first version. HR records grading and salary in Unit4. Taking the salary from the offer can come later as an extension.
What if a candidate does not start after Accept Offer?
Then HR terminates the employee in Unit4; deleting is not possible there. An automatic alert for a withdrawn offer can come later as an extension.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Greenhouse through the hire_candidate webhook (on Accept Offer; application with jobs[] including offices, departments and requisition_id; offer with starts_at and custom_fields), signed with HMAC-SHA256 over the raw body in the Signature header, with Greenhouse-Event-ID and up to 7 attempts. Changes through the Offer created and Offer updated webhooks (status Deprecated on a new version).
- Unit4 ERPx through the Employees API with client ID and client secret. First POST /v1/employees/validate (201 without errors), then POST /v1/employees with companyId, nameInformation, contactPoints, personnelType and employments (positionId, startDate). 202 with an active workflow, 409 for a duplicate personId within the company, 403 for an unknown companyId, 422 for a missing mandatory field.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Greenhouse | Field in Unit4 HR | Notes |
|---|---|---|
candidate.id | Vrij veld of relatie in Unit4 | Recognises a second delivery of the same hire |
first_name en last_name | nameInformation (firstName, surname) | Name prefix kept separate according to the name setup in Unit4 |
addresses en email_addresses | contactPoints | |
jobs[].offices | companyId | Through a table per office |
jobs[].requisition_id | employments (positionId) | Position recorded per requisition |
offer.starts_at | employments (startDate) en dateFrom | |
Eigen veld op het aanbod (soort dienstverband) | personnelType |
Related
Greenhouse → ADP Workforce Now
Greenhouse to ADP Workforce Now integration: accepted offer as an in-progress hire in ADP
Greenhouse → AFAS Profit
Greenhouse to AFAS integration: an accepted offer starts onboarding in AFAS Profit
Greenhouse → BambooHR
Greenhouse to BambooHR integration: hired candidates in BambooHR automatically and completely
Greenhouse → Dayforce
Greenhouse to Dayforce integration: accepted offer as a validated new employee in Dayforce