
Leave, absence and time
BambooHR to Protime integration: employees and contract from BambooHR in Protime, approved absence back as time off
With an integration between BambooHR and Protime, every employee of a location that clocks in Protime appears automatically with a contract based on the weekly hours from BambooHR. Absence approved in Protime goes back to BambooHR as an approved time off request, so the balance in BambooHR is right and the manager does not have to approve twice.
What the integration does
Organisations that keep personnel data in BambooHR and have employees clock and request leave in Protime retype new colleagues into Protime. Leave approved in Protime is missing from BambooHR, so the balance there is too high and absence reports are wrong.
- HR records a new employee in BambooHR, at a location that works with Protime.
- KoppelHet creates the person in Protime and adds a contract with the weekly hours from BambooHR.
- The employee requests leave in Protime and the manager approves it there.
- Protime reports the approved days; KoppelHet joins consecutive days and enters them in BambooHR as an approved request.
- If the absence changes or lapses in Protime, KoppelHet replaces or cancels the request in BambooHR.
Back: Approved absence as a time off request with an amount per day
What to watch for with BambooHR and Protime
- Protime only lets an integration read absence, while BambooHR accepts a time off request with the status approved. Leave is therefore requested and approved at the clock in Protime, and BambooHR receives the outcome. BambooHR then sends no approval notifications, so the manager does not get a second request.
- BambooHR only accepts the status approved from an owner or admin, or from a user with rights to that employee's time off type; others get a 403. The user behind KoppelHet's API key gets those rights, and at the start we agree which time off types they may book.
- Protime delivers absence per day, with a day part and a duration in minutes. BambooHR expects one request with an amount per day. KoppelHet joins consecutive days with the same absence code into one request and sets the hours per day, or half a day for leave counted in days.
- If approved absence in Protime changes later, KoppelHet replaces the request in BambooHR with a new one that refers to the previous one. BambooHR then cancels the previous one itself, so no double leave is deducted from the balance. If the absence disappears in Protime, KoppelHet cancels the request.
- Protime asks for the contract hours, the hours of a full-time week and the number of working days per week on a contract. BambooHR only has weekly hours as a whole number by default. The full-time norm and working days therefore come from a table per location or from a custom field in BambooHR, which we settle at the start.
- A contract in Protime can refer to a person through the employee number as an external reference. KoppelHet uses the employee number from BambooHR for that, so a contract never ends up with the wrong person, even if the employee was only just created in Protime.
- Protime retries a webhook five times within up to 72 hours and then disables it. BambooHR retries its own webhook only five times within a few hours. KoppelHet therefore compares both sides itself every day, so a missed notification does not cost any leave or employee.
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
Can employees keep requesting leave in BambooHR?
Not if it must also be in Protime, because Protime does not accept absence through the API. Whoever clocks in Protime also requests leave there; BambooHR receives the result.
What happens to absence that is not yet approved in Protime?
It stays in Protime. Only absence with the status approved goes to BambooHR, so the balance there does not fluctuate.
Do clocked hours go to BambooHR?
No. Clocked hours go from Protime to payroll. That can be added later as an extension if you want it differently.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- BambooHR through the REST API with an API key. Employees through event-based webhooks (employee.created, employee.updated with monitor fields) and the fields employeeNumber, hireDate, terminationDate, location, department and standardHoursPerWeek. Absence back with PUT /api/v1/employees/{employeeId}/time_off/request (status approved, start, end, timeOffTypeId, dates per day, previousRequest to supersede); cancelling through the status change to canceled.
- Protime through the Protime API (v1) with OAuth 2.0 client credentials. POST people, POST contracts (contractHoursInMinutes and fullTimeEquivalentInMinutes between 1 and 5999, numberOfWorkingDaysPerWeek 0 to 7, numberOfDaysInContractPeriod a multiple of 7, person through @employee-number) and the history for department and work-location. Absence is read through webhooks on absences (changeType InsertOrUpdate or Delete, HMAC-SHA256, changeVersion) with dayPart First or Second and approvalLevel Approved.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in BambooHR | Field in Protime | Notes |
|---|---|---|
employeeNumber | @employee-number (externe referentie) | Contracts attach directly to this number |
firstName, lastName | firstName, lastName | |
hireDate en terminationDate | inServiceDate en outOfServiceDate | |
standardHoursPerWeek | contractHoursInMinutes | Whole hours converted to minutes |
location (tabel) | fullTimeEquivalentInMinutes en numberOfWorkingDaysPerWeek | Full-time norm and working days per location |
department | department-history | |
location | work-location-history | |
Afwezigheidsdefinitie en durationInMinutes (Protime, terug) | timeOffTypeId en dates | Through a table per absence code |
Related
Ashby → BambooHR
Ashby to BambooHR integration: hire, changed start date and employment status in BambooHR
BambooHR → 4PS Construct
BambooHR to 4PS Construct integration: employees from BambooHR in the 4PS company of their location
BambooHR → Active Directory
BambooHR to Active Directory integration: accounts in your own domain from HR
BambooHR → ADP iHCM
BambooHR to ADP iHCM integration: salary, bonuses and commissions to Dutch payroll