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

This technical documentation outlines methods for integrating NetSuite with Tallyfy including REST API with OAuth 2.0 authentication and native SuiteScript development for triggering workflows on record events along with data field mappings and iPaaS platform alternatives like Celigo and Workato.

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.