Reference · Tools

BambooHR

Manage employees, employee documents, company files, and company reports in BambooHR.

Action (binary) Productivity v1 Binary data

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires BambooHR API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Company ReportcompanyReport
Employeeemployee
Employee DocumentemployeeDocument
Filefile

Operations

Each resource has its own Operation list. Pick the resource first, then the operation.

ResourceOperationValueDescription
EmployeeCreatecreateCreate an employee
EmployeeGetgetGet an employee
EmployeeGet ManygetAllGet many employees
EmployeeUpdateupdateUpdate an employee
Employee DocumentDeletedeleteDelete an employee document
Employee DocumentDownloaddownloadDownload an employee document
Employee DocumentGet ManygetAllGet many employee documents
Employee DocumentUpdateupdateUpdate an employee document
Employee DocumentUploaduploadUpload an employee document
FileDeletedeleteDelete a company file
FileDownloaddownloadDownload a company file
FileGet ManygetAllGet many company files
FileUpdateupdateUpdate a company file
FileUploaduploadUpload a company file
Company ReportGetgetGet a company report

Parameters

Employee: Create

ParameterTypeRequiredDefaultDescription
First NamestringYesThe employee’s first name.
Last NamestringYesThe employee’s last name.
Synced with Trax PayrollbooleanYesfalseWhether the employee was added to a pay schedule synced with Trax Payroll.
DepartmentstringYesDepartment name or ID. Use GET /meta/lists (fieldId=4) to find valid options. (shown when Synced with Trax Payroll is true)
DivisionstringYesDivision name or ID. Use GET /meta/lists (fieldId=1355) to find valid options. (shown when Synced with Trax Payroll is true)
Date of BirthstringYesEmployee date of birth (YYYY-MM-DD). (shown when Synced with Trax Payroll is true)
Employee NumberstringYesThe employee number to record. (shown when Synced with Trax Payroll is true)
FLSA Overtime StatusoptionsYesThe employee’s FLSA overtime status. (shown when Synced with Trax Payroll is true)
Options: exempt, non-exempt
GenderoptionsYesThe employee’s gender. (shown when Synced with Trax Payroll is true)
Options: female, male
Hire DatestringYesHire date (YYYY-MM-DD). (shown when Synced with Trax Payroll is true)
LocationstringYesLocation name or ID. Use GET /meta/lists (fieldId=18) to find valid options. (shown when Synced with Trax Payroll is true)
Marital StatusoptionsYesThe employee’s marital status. (shown when Synced with Trax Payroll is true)
Options: single, married, domesticPartnership
Mobile PhonestringYesThe employee’s mobile phone number. (shown when Synced with Trax Payroll is true)
Pay PeroptionsYesThe 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 RatejsonNo{}Pay rate as JSON object, e.g. { “value”: “20.00”, “currency”: “USD” }. (shown when Synced with Trax Payroll is true)
Pay TypeoptionsYesHow the employee is paid. (shown when Synced with Trax Payroll is true)
Options: commission, contract, daily, exceptionHourly, hourly, monthly, pieceRate, proRata, salary, weekly
Preferred NamestringYesThe employee’s preferred name. (shown when Synced with Trax Payroll is true)
SSNstringYesSocial Security Number (e.g. 123-45-6789). (shown when Synced with Trax Payroll is true)
AddressjsonNo{}Address as JSON: { “address1”: "", “address2”: "", “city”: "", “state”: "", “country”: "" }. (shown when Synced with Trax Payroll is true)
Additional FieldsjsonNo{}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

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee to retrieve.
FieldsstringNoallComma-separated list of field IDs to retrieve, or “all” to get all fields. Use GET /employees/directory to find available fields.

Employee: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)

Employee: Update

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee to update.
Synced with Trax PayrollbooleanYesfalseWhether the employee was added to a pay schedule synced with Trax Payroll.
Update FieldsjsonNo{}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

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee the document belongs to.
File IDstringYesID of the document to delete.

Employee Document: Download

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee the document belongs to.
File IDstringYesID of the document to download.
Binary PropertystringNodataName 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

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee whose documents you want to list.
Simplify OutputbooleanNofalseWhether to return a flat file list instead of categorized results.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)

Employee Document: Update

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee the document belongs to.
File IDstringYesID of the document to update.
Share with Employee (shareWithEmployee)booleanNotrueWhether to share this document with the employee.

Employee Document: Upload

ParameterTypeRequiredDefaultDescription
Employee IDstringYesID of the employee to attach the document to.
Category IDstringYesEmployee document category ID. Use GET /employees/{id}/files/view/ to find categories.
Binary PropertystringYesdataName 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)booleanNotrueWhether to share this file with the employee.

File: Delete

ParameterTypeRequiredDefaultDescription
File IDstringYesID of the company file to delete.

File: Download

ParameterTypeRequiredDefaultDescription
File IDstringYesID of the company file to download.
Binary PropertystringNodataName 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

ParameterTypeRequiredDefaultDescription
Simplify OutputbooleanNofalseWhether to return a flat file list instead of categorized results.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)

File: Update

ParameterTypeRequiredDefaultDescription
File IDstringYesID of the company file to update.
Share with Employee (shareWithEmployee)booleanNotrueWhether to share this file with employees.

File: Upload

ParameterTypeRequiredDefaultDescription
Binary PropertystringYesdataName 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 IDstringYesCompany file category ID. Use GET /files/view/ to find categories.
Share with Employee (share)booleanNotrueWhether to share this file with employees.

Company Report: Get

ParameterTypeRequiredDefaultDescription
Report IDstringYesID of the report. Hover over the report name on the Reports page to find the ID.
FormatoptionsYesJSONThe output format for the report.
Options: CSV, JSON, PDF, XLS, XML
Binary PropertystringNodataName 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 FilteringbooleanNotrueWhether to apply standard duplicate field filtering.
Only CurrentbooleanNotrueWhether to hide future-dated values from history table fields.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum 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:

OperationOutput items
Employee: Get ManyOne item per employee in the directory
Employee Document: Get ManyOne item per category, or one item per file when Simplify Output is on
File: Get ManyOne 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, XLS or XML. With Format JSON nothing binary is written.

Fields added to the item JSON, per operation:

OperationFields
Employee: Createid — the ID of the new employee
Employee: GetThe requested employee fields, merged onto the item
Employee: Get ManyEach employee’s directory fields, merged onto its own item
Employee: Updatesuccess: true
Employee Document: Deletesuccess: true
Employee Document: DownloadNone — the file is written to the binary property
Employee Document: Get ManyEach category (or file) object, merged onto its own item
Employee Document: Updatesuccess: true
Employee Document: UploadfileId — the ID of the uploaded document
File: Deletesuccess: true
File: DownloadNone — the file is written to the binary property
File: Get ManyEach category (or file) object, merged onto its own item
File: Updatesuccess: true
File: UploadfileId — 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage BambooHR employees, documents, company files, and reports with binary download/upload support.

Key Notes

  1. Resource-Operation Dependencies: The operation parameter options change completely based on the selected resource.

  2. Synced Employee Logic: When creating employees, the synced parameter determines whether individual field parameters or the additionalFields JSON object is used.

  3. Binary Property Handling: File operations require careful handling of binaryPropertyName parameters for uploads and downloads.

  4. Report Format Dependencies: The binaryPropertyName parameter is hidden when format is “JSON” for company reports.

  5. 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 BusyBot

Last updated . Spotted something wrong? Tell us.