Personio logoPlanday logo

Leave, absence and time

Personio to Planday integration: employees, custom fields, contract hours, absence and balances from Personio in Planday

With an integration between Personio and Planday, employees, their employee number from a custom field, contract hours and approved absence from Personio reach Planday, on the right portal and department. KoppelHet also keeps the leave balances in Planday equal to Personio, so scheduling works with current hours and balances.

What the integration does

Organisations that run HR in Personio and schedule in Planday often copy employees, the employee number for payroll, contract hours and balances by hand, while scheduling does rely on them.

  1. HR creates an employee in Personio or changes their office, department or weekly hours.
  2. KoppelHet determines the Planday portal and department, and creates the employee with the employee number from Personio as salary identifier.
  3. The weekly hours become hours per month and a contract rule in Planday.
  4. Absence approved in Personio is submitted and approved in Planday; a deleted absence is withdrawn.
  5. Daily, KoppelHet books the difference between the balance in Personio and in Planday as an adjustment on the leave account.
Personio → KoppelHet → PlandaySOURCEPersonioTARGETPlandayKoppelHetmapping · logging · monitoringPersonio → KoppelHet → PlandaySOURCEPersonioTARGETPlandayKoppelHetmapping · logging · monitoring
Out: Employee with name, email and employee number from a custom field · Portal, department and employee group · Hours per month and contract rule · Approved absence and balance adjustments

What to watch for with Personio and Planday

  • The employee number for payroll often sits in a custom field in Personio. KoppelHet sets that number as the salary identifier in Planday, so hours from Planday reach payroll on the right number.
  • Personio holds the weekly hours and the hours of a full-time week per employment. Planday records working hours per month and assigns a contract rule that must exist on the portal. KoppelHet converts the weekly hours into monthly hours and picks the contract rule that fits those hours.
  • Personio sends no notification when an absence is approved, only on creation, moves and deletion. KoppelHet therefore fetches every few minutes the absences changed since the last round and only enters approved ones in Planday. A request whose deletion is still awaiting approval stays in the schedule until it is definitely gone.
  • For an absence Personio indicates whether it starts or ends in the first or second half of the day. For a draft request Planday calculates the registration per day itself based on the leave account. KoppelHet adjusts the first and last day of that draft to the half day from Personio before the request is submitted.
  • Personio recommends keeping Personio as the source of truth for absence. Planday does not take balances as a fixed number, but as an adjustment on an accrued account with its own reference. KoppelHet books the difference with the Personio balance daily, so employees see the same balance in the Planday app without Planday writing back.
  • Planday can make employee fields mandatory. KoppelHet fills those fields, from Personio or with a fixed value per portal, so the mandatory fields the sites use can stay mandatory.
  • On a departure in Personio, KoppelHet gives the last working day to Planday as the last active day and has the shifts after it unassigned. Those shifts become open, so the site sees which shifts still need to be filled after the departure.

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, architecture and compliance

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.

Price indication · Basic

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

Do worked hours from Planday go to Personio?

Not in this integration. Hours go from Planday to payroll; attendance in Personio can be added later as an extension.

What if an office has no department in Planday?

Then the employee is not created and an alert appears in the platform. Once it is added, the next round creates the employee.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • Personio through API v2 with client credentials. Persons and employments (weekly_working_hours, full_time_weekly_working_hours, legal_entity, office, org_units, termination.last_working_day) through webhooks and queries. Absence through GET /v2/absence-periods with updated_at.gte (approval.status PENDING, APPROVED, DELETION_PENDING or SUBSTITUTE_REQUESTED; starts_from.type and ends_at.type FIRST_HALF or SECOND_HALF; timezone_id). Webhooks absence-period.created, absence-period.updated.timerange and absence-period.deleted; no notification on approval.
  • Planday through the Open API with OAuth 2.0 per portal. POST and PUT /hr/v1.0/employees (departments, employeeGroups, workHours per month, contractRulesRuleId, salaryIdentifier, custom_ fields), PUT /hr/v1.0/employees/deactivate/{employeeId} (date, keepShifts). Time off through /absence/v1.0/absencerequests (draft, submit, approve, cancel) and balances through POST /absence/v1.0/accounts/{accountId}/adjustments.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in PersonioField in PlandayNotes
Personeelsnummer (eigen attribuut)salaryIdentifier
first_name, last_namefirstName, lastName
emailuserName en email
office en legal_entityPlanday-portaal en departments
org_units (afdeling of team)employeeGroups
weekly_working_hoursworkHours (per maand) en contractRulesRuleId
Absence period (approval.status APPROVED)Absence request, daarna approve
starts_from.type en ends_at.type (FIRST_HALF, SECOND_HALF)Registraties per dag uit het concept
termination.last_working_daydeactivate met date en keepShifts

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.