BambooHR logoProtime logo

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.

  1. HR records a new employee in BambooHR, at a location that works with Protime.
  2. KoppelHet creates the person in Protime and adds a contract with the weekly hours from BambooHR.
  3. The employee requests leave in Protime and the manager approves it there.
  4. Protime reports the approved days; KoppelHet joins consecutive days and enters them in BambooHR as an approved request.
  5. If the absence changes or lapses in Protime, KoppelHet replaces or cancels the request in BambooHR.
BambooHR → KoppelHet → ProtimeSOURCEBambooHRTARGETProtimeKoppelHetmapping · logging · monitoringBambooHR → KoppelHet → ProtimeSOURCEBambooHRTARGETProtimeKoppelHetmapping · logging · monitoring
Out: Person with employee number, name and start and end date · Contract with contract hours, full-time norm and working days · Department and location as history
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, 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

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 BambooHRField in ProtimeNotes
employeeNumber@employee-number (externe referentie)Contracts attach directly to this number
firstName, lastNamefirstName, lastName
hireDate en terminationDateinServiceDate en outOfServiceDate
standardHoursPerWeekcontractHoursInMinutesWhole hours converted to minutes
location (tabel)fullTimeEquivalentInMinutes en numberOfWorkingDaysPerWeekFull-time norm and working days per location
departmentdepartment-history
locationwork-location-history
Afwezigheidsdefinitie en durationInMinutes (Protime, terug)timeOffTypeId en datesThrough a table per absence code

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.