- Home
- Resources
- Integrations
- BambooHR
BambooHR n8n integrationAutomate BambooHR with n8n.
An HR record never stays in one place for long. The BambooHR n8n integration exposes 15 operations across 4 resources: employees, employee documents, company files and saved reports. No trigger node ships with it, so a schedule or another app starts the run. Built for ops and people teams tired of double entry.
Verified Trustpilot reviews · AI, automation & growth agency
What can the BambooHR n8n integration actually do?
The BambooHR node talks to the BambooHR API from inside a workflow. It creates and updates employee records, reads a single employee or a full list, uploads and downloads documents attached to an employee, manages company-wide files, and pulls any saved company report as CSV, JSON, PDF, XLS or XML. One API key credential covers all 15 operations, and the node ships with n8n, so nothing extra gets installed.
Take a new hire. The offer is signed, the row lands in a hiring sheet, and someone retypes it into BambooHR. With employee.create that step disappears: a Google Sheets node reads the row, the BambooHR node maps first name, last name, hire date and department, and the record exists before the laptop is even ordered.
Second case: onboarding paperwork that nobody chases. A signed policy arrives as an attachment in Gmail, the workflow passes the binary data to employeeDocument.upload, and the file lands in the right category under the right employee, shared with them or kept internal. The same run can post a line in Slack so the people team sees the folder is complete.
Third case: the report somebody asks for every month. companyReport.get pulls a saved report by its ID and returns it as a file in a field of your choosing. Send the PDF to a manager, or take the JSON version and let the next nodes filter it before anything leaves n8n.
When an operation is missing from the list of 15, the HTTP Request node calls any other BambooHR API endpoint and reuses the same predefined credential, so you stay on one set of keys instead of two.
Two things shape how you build. First, there is no BambooHR trigger node, so every workflow starts somewhere else: a Schedule Trigger running each morning, an n8n Webhook called by another service, or the trigger of a different app. Second, list operations page through the API only when Return All is on; leave it off and Limit caps what comes back. Worth reading before you build: the n8n review for how the platform behaves day to day, and the n8n training if expressions are still new.
How do you connect BambooHR to n8n?
- 01
Generate an API key in BambooHR
Authentication runs on a single method: an API key. Follow the authentication section of the BambooHR getting started API documentation to generate one. The key inherits the permissions of the account that creates it, so generate it from a user who can already see the employees, documents and reports the workflow needs to touch.
- 02
Note your subdomain
The credential also asks for a Subdomain: the part between
https://and.bamboohr.comin the address you use every day. If the team logs in athttps://acme.bamboohr.com, the subdomain isacme, nothing more. Typing the full URL there is the fastest way to get a failed call on the first execution. - 03
Save the credential in n8n
In n8n, open the Credentials menu and create a BambooHR credential, which is the stored set of keys a node uses to sign its calls. Paste the subdomain and the API key, save, and every BambooHR node in every workflow picks it from a dropdown. One credential covers all 4 resources, so a second workflow needs no new key.
The 15 BambooHR operations in n8n
The BambooHR node exposes 15 operations across 4 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Download | Upload |
|---|---|---|---|---|---|---|---|
| Company Report | ✓ | ||||||
| Employee | ✓ | ✓ | ✓ | ✓ | |||
| Employee Document | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| File | ✓ | ✓ | ✓ | ✓ | ✓ |
Operations index
Company Report
1 operationGet a company report
companyReport.getWhat you see in n8n
Notes & use cases
Runs a report already saved in BambooHR and returns it to the workflow as a file.
Key parameters
- Report ID: the report number. Hover the report name on the reports page in BambooHR and grab the ID from there.
- Format: CSV, JSON, PDF, XLS or XML. JSON keeps the rows usable by later nodes, PDF suits a report a human just opens.
- Put Output In Field: the name of the output field that carries the binary file data.
- Only Current (Options): hides future dated values from history table fields.
Employee
4 operationsCreate an employee
employee.createWhat you see in n8n
Notes & use cases
Writes a new employee record in BambooHR. The required list is long: the node expects a full personnel file.
Key parameters
- First Name and Last Name: the identity block, usually mapped from the previous node.
- Hire Date and Date of Birth: date values, not free text.
- Social Security Number: a standard United States Social Security number, with dashes (
123-45-6789). - Department Name or ID, Division Name or ID, Location Name or ID: pick from the list, or pass an ID by expression.
- Synced with Trax Payroll: whether the employee joins a pay schedule synced with Trax Payroll.
Get an employee
employee.getWhat you see in n8n
Notes & use cases
Reads one employee record and returns its fields to the workflow, so the rest of the run has something to work with.
Key parameters
- Employee ID: the BambooHR identifier of the person, not their name. It usually comes from an earlier node as
{{ $json.id }}. - Field Names or IDs (Options): the set of fields to pull back. Choose them from the list, or pass IDs through an expression. Asking for three fields instead of the whole file keeps the payload small and the workflow readable.
Get many employees
employee.getAllWhat you see in n8n
Notes & use cases
Returns the employee list, one item per person, which makes it the usual starting point for anything that loops over the whole company.
Key parameters
- Return All: switched on, n8n walks the API pages until every employee is in. Switched off, it stops at Limit.
- Limit: the maximum number of employees to return. Handy while you are still testing, because a run on the full directory is slower and noisier than a run on 5 people.
Update an employee
employee.updateWhat you see in n8n
Notes & use cases
Changes an existing record. The node targets one person and rewrites the fields you pass, leaving the rest of the file alone.
Key parameters
- Employee ID: which record gets written. Get it wrong and you edit the wrong person, so map it from a lookup rather than typing it.
- Marital Status, Mobile Phone, Employee Number: part of the required block on every update.
- Pay Rate, Pay Per and Pay Type: the compensation block, with Pay Type covering salary, hourly, commission, contract and the rest.
- Update Fields: 20 optional fields, including Work Email, Work Phone, City and Country.
Employee Document
5 operationsDelete an employee document
employeeDocument.deleteWhat you see in n8n
Notes & use cases
Removes one document from an employee file. There is no undo step in the workflow, so this one belongs behind a condition.
Key parameters
- Employee ID: the employee whose file holds the document.
- File ID: the identifier of the employee file to remove. Read it from a Get many employee documents step rather than hardcoding it.
Download an employee document
employeeDocument.downloadWhat you see in n8n
Notes & use cases
Fetches the actual content of a document attached to an employee and puts it in the workflow as binary data, ready to attach, forward or store elsewhere.
Key parameters
- Employee ID: whose file the document sits in.
- File ID: which document to pull.
- Put Output In Field: the output field that will carry the binary file data. Downstream nodes read that field name, so keep it consistent across the workflow.
Get many employee documents
employeeDocument.getAllWhat you see in n8n
Notes & use cases
Lists what is filed under one employee, with an item per document. Nothing is downloaded here, only the index.
Key parameters
- Employee ID: the person whose documents get listed.
- Return All and Limit: on, every document comes back; off, the list stops at Limit.
- Simplify: returns a trimmed version of the response instead of the raw API payload, which is enough when you only need names and IDs.
Update an employee document
employeeDocument.updateWhat you see in n8n
Notes & use cases
Edits the metadata around a document already filed under an employee: what it is called, where it sits, who can see it. The content itself stays untouched.
Key parameters
- Employee ID and File ID: the document to edit.
- Employee Document Category Name or ID: the new category for the file, chosen from the list or passed as an ID through an expression.
- Name: the new name of the file.
- Share with Employee: whether the person can see it in their own view.
Upload an employee document
employeeDocument.uploadWhat you see in n8n
Notes & use cases
Sends a file from the workflow into one employee file, which is how documents reach BambooHR without a manual upload.
Key parameters
- Employee ID: the destination file.
- Employee Document Category ID: where the document lands inside that file.
- Input Data Field Name: the input field holding the binary file data. Supported file types are PNG and JPEG, which is worth checking before you wire a scanner or an email attachment into it.
- Share with Employee (Options): whether the upload is visible to the person.
File
5 operationsDelete a file
file.deleteWhat you see in n8n
Notes & use cases
Deletes a company file, meaning one of the shared documents that belongs to the organization rather than to a single employee.
Key parameters
- File ID: the identifier of the file to remove. Nothing else is asked, which is exactly why a wrong ID hurts here.
Download a file
file.downloadWhat you see in n8n
Notes & use cases
Brings a company file into the workflow as binary data. Same idea as the employee version, one level up: the document belongs to the company, not to a person.
Key parameters
- File ID: which company file to pull.
- Put Output In Field: the output field that receives the binary file data.
Get many files
file.getAllWhat you see in n8n
Notes & use cases
Lists the company files, no employee needed. Think of it as the index of the shared document library.
Key parameters
- Return All: on, n8n pages through the whole library; off, it stops at Limit.
- Limit: the ceiling on how many files come back.
- Simplify: a trimmed response instead of the raw payload, which is usually enough to match a name and grab an ID.
Update a file
file.updateWhat you see in n8n
Notes & use cases
Reorganizes a company file without touching its content: new name, new category, different sharing.
Key parameters
- File ID: the company file being edited.
- Category Name or ID: moves the file to a different category, picked from the list or passed as an ID through an expression.
- Name: the new name of the file.
- Share with Employee: whether the file is shared.
Upload a file
file.uploadWhat you see in n8n
Notes & use cases
Pushes a document into the company library, available to the organization instead of to one employee file.
Key parameters
- Input Data Field Name: the input field carrying the binary file data. Supported file types are PNG and JPEG.
- Category Name or ID: where the file lands, from the list or through an expression.
- Share with Employee (Options): whether people see it or only HR does.
Need help automating BambooHR with n8n?
A person reads every message.
