Reference · Tools
BambooHR
Manage employees, employee documents, company files, and company reports in BambooHR.
The BambooHR node connects BusyBot directly to your BambooHR account, letting you create and update employee records, upload and download employee documents and company files, and export company reports as JSON, CSV, PDF, XLS, or XML. You could, for example, build a workflow that automatically creates a new employee record when someone is hired and attaches their signed offer letter as a document — all without leaving BusyBot.
- Node type
- Action (binary)
- Parameters
- 65
- Outputs
- Output, Error
- Credentials
- BambooHR API
BambooHR
Manage employees, documents, files, and reports in BambooHR
Overview
The BambooHR tool interacts with the BambooHR HR platform API. It supports four resources: Employee (create, get, getAll, update), Employee Document (delete, download, getAll, update, upload), Company File (delete, download, getAll, update, upload), and Company Report (get in JSON/CSV/PDF/XLS/XML formats). Binary operations include downloading employee documents and company files, uploading documents/files via multipart form data, and exporting company reports as binary files. Authentication uses Basic Auth with an API key.
Category: Productivity
Tool Name: bamboo_hr
Version: 1
Appearance: Icon: lucide-Users | Color: #73C41D
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires BambooHR API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Company Report | companyReport |
| Employee | employee |
| Employee Document | employeeDocument |
| File | file |
Operations
Each resource has its own Operation list. Pick the resource first, then the operation.
| Resource | Operation | Value | Description |
|---|---|---|---|
| Employee | Create | create | Create an employee |
| Employee | Get | get | Get an employee |
| Employee | Get Many | getAll | Get many employees |
| Employee | Update | update | Update an employee |
| Employee Document | Delete | delete | Delete an employee document |
| Employee Document | Download | download | Download an employee document |
| Employee Document | Get Many | getAll | Get many employee documents |
| Employee Document | Update | update | Update an employee document |
| Employee Document | Upload | upload | Upload an employee document |
| File | Delete | delete | Delete a company file |
| File | Download | download | Download a company file |
| File | Get Many | getAll | Get many company files |
| File | Update | update | Update a company file |
| File | Upload | upload | Upload a company file |
| Company Report | Get | get | Get a company report |
Parameters
Employee: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| First Name | string | Yes | — | The employee’s first name. |
| Last Name | string | Yes | — | The employee’s last name. |
| Synced with Trax Payroll | boolean | Yes | false | Whether the employee was added to a pay schedule synced with Trax Payroll. |
| Department | string | Yes | — | Department name or ID. Use GET /meta/lists (fieldId=4) to find valid options. (shown when Synced with Trax Payroll is true) |
| Division | string | Yes | — | Division name or ID. Use GET /meta/lists (fieldId=1355) to find valid options. (shown when Synced with Trax Payroll is true) |
| Date of Birth | string | Yes | — | Employee date of birth (YYYY-MM-DD). (shown when Synced with Trax Payroll is true) |
| Employee Number | string | Yes | — | The employee number to record. (shown when Synced with Trax Payroll is true) |
| FLSA Overtime Status | options | Yes | — | The employee’s FLSA overtime status. (shown when Synced with Trax Payroll is true) |
Options: exempt, non-exempt | ||||
| Gender | options | Yes | — | The employee’s gender. (shown when Synced with Trax Payroll is true) |
Options: female, male | ||||
| Hire Date | string | Yes | — | Hire date (YYYY-MM-DD). (shown when Synced with Trax Payroll is true) |
| Location | string | Yes | — | Location name or ID. Use GET /meta/lists (fieldId=18) to find valid options. (shown when Synced with Trax Payroll is true) |
| Marital Status | options | Yes | — | The employee’s marital status. (shown when Synced with Trax Payroll is true) |
Options: single, married, domesticPartnership | ||||
| Mobile Phone | string | Yes | — | The employee’s mobile phone number. (shown when Synced with Trax Payroll is true) |
| Pay Per | options | Yes | — | The period the pay rate applies to. (shown when Synced with Trax Payroll is true) |
Options: hour, day, week, month, quater (the Quarter option — send the value exactly as spelled), year | ||||
| Pay Rate | json | No | {} | Pay rate as JSON object, e.g. { “value”: “20.00”, “currency”: “USD” }. (shown when Synced with Trax Payroll is true) |
| Pay Type | options | Yes | — | How the employee is paid. (shown when Synced with Trax Payroll is true) |
Options: commission, contract, daily, exceptionHourly, hourly, monthly, pieceRate, proRata, salary, weekly | ||||
| Preferred Name | string | Yes | — | The employee’s preferred name. (shown when Synced with Trax Payroll is true) |
| SSN | string | Yes | — | Social Security Number (e.g. 123-45-6789). (shown when Synced with Trax Payroll is true) |
| Address | json | No | {} | Address as JSON: { “address1”: "", “address2”: "", “city”: "", “state”: "", “country”: "" }. (shown when Synced with Trax Payroll is true) |
| Additional Fields | json | No | {} | Additional employee fields as JSON. Supports: department, division, dateOfBirth, employeeNumber, exempt, gender, hireDate, location, maritalStatus, mobilePhone, paidPer, payRate, payType, preferredName, ssn, address, workEmail, workPhone. (shown when Synced with Trax Payroll is false) |
Employee: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee to retrieve. |
| Fields | string | No | all | Comma-separated list of field IDs to retrieve, or “all” to get all fields. Use GET /employees/directory to find available fields. |
Employee: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
Employee: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee to update. |
| Synced with Trax Payroll | boolean | Yes | false | Whether the employee was added to a pay schedule synced with Trax Payroll. |
| Update Fields | json | No | {} | Fields to update as JSON. Supports: firstName, lastName, department, division, dateOfBirth, employeeNumber, exempt, gender, hireDate, location, maritalStatus, mobilePhone, paidPer, payRate, payType, preferredName, ssn, address, workEmail, workPhone. |
Employee Document: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee the document belongs to. |
| File ID | string | Yes | — | ID of the document to delete. |
Employee Document: Download
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee the document belongs to. |
| File ID | string | Yes | — | ID of the document to download. |
| Binary Property | string | No | data | Name of the binary property to write the downloaded file to. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
Employee Document: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee whose documents you want to list. |
| Simplify Output | boolean | No | false | Whether to return a flat file list instead of categorized results. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
Employee Document: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee the document belongs to. |
| File ID | string | Yes | — | ID of the document to update. |
Share with Employee (shareWithEmployee) | boolean | No | true | Whether to share this document with the employee. |
Employee Document: Upload
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Employee ID | string | Yes | — | ID of the employee to attach the document to. |
| Category ID | string | Yes | — | Employee document category ID. Use GET /employees/{id}/files/view/ to find categories. |
| Binary Property | string | Yes | data | Name of the binary property containing the file to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
Share with Employee (share) | boolean | No | true | Whether to share this file with the employee. |
File: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| File ID | string | Yes | — | ID of the company file to delete. |
File: Download
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| File ID | string | Yes | — | ID of the company file to download. |
| Binary Property | string | No | data | Name of the binary property to write the downloaded file to. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
File: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Simplify Output | boolean | No | false | Whether to return a flat file list instead of categorized results. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
File: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| File ID | string | Yes | — | ID of the company file to update. |
Share with Employee (shareWithEmployee) | boolean | No | true | Whether to share this file with employees. |
File: Upload
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Binary Property | string | Yes | data | Name of the binary property containing the file to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
| Category ID | string | Yes | — | Company file category ID. Use GET /files/view/ to find categories. |
Share with Employee (share) | boolean | No | true | Whether to share this file with employees. |
Company Report: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Report ID | string | Yes | — | ID of the report. Hover over the report name on the Reports page to find the ID. |
| Format | options | Yes | JSON | The output format for the report. |
Options: CSV, JSON, PDF, XLS, XML | ||||
| Binary Property | string | No | data | Name of the binary property to write the report file to (used when format is not JSON). Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (hidden when Format is JSON) |
| Duplicate Field Filtering | boolean | No | true | Whether to apply standard duplicate field filtering. |
| Only Current | boolean | No | true | Whether to hide future-dated values from history table fields. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
Results are merged onto the item JSON at the top level — there is no wrapper property. The rest of the incoming item JSON passes through, and binary data from upstream is forwarded.
Most operations produce one output item per input item. The three Get Many operations fan out instead, emitting one output item per result:
| Operation | Output items |
|---|---|
| Employee: Get Many | One item per employee in the directory |
| Employee Document: Get Many | One item per category, or one item per file when Simplify Output is on |
| File: Get Many | One item per category, or one item per file when Simplify Output is on |
Three operations write a file onto the output item’s binary data, under the name you set in Binary Property (default data). The item JSON is unchanged for these, and any incoming binary properties are kept alongside the new one:
- Employee Document: Download — the downloaded document.
- File: Download — the downloaded company file.
- Company Report: Get — only when Format is
CSV,PDF,XLSorXML. With FormatJSONnothing binary is written.
Fields added to the item JSON, per operation:
| Operation | Fields |
|---|---|
| Employee: Create | id — the ID of the new employee |
| Employee: Get | The requested employee fields, merged onto the item |
| Employee: Get Many | Each employee’s directory fields, merged onto its own item |
| Employee: Update | success: true |
| Employee Document: Delete | success: true |
| Employee Document: Download | None — the file is written to the binary property |
| Employee Document: Get Many | Each category (or file) object, merged onto its own item |
| Employee Document: Update | success: true |
| Employee Document: Upload | fileId — the ID of the uploaded document |
| File: Delete | success: true |
| File: Download | None — the file is written to the binary property |
| File: Get Many | Each category (or file) object, merged onto its own item |
| File: Update | success: true |
| File: Upload | fileId — the ID of the uploaded file |
Company Report: Get (Format JSON) | The report object, merged onto the item — or report holding the raw body when the response is not an object |
| Company Report: Get (other formats) | None — the report file is written to the binary property |
Reference the result downstream by expression, e.g. {{ $json.id }} after creating an employee or {{ $json.fileId }} after an upload.
Usage Examples
- Download an employee document from BambooHR
- Upload a PDF to a company file category
- Get all employees from BambooHR directory
- Export a company report as PDF
- Create a new employee in BambooHR
Example Configuration
Create an employee that is not on a Trax Payroll-synced pay schedule, passing the optional fields as JSON:
{
"type": "bamboo_hr",
"parameters": {
"resource": "employee",
"operation": "create",
"firstName": "{{ $json.firstName }}",
"lastName": "{{ $json.lastName }}",
"synced": false,
"additionalFields": {
"department": "Marketing",
"hireDate": "{{ $json.startDate }}",
"workEmail": "{{ $json.email }}",
"location": "New York Office",
"payType": "hourly",
"payRate": { "value": "35.00", "currency": "USD" }
}
}
}
Read the first 50 employees out of the directory, one item each:
{
"type": "bamboo_hr",
"parameters": {
"resource": "employee",
"operation": "getAll",
"returnAll": false,
"limit": 50
}
}
Download an employee document into a named binary property:
{
"type": "bamboo_hr",
"parameters": {
"resource": "employeeDocument",
"operation": "download",
"employeeId": "{{ $json.employeeId }}",
"fileId": "{{ $json.fileId }}",
"binaryPropertyName": "document"
}
}
Upload a file coming from an upstream node into a company file category, without sharing it:
{
"type": "bamboo_hr",
"parameters": {
"resource": "file",
"operation": "upload",
"categoryId": "2",
"binaryPropertyName": "data",
"share": false
}
}
Export a company report as a PDF file:
{
"type": "bamboo_hr",
"parameters": {
"resource": "companyReport",
"operation": "get",
"reportId": "{{ $json.reportId }}",
"format": "PDF",
"binaryPropertyName": "reportFile",
"fd": true,
"onlyCurrent": true
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage BambooHR employees, documents, company files, and reports with binary download/upload support.
Key Notes
-
Resource-Operation Dependencies: The
operationparameter options change completely based on the selectedresource. -
Synced Employee Logic: When creating employees, the
syncedparameter determines whether individual field parameters or theadditionalFieldsJSON object is used. -
Binary Property Handling: File operations require careful handling of
binaryPropertyNameparameters for uploads and downloads. -
Report Format Dependencies: The
binaryPropertyNameparameter is hidden whenformatis “JSON” for company reports. -
Field IDs vs Names: Many parameters accept either field names or IDs - consult the BambooHR API documentation for available options.
Frequently asked questions
What credentials do I need to connect this node to BambooHR?
The node uses the BambooHR API credential type, which authenticates via Basic Auth with an API key. You generate the API key from your BambooHR account settings and supply it alongside your BambooHR subdomain. There is no OAuth flow — just the API key.
When creating an employee, what's the difference between using the 'synced' parameter and not using it?
The `synced` parameter controls how employee field data is submitted. When `synced` is enabled, individual named field parameters are used for the employee record. When it is not enabled, you pass field data through an `additionalFields` JSON object instead. Make sure you pick the mode that matches how you're supplying your data, or fields will be silently ignored.
How do file uploads and downloads work — do I need to configure anything special?
Yes. Upload and download operations for both employee documents and company files rely on a `binaryPropertyName` parameter to identify which binary data slot in the BusyBot workflow carries the file. For uploads, the file must already exist as binary data in your workflow before this node runs. For downloads, the result lands in the binary property name you specify, ready for subsequent nodes to use.
I want to export a company report as a PDF. Will the output be a file I can use downstream?
Yes. When you select a binary format (CSV, PDF, XLS, or XML) for a company report, the node returns the report as a binary file attached to the `binaryPropertyName` you configure. Note that the `binaryPropertyName` field is hidden when you choose JSON format, because JSON reports are returned as structured data rather than a file.
What happens if an operation fails — how do I know something went wrong?
The node has two explicit outputs: Output and Error. Successful results route through Output, while failures route through Error. This lets you wire up a separate error-handling branch in your workflow — for example, sending a Slack alert or logging the failure — rather than having the entire workflow stop on a bad API call.
Build with the BambooHR node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need BambooHR API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.