← All integrations
Greenhouse → BambooHR

Greenhouse BambooHR integration

In short

A Greenhouse to BambooHR integration turns each accepted hire in your applicant tracking system into a ready-to-onboard employee record in your HRIS. When a candidate reaches the Hired stage with a resolved offer, the pipeline reads the candidate, offer, job, department, office, and start date from the Greenhouse Harvest API and creates a BambooHR employee with the correct job information, compensation, and status. Done properly it is not a nightly CSV export: it is an event-driven, idempotent pipeline that maps values to BambooHR's managed lists, never creates a duplicate on a re-fired webhook, and deliberately leaves diversity and EEOC data behind in Greenhouse.

What a Greenhouse to BambooHR integration actually does

Greenhouse knows everything about how someone got hired - the job they applied to, the interviews, the approved offer with its start date and salary, the office and department they were recruited into. BambooHR needs a much narrower slice of that, but it needs it correct and on time: a clean employee record with the right job information, the right compensation, and a status that lets onboarding, payroll, and access provisioning begin on day one.

The gap between the two is manual re-keying. Someone in People Operations opens the accepted offer in Greenhouse, opens BambooHR in another tab, and types the new hire in by hand - usually the week before they start, usually under time pressure. A Greenhouse to BambooHR integration closes that gap: when a candidate is genuinely hired, the pipeline reads the offer from Greenhouse and creates the BambooHR employee record for you, mapped to your HRIS conventions.

What data moves

Greenhouse object / eventBecomes in BambooHRNotes
Candidate reaches Hired stageNew employee recordTriggered on the hire event, not on earlier stage moves
Candidate profileName, personal + work email, phoneOnly the fields onboarding actually needs
Resolved offer - start dateHire dateOffer must be approved and resolved first
Resolved offer - compensationCompensation row (pay rate, pay type, pay per, currency)Mapped to BambooHR’s pay-schedule and currency enumerations
Job / roleJob titleFrom the Greenhouse job, not the free-text req name
Department & officeDivision, Department, LocationCrosswalked to BambooHR’s managed lists
Employment typeEmployment status (full-time, part-time, contract)Agreed mapping per your BambooHR setup
Scorecards, EEOC, rejection reasonsDeliberately not syncedRecruiting-only data stays in Greenhouse

The exact field mapping, the department and location crosswalk, and which BambooHR custom fields receive which offer values are agreed once and encoded in the pipeline. After that, nobody re-types a hire.

The details that break naive exports

A CSV export or a generic connector gets you the easy 80% and leaves the expensive, error-prone 20% on your desk:

How we build and run it

We treat this as an event-driven pipeline, not a batch job. A Greenhouse hire event (or a short poll of recently hired candidates as a safety net) is validated, the offer and job are pulled from the Harvest API, values are crosswalked to your BambooHR conventions, and a complete employee record is written in the correct order.

The pipeline is idempotent: the mapping between the Greenhouse candidate and application ID and the BambooHR employee ID means a re-fired webhook or a manual re-run updates the existing person instead of creating a duplicate. It runs on cloud-native, fully EU-hosted AWS infrastructure, so candidate and employee data never leaves the EU - which keeps the AVV / DPA and your GDPR obligations clean, and keeps recruiting-only personal data out of the HRIS by design.

And then we keep it running. Monitoring, alerting, incident response, and - critically - watching for Greenhouse and BambooHR API changes are our responsibility under contract. You get a named owner and an SLA. A new hire appearing in BambooHR stops depending on someone remembering to do it.

When this integration is worth building

If you hire a few people a quarter, a manual entry is genuinely fine and we will tell you so. The integration earns its place when hiring volume is steady, when new starters must be in BambooHR on time for payroll cut-off and IT provisioning, when you run multiple departments, offices, or currencies that make the field mapping fiddly, or when People Ops keeps losing a morning to re-keying offers that a pipeline should have delivered correctly in the first place.

Frequently asked questions

What actually triggers a record being created in BambooHR?
The accepted hire, not merely moving a candidate through stages. We listen for the candidate reaching your Hired milestone in Greenhouse with a resolved, approved offer attached. Only then do we have a real start date and compensation to write. A candidate marked hired without a signed offer is held back until the offer resolves, so BambooHR never gets a half-built record.
Will it create duplicate employees if the hire event fires twice?
No. Greenhouse webhooks can and do re-fire, and someone can re-run a sync. We keep a mapping between the Greenhouse candidate and application ID and the BambooHR employee ID, so a repeated event updates the same record rather than creating a second one. Rehires are handled explicitly against your BambooHR rehire policy instead of silently minting a new person.
Does candidate diversity, EEOC, or interview feedback flow into BambooHR?
No, and that is deliberate. Scorecards, EEOC or diversity self-identification, and rejection reasons stay in Greenhouse. BambooHR only receives the fields an HRIS legitimately needs to onboard and pay someone - name, contact details, job, department, location, start date, and compensation. Keeping recruiting-only personal data out of the HRIS is part of the GDPR scoping we agree up front.
How do you map Greenhouse departments and offices to BambooHR?
BambooHR treats Division, Department, and Location as managed lists with exact values, so free-text from a Greenhouse offer will not just slot in. We agree the crosswalk once - which Greenhouse department and office maps to which BambooHR division, department, and location - and encode it in the pipeline. Anything that does not match a known value is flagged rather than written blind.
Who operates it after go-live?
We do. The pipeline runs on cloud-native, fully EU-hosted infrastructure that we monitor. If Greenhouse or BambooHR changes an API field or an auth flow, that is our problem to fix, not something your People team discovers when a Monday-morning hire fails to appear. You get a named owner, alerting, and an SLA rather than a script someone has to remember to run.

Need this integration built and permanently operated? Tell us which systems connect and what data has to move. Fixed-price scoping quote within 48 hours.

Request a scoping call