Recruitment to HR
Greenhouse to Personio integration: hired candidates as employees in Personio
With an integration between Greenhouse and Personio, a candidate hired in Greenhouse becomes a new employee profile in Personio, with name, email, department, workplace, start date and position. KoppelHet also brings along salary, hours, probation and the legal entity from the offer.
What the integration does
Organisations that recruit in Greenhouse and use Personio as HR system often still copy a hire from the signed offer, with salary, contract hours and the right legal entity.
- The recruiter marks the candidate as hired in Greenhouse.
- Greenhouse sends the candidate has been hired webhook.
- KoppelHet fetches the accepted offer with start date and custom fields.
- Personio receives person and employment in one call, with status onboarding.
- The salary arrives in Personio as compensation; an error is shown with the candidate in the KoppelHet platform.
What to watch for with Greenhouse and Personio
- The webhook fires on Mark Candidate as Hired, but also when a Greenhouse automation moves an accepted offer to Hired. A hire that runs automatically this way is therefore also in Personio straight away.
- Personio refuses a second person with the same email address. If a former employee returns through Greenhouse, KoppelHet first looks up the existing person and puts the return to HR.
- Personio wants probation as an end date or a length, never both, and hours as contract hours next to the full-time week. Greenhouse has no fixed fields for these; we add them as custom fields on the offer.
- Greenhouse only returns the offer in Harvest v3 to a user with the right to see salary data. Without that right the list is empty, with no error; KoppelHet tests this during setup.
- Personio wants department and office as an internal ID, Greenhouse gives them as a name with an optional external_id. If you put the Personio ID in that external_id, KoppelHet does not have to search by name and a spelling difference does not block the hire.
- If the start date moves after acceptance, Greenhouse creates a new version of the offer. KoppelHet requests only the latest version in Harvest v3 with current_only, so Personio does not get the date of a deprecated offer.
- Greenhouse repeats a failed notification up to seven times, and every delivery carries a Greenhouse-Event-ID. KoppelHet processes each ID once, so a repeated notification does not lead to a second attempt to create the same person in Personio.
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 Personio run Dutch payroll?
No. Personio supplies data to a Dutch payroll; that is a separate integration.
What if a hire is reversed in Greenhouse?
KoppelHet then deletes nothing in Personio. HR gets an alert and decides.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- KoppelHet reads Greenhouse through the hire_candidate webhook (HMAC SHA-256 in the Signature header) and Harvest v3 (client credentials through auth.greenhouse.io/token, GET /v3/offers with starts_on and custom_fields). Harvest v1 and v2 were removed as of 31 August 2026.
- To Personio through POST /v2/persons (scope personio:persons:write) with first_name, last_name, email and an employment with employment_start_date, status ONBOARDING, position.title, org_units, office, legal_entity, weekly_working_hours, full_time_weekly_working_hours and probation_end_date. Salary through the compensation API.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Greenhouse | Field in Personio | Notes |
|---|---|---|
Candidate first name en last name | first_name en last_name | |
Candidate email | email | Unique in Personio |
Job department | org_units (type department) | |
Job office | office | |
offer.starts_on | employment_start_date | |
Job name | position.title | |
Uren (custom field op het aanbod) | weekly_working_hours | |
Entiteit (custom field op de vacature) | legal_entity | |
Salaris en valuta (custom field op het aanbod) | Compensatie in Personio |
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