BambooHR Component
Manage employees and HR data in the BambooHR platform
Component key: bamboohr · · Changelog ↓Description
BambooHR is a comprehensive human resources software platform that helps companies manage their HR processes effectively. BambooHR's services include an applicant tracking system, employee benefits tracker, time tracking, and employee records management. This component allows you to interact with the BambooHR API.
API Documentation
This component was built using the BambooHR API Documentation
Connections
API Key
key: apiKeyBamboo HR API keys can be used for testing an integration, but for production integrations, please use OAuth 2.0.
To generate an API key, log in to Bamboo HR, click your user profile image on the upper-right and then click API Keys. Click Add New Key, and take note of the API key that is generated - it will be a ~40 character alphanumeric string.
| Input | Notes | Example |
|---|---|---|
| API Key | Your BambooHR API key. You can generate this in your BambooHR account settings. | |
| Company Domain | The MYCOMPANY portion of your https://MYCOMPANY.bamboohr.com instance |
Triggers
Webhook
Receive and validate webhook requests from BambooHR for webhooks you configure. | key: bamboohrTrigger
The BambooHR webhook trigger receives and validates incoming webhook requests from BambooHR. This trigger performs HMAC signature verification to ensure that payloads originate from BambooHR and have not been tampered with in transit.
For details on configuring webhooks in BambooHR, refer to the BambooHR Webhooks documentation.
How It Works
When BambooHR sends a webhook request, this trigger:
- Extracts the
x-bamboohr-signatureandx-bamboohr-timestampheaders from the incoming request - Computes an HMAC-SHA256 hash using the request body concatenated with the timestamp and the stored signing secret
- Compares the computed hash against the signature provided in the header
- If the signatures match, the payload is accepted and passed to the flow for processing
- If the signatures do not match, the request is rejected with an error
The signing secrets are stored in cross-flow state and may include multiple keys to support secret rotation.
Returned Data
Example Payload
{
"headers": {
"x-bamboohr-signature": "abc123def456...",
"x-bamboohr-timestamp": "1700000000",
"content-type": "application/json"
},
"body": {
"data": {
"employees": [
{
"id": "123",
"action": "Updated",
"changedFields": ["firstName", "lastName"]
}
]
}
}
}
Notes
- The trigger does not have configurable inputs. Webhook signing secrets are managed through cross-flow state.
- Multiple signing secrets are supported, allowing for seamless secret rotation without downtime.
- If none of the stored signing secrets produce a matching signature, the request is rejected to protect against unauthorized or tampered payloads.
Data Sources
Select Company File
Select a company file from a list of company files. | key: selectCompanyFile | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection |
Example Payload for Select Company File⤓
Select Employee
Select an employee from a list of employees. | key: selectEmployee | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection |
Select Employee File
Select an employee file from a list of files for the specified employee. | key: selectEmployeeFile | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 |
Example Payload for Select Employee File⤓
Actions
Add Employee
Add a new employee | key: addEmployee
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee Fields | The names of the fields and their values to use when creating/updating a record. Possible fields are: address1, address2, age, bestEmail, birthday, city, country, dateOfBirth, department, division, employeeNumber, employmentHistoryStatus, ethnicity, exempt, firstName, fullName1, fullName2, fullName3, fullName4, fullName5, displayName, gender, hireDate, originalHireDate, id, jobTitle, lastChanged, lastName, location, maritalStatus, middleName, mobilePhone, nationality, payGroup, payRate, payRateEffectiveDate, payType, paidPer, paySchedule, payFrequency, includeInPayroll, timeTrackingEnabled, ssn, sin, standardHoursPerWeek, state, stateCode, status, supervisor, supervisorEmail, terminationDate, workEmail, workPhone, zipcode | |
| First Name | ||
| Last Name |
Example Payload for Add Employee⤓
Add Table Row
Adds a row to the specified table for an employee | key: addEmployeeTableRow
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 | |
| Table Fields | The names of the fields and their values to use when creating/updating a row in a table. Use the "List Tabular Fields (Tables)" action to list possible field names for a table. | |
| Table Name (Alias) | jobInfo |
Example Payload for Add Table Row⤓
Create Company File Category
Create a new company file category (folder) | key: addCompanyFileCategory
| Input | Notes | Example |
|---|---|---|
| Category Name | A new category | |
| Connection |
Create Employee File Category
Create a new employee file category (folder) | key: addEmployeeFileCategory
| Input | Notes | Example |
|---|---|---|
| Category Name | A new category | |
| Connection |
Create Webhook
Create a new webhook | key: createWebhook
| Input | Notes | Example |
|---|---|---|
| Allow Duplicates? | By default this action checks if a webhook with this callback and sheet ID already exists. If it does, this action does not configure a new webhook. Toggle this to true to allow the creation of duplicate webhooks. | false |
| Connection | ||
| Fields to Monitor | Select one or more fields to trigger this webhook on. This can be any of the following: firstName, lastName, hireDate, department, middleName, dateOfBirth, ssn, address1, address2, city, state, zipcode, mobilePhone, homePhone, workEmail, jobTitle, location, gender, maritalStatus, payType, eeo, status, workPhone, workPhoneExtension, employeeNumber, ethnicity, division, homeEmail, preferredName, employeeStatusDate, country, payChangeReason, payRateEffectiveDate, exempt, twitterFeed, facebook, linkedIn, pinterest, acaStatus, payPer, originalHireDate, paySchedule, instagram, allergies, dietaryRestrictions, hoursPerPayCycle | |
| Webhook Name | ||
| Fields to send to Webhook | A list of fields to post to the webhook url. This can be any of the following: firstName, lastName, hireDate, department, middleName, dateOfBirth, ssn, address1, address2, city, state, zipcode, mobilePhone, homePhone, workEmail, jobTitle, location, gender, maritalStatus, payType, eeo, status, workPhone, workPhoneExtension, employeeNumber, ethnicity, division, homeEmail, preferredName, employeeStatusDate, country, payChangeReason, payRateEffectiveDate, exempt, twitterFeed, facebook, linkedIn, pinterest, acaStatus, payPer, originalHireDate, paySchedule, instagram, allergies, dietaryRestrictions, hoursPerPayCycle | |
| Callback URL | Where the data should be sent |
Delete Company File
Delete an company file | key: deleteCompanyFile
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| File ID |
Delete Employee File
Delete an employee file | key: deleteEmployeeFile
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee File ID | ||
| Employee ID | 42 |
Delete Instance Webhooks
Delete all BambooHR webhooks that point to a flow in this instance | key: deleteInstanceWebhooks
| Input | Notes | Example |
|---|---|---|
| Connection |
Delete Webhook
Delete a webhook by ID | key: deleteWebhookById
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Webhook ID |
Get an Employee's Table
Get a specific table associated with an employee | key: getEmployeeTable
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 | |
| Table Name (Alias) | jobInfo |
Example Payload for Get an Employee's Table⤓
Get Company File
Get an company file | key: getCompanyFile
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| File ID |
Get Employee
Get an Employee | key: getEmployee
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 |
Example Payload for Get Employee⤓
Get Employee File
Get an employee file | key: getEmployeeFile
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee File ID | ||
| Employee ID | 42 |
Get Time Off Requests
Gets Employee Time Off Requests for a given date range. | key: getTimeOffRequests
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 | |
| End Date | YYYY-MM-DD | |
| Start Date | YYYY-MM-DD | |
| Time Off Record ID | 42 | |
| Status |
Example Payload for Get Time Off Requests⤓
List Company Files
List all company categories and files | key: listCompanyFiles
| Input | Notes | Example |
|---|---|---|
| Connection |
Example Payload for List Company Files⤓
List Employee Files
List all employee categories and files | key: listEmployeeFiles
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 |
Example Payload for List Employee Files⤓
List Employees
Get the employee directory | key: getEmployeeDirectory
| Input | Notes | Example |
|---|---|---|
| Connection |
Example Payload for List Employees⤓
List Tabular Fields (Tables)
List all tables and their fields in the account | key: getTabularFields
| Input | Notes | Example |
|---|---|---|
| Connection |
Example Payload for List Tabular Fields (Tables)⤓
List Webhooks
Get a list of existing webhooks | key: listWebhooks
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Show only instance webhooks | Show only webhooks that point to this instance | true |
List Who's Out
Get a list of all employees currently taking time off | key: whosOut
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| End Date | Defaults to 14 days from start date if omitted | YYYY-MM-DD |
| Start Date | Defaults to today's date if omitted | YYYY-MM-DD |
Example Payload for List Who's Out⤓
Raw Request
Send raw HTTP request to BambooHR | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | Input the path only (/v1/employees/directory), The base URL is already included (https://api.bamboohr.com/api/gateway.php/COMPANY_DOMAIN). For example, to connect to https://api.bamboohr.com/api/gateway.php/COMPANY_DOMAIN/v1/employees/directory, only /v1/employees/directory is entered in this field. | /v1/employees/directory |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
Update Employee
Update an existing employee | key: updateEmployee
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee Fields | The names of the fields and their values to use when creating/updating a record. Possible fields are: address1, address2, age, bestEmail, birthday, city, country, dateOfBirth, department, division, employeeNumber, employmentHistoryStatus, ethnicity, exempt, firstName, fullName1, fullName2, fullName3, fullName4, fullName5, displayName, gender, hireDate, originalHireDate, id, jobTitle, lastChanged, lastName, location, maritalStatus, middleName, mobilePhone, nationality, payGroup, payRate, payRateEffectiveDate, payType, paidPer, paySchedule, payFrequency, includeInPayroll, timeTrackingEnabled, ssn, sin, standardHoursPerWeek, state, stateCode, status, supervisor, supervisorEmail, terminationDate, workEmail, workPhone, zipcode | |
| Employee ID | 42 |
Example Payload for Update Employee⤓
Update Employee Table Row
Updates a specific row in an Employee Table | key: updateEmployeeTableRow
| Input | Notes | Example |
|---|---|---|
| Connection | ||
| Employee ID | 42 | |
| Row ID | ||
| Table Fields | The names of the fields and their values to use when creating/updating a row in a table. Use the "List Tabular Fields (Tables)" action to list possible field names for a table. | |
| Table Name (Alias) | jobInfo |
Example Payload for Update Employee Table Row⤓
Upload Company File
Upload a new company file | key: uploadCompanyFile
| Input | Notes | Example |
|---|---|---|
| Category ID | 20 | |
| Connection | ||
| File contents | ||
| File Name | example.pdf | |
| Share? | false |
Upload Employee File
Upload a new employee file | key: uploadEmployeeFile
| Input | Notes | Example |
|---|---|---|
| Category ID | 20 | |
| Connection | ||
| Employee ID | 42 | |
| File contents | ||
| File Name | example.pdf | |
| Share? | false |
Changelog
2026-04-30
Updated spectral version
2026-04-07
Added trigger documentation and global debug support across all actions for improved troubleshooting
2026-03-31
Various modernizations and documentation updates
2026-03-24
Added Employee File ID inline data source input to Delete Employee File and Get Employee File actions for selecting employee files from a dropdown
2026-02-26
Added inline data sources for company files and employee files to enhance file selection capabilities
2025-11-19
Enhanced webhook triggers to support simulated test executions
2025-01-03
Added data sources and inline data sources for employees