Leave, absence and time
Personio to Everhour integration: approved absences from Personio as time off in Everhour
With an integration between Personio and Everhour, absences approved in Personio arrive automatically as time off in Everhour's planner, per day with the right day part. Absence types from Personio become time off types in Everhour, and a deleted absence disappears from Everhour too.
What the integration does
Organisations that manage absences in Personio and plan projects in Everhour calculate with capacity in Everhour that is not there. A holiday or sick leave from Personio has to be entered in the planner again by someone, and that does not always happen.
- An employee requests an absence in Personio and the manager approves it.
- KoppelHet finds the approval in the next run and fetches the breakdown per day.
- In Everhour the absence arrives as approved time off, without weekend days, with half days where Personio has them.
- An absence that was finally deleted in Personio is removed from Everhour by KoppelHet with a reason.
- Weekly, KoppelHet reports users whose capacity in Everhour differs from the contract hours in Personio.
What to watch for with Personio and Everhour
- For absences Personio only reports creation, a changed time range and deletion, not the approval. Everhour would show a request without approval as an open request. KoppelHet therefore asks Personio every few minutes for the absences changed since the previous run, and only books after approval.
- Personio gives a per-day breakdown of what each absence deducts from the balance. A time off entry in Everhour has one day part for the whole period. If it differs per day, for example a half first day followed by full days, KoppelHet creates separate bookings in Everhour, so each day gets the right capacity.
- When an employee asks in Personio to delete an approved absence, that deletion first waits for approval. KoppelHet leaves the time off in Everhour while that request is open, and only removes it once Personio has actually deleted the absence, with that reason added in Everhour.
- An absence without an end date, such as long-term sickness, only has a breakdown up to today in Personio. Everhour requires an end date for every time off entry. KoppelHet books up to a fixed date ahead, moves it forward every week and closes on the real end date once Personio knows it.
- Everhour has its own time off types with a flag for paid or not, and allows new types to be created through the API. Personio often has more absence types than Everhour. KoppelHet records per Personio type which Everhour type it belongs to and only creates a new type when the customer wants that, so the planner does not fill up with types.
- Everhour calculates with a capacity per user in seconds per week, which the API only lets you read. Personio has the weekly hours per employment. KoppelHet compares both every week and puts users with a difference on a list for the Everhour admin, so planning does not use the old capacity after a change in hours.
- An Everhour user can still be invited or pending. Personio already knows the employee by then. KoppelHet keeps absences for such an employee and books them as soon as the user is active in Everhour, so a new colleague's leave is not lost.
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
Do leave balances from Personio come along?
Not in the first version; the planner needs who is off when. Balances as an allocation in Everhour can be added later as an extension.
Do worked hours from Everhour go to Personio?
Not in this integration. Project hours to Personio attendance can be added later as an extension.
Does the project lead also see the type of leave?
Only the Everhour type we link. Sensitive types such as sickness can be booked as a general absent type.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Personio through the API v2 with client credentials. Absences through GET /v2/absence-periods with updated_at and approval.status (PENDING, APPROVED, DELETION_PENDING), starts_from and ends_at with type FIRST_HALF or SECOND_HALF, and GET /v2/absence-periods/{id}/breakdowns per day. Webhooks absence-period.created, absence-period.updated.timerange and absence-period.deleted. Weekly hours from employments.
- Everhour through the REST API on api.everhour.com with X-Api-Key. Users through GET /team/users (status active, invited, pending or removed; capacity in seconds per week). Time off through POST /resource-planner/assignments/time-off (users, startDate, endDate, timeOffType, timeOffPeriod, status approved, includeWeekends false, note), DELETE /resource-planner/assignments/{id} with reason. Types through GET and POST /resource-planner/time-off-types (name, paid).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Personio | Field in Everhour | Notes |
|---|---|---|
email (person) | Everhour-gebruiker (GET /team/users?query=) | |
absence_type | timeOffType | KoppelHet creates missing types in Everhour |
starts_from, ends_at | startDate, endDate | |
starts_from.type / ends_at.type (FIRST_HALF, SECOND_HALF) | timeOffPeriod half-of-day | |
Breakdowns per dag | Eén assignment per afwijkende dag | |
approval.status APPROVED | status approved | |
weekly_working_hours (employment) | Vergelijking met capacity (seconden per week) |
Related
Ashby → Personio
Ashby to Personio integration: hires with hours and entity as new employees in Personio
Bullhorn → Personio
Bullhorn to Personio integration: placements as a person with employment in Personio
Carerix → Personio
Carerix to Personio integration: successful placement as a new employee in Personio
Greenhouse → Personio
Greenhouse to Personio integration: hired candidates as employees in Personio