Bamboohr > BambooHR technical integration
Technical implementation details for connecting BambooHR with Tallyfy including REST API examples, webhook signatures, data mapping, and authentication configuration for HR workflows.
Paylocity offers REST APIs through their developer program. Choose based on your integration requirements and partnership status.
Use Paylocity’s REST API to trigger Tallyfy workflows on employee events:
const handlePaylocityEvent = async (event) => { if (event.eventType === 'employee.created') { const employee = await paylocityAPI.get(`/v2/companies/${companyId}/employees/${event.employeeId}`);
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.employeeId, full_name: `${employee.firstName} ${employee.lastName}`, email: employee.workEmail, department: employee.departmentCode, location: employee.workLocation, job_title: employee.jobTitle, manager: employee.supervisorFirstName + ' ' + employee.supervisorLastName, start_date: employee.hireDate } }) });
return workflow.json(); }};Register webhooks to receive real-time notifications from Paylocity:
const express = require('express');const crypto = require('crypto');
const app = express();
app.post('/paylocity-webhook', express.json(), async (req, res) => { // Verify webhook signature const signature = req.headers['x-paylocity-signature']; const payload = JSON.stringify(req.body); const expectedSignature = crypto .createHmac('sha256', process.env.PAYLOCITY_WEBHOOK_SECRET) .update(payload) .digest('hex');
if (signature !== expectedSignature) { return res.status(401).send('Invalid signature'); }
const { eventType, data } = req.body;
switch (eventType) { case 'employee.hired': await launchOnboardingWorkflow(data); break; case 'employee.terminated': await launchOffboardingWorkflow(data); break; case 'payroll.completed': await launchPayrollReviewWorkflow(data); break; }
res.status(200).send('OK');});Common Paylocity fields to map to Tallyfy workflow variables:
| Paylocity Field | Tallyfy Variable | Description |
|---|---|---|
employeeId | employee_id | Unique employee identifier |
firstName + lastName | full_name | Employee full name |
workEmail | email | Work email address |
departmentCode | department | Department code |
costCenter | cost_center | Cost center assignment |
workLocation | location | Work location code |
jobTitle | job_title | Job title |
supervisorFirstName | manager | Direct supervisor |
employeeType | employee_type | Full-time, part-time, contractor |
hireDate | start_date | Employee start date |
Paylocity uses OAuth 2.0 with client credentials flow. Store credentials securely and never expose them in client-side code.
const getPaylocityToken = async () => { const response = await fetch('https://api.paylocity.com/IdentityServer/connect/token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ grant_type: 'client_credentials', client_id: process.env.PAYLOCITY_CLIENT_ID, client_secret: process.env.PAYLOCITY_CLIENT_SECRET, scope: 'WebLinkAPI' }) });
return response.json();};If direct API development is not available:
Bamboohr > BambooHR technical integration
Workday > Workday technical integration
Netsuite > NetSuite technical integration