Skip to content

BambooHR technical integration

Integration options

BambooHR provides REST APIs with webhook support. Their API uses simple API key authentication and supports SHA-256 HMAC webhook signatures.

REST API integration

Use BambooHR’s REST API to fetch employee data and trigger Tallyfy workflows:

const handleBambooHREmployee = async (employeeId) => {
const employee = await fetch(
`https://api.bamboohr.com/api/gateway.php/${subdomain}/v1/employees/${employeeId}`,
{
headers: {
'Authorization': `Basic ${Buffer.from(apiKey + ':x').toString('base64')}`,
'Accept': 'application/json'
}
}
).then(res => res.json());
const workflow = await fetch('https://api.tallyfy.com/v1/workflows', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TALLYFY_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
template_id: 'employee_onboarding',
name: `Onboarding - ${employee.firstName} ${employee.lastName}`,
data: {
employee_id: employee.id,
full_name: `${employee.firstName} ${employee.lastName}`,
email: employee.workEmail,
department: employee.department,
location: employee.location,
job_title: employee.jobTitle,
manager: employee.supervisor,
start_date: employee.hireDate
}
})
});
return workflow.json();
};

Webhook integration

BambooHR webhooks use SHA-256 HMAC signatures for verification:

const express = require('express');
const crypto = require('crypto');
const app = express();
app.post('/bamboohr-webhook', express.raw({ type: '*/*' }), async (req, res) => {
// Verify webhook signature using SHA-256 HMAC
const signature = req.headers['x-bamboohr-signature'];
const expectedSignature = crypto
.createHmac('sha256', process.env.BAMBOOHR_WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
if (signature !== expectedSignature) {
return res.status(401).send('Invalid signature');
}
const payload = JSON.parse(req.body);
const { type, employees } = payload;
for (const employeeId of employees) {
switch (type) {
case 'employee':
await launchOnboardingWorkflow(employeeId);
break;
case 'job_information':
await launchRoleChangeWorkflow(employeeId);
break;
case 'employment_status':
await handleStatusChange(employeeId);
break;
}
}
res.status(200).send('OK');
});

Polling for changes

BambooHR also supports change reports for systems that cannot receive webhooks:

const pollBambooHRChanges = async () => {
const since = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
const changes = await fetch(
`https://api.bamboohr.com/api/gateway.php/${subdomain}/v1/employees/changed?since=${since}`,
{
headers: {
'Authorization': `Basic ${Buffer.from(apiKey + ':x').toString('base64')}`,
'Accept': 'application/json'
}
}
).then(res => res.json());
for (const employee of changes.employees) {
await processEmployeeChange(employee.id, employee.action);
}
};

Data mapping

Common BambooHR fields to map to Tallyfy workflow variables:

BambooHR FieldTallyfy VariableDescription
idemployee_idEmployee record ID
firstName + lastNamefull_nameEmployee name
workEmailemailWork email address
departmentdepartmentDepartment name
divisiondivisionDivision name
locationlocationWork location
jobTitlejob_titleJob title
supervisormanagerDirect supervisor name
supervisorEmailmanager_emailSupervisor email
hireDatestart_dateHire date
employmentHistoryStatusstatusCurrent employment status

Authentication

BambooHR uses API key authentication with HTTP Basic auth. The API key is the username and ‘x’ is the password.

const getBambooHRHeaders = () => ({
'Authorization': `Basic ${Buffer.from(process.env.BAMBOOHR_API_KEY + ':x').toString('base64')}`,
'Accept': 'application/json'
});

Available webhook events

BambooHR webhooks can trigger on various field changes:

  • Employee created - New employee added
  • Job information - Title, department, or location changed
  • Employment status - Status changed (active, terminated, on leave)
  • Compensation - Salary or pay rate changed
  • Time off - Time off requests or balances changed

iPaaS alternatives

If direct API development is not available:

  • Merge API: Unified HRIS API with BambooHR support
  • Finch: Employment system API
  • Zapier: Pre-built BambooHR triggers and actions
  • Make: Visual workflow builder with BambooHR connector

Paylocity > Paylocity technical integration

Technical implementation details for connecting Paylocity with Tallyfy including REST API examples, webhook handling, data mapping, and authentication configuration for HR workflows.

Vendors > BambooHR

Connect BambooHR with Tallyfy to orchestrate cross-department workflows like onboarding, offboarding, and role changes that BambooHR cannot coordinate on its own - spanning IT, Facilities, and Finance teams.

Netsuite > NetSuite technical integration

Technical implementation details for connecting NetSuite with Tallyfy including REST API examples, SuiteScript integration, data mapping, and authentication configuration for ERP deployments.

Workday > Workday technical integration

Technical implementation details for connecting Workday with Tallyfy including API integration examples, webhook handling, data mapping, and authentication configuration for enterprise deployments.