HR & recruiting
BambooHR setup guide
HR records, time off and hiring. Agents look up employees and who reports to whom, add new hires, update records and job changes, check balances and who's out, file, approve or deny time off requests, and review job applications.
Agents help with people, candidates and hiring.
Ways to connect
Company admins connect apps, on the Integrations page in Everdeck: open BambooHR, choose one of the ways below, follow its steps and fill in its fields. Everdeck checks what you enter before it saves anything, and asks you to confirm it’s you (your second factor) before you type any secret. How connecting works.
BambooHR can be connected 2 ways. Where there’s a key or token to paste, that’s usually the quickest.
API key
API key.
- Sign in to BambooHR as the user the AI employee should act as. Every call is permissioned as this user, so a dedicated user whose access level covers the employees, fields, time off and hiring data the agent needs works best (Settings > Access Levels).
- Click your name in the lower left-hand corner and choose API Keys. If the option is missing, ask an admin to give your access level API access.
- Click Add New Key, name it "Everdeck" and copy the key into the form. It is shown only once.
- Enter your company domain: if you sign in at https://yourcompany.bamboohr.com, enter yourcompany. Trigger (time_off_requested, a time-off request awaiting a decision): set it up on the Intake page. Everdeck checks BambooHR every 10 minutes with this connection, so nothing more is needed here; the user needs access to time-off requests.
| Field | What to enter |
|---|---|
| Company domain (the part before .bamboohr.com) | Text. For example yourcompany. |
| API key | A secret: Everdeck saves it encrypted and never shows it again. Where to find it. |
Disconnecting deletes the credentials Everdeck saved, but Everdeck can't revoke them: the key, token or password itself keeps working at BambooHR until you delete or rotate it there.
Your BambooHR developer app
Your OAuth app.
This way signs in with an OAuth app you create for BambooHR, as its steps describe: Everdeck never uses an app of its own. Register this redirect URI with your app:
https://everdeck.io/api/oauth/callback
Then save the app’s client ID and secret in Everdeck, on the connect page or under OAuth apps, and sign in.
- Create a free account in the BambooHR Developer Portal (https://developers.bamboohr.com) and open Applications (https://developers.bamboohr.com/home/applications).
- Click + Add application, fill in the required fields and add the redirect URI https://everdeck.io/api/oauth/callback. It must match exactly.
- Under Select scopes, choose the scopes listed below. Under Miscellaneous, turn on offline_access so the connection can refresh its token.
- Copy the Client ID and Client Secret into the form with your company domain, click Connect and approve as a BambooHR user whose access level covers what the agent needs. Trigger (time_off_requested, a time-off request awaiting a decision): set it up on the Intake page. Everdeck checks BambooHR every 10 minutes with this connection, so nothing more is needed here; the user needs access to time-off requests.
| Field | What to enter |
|---|---|
| Company domain (the part before .bamboohr.com) | Text. For example yourcompany. |
The scopes Everdeck asks for:
offline_accessemployeeemployee.writeemployee:nameemployee:name.writeemployee:jobemployee:job.writeemployee:contactemployee:contact.writesensitive_employee:addresssensitive_employee:address.writetime_offtime_off:requeststime_off:requests.writehiring:applications
Disconnecting deletes the tokens Everdeck saved. BambooHR documents no revocation endpoint: remove the app in BambooHR's settings.
What agents can do
An agent uses an action only when its charter grants it, on the agent’s Tools tab, where you choose whether each one runs by itself (Auto), asks first or never runs. Each action has a risk tier: tier 3 actions, which customers or the public see, ask first unless you choose otherwise, and tier 4 actions (money, deleting things, access) always need a person. How tools and tiers work.
Actions marked Reads outside content return things people outside your company may have written. Agents treat what they read as information, never as instructions, and their riskier actions later in the same session need approval.
-
List or find employeesTier 0 · ReadReads outside content
bamboohr_list_employeesList employees with optional filters, for example everyone in a department, a manager's direct reports, or a name or work email match. Always returns id, first, last and preferred name, job title and status (Active or Inactive); ask for more with fields. Values the connected user may not read come back null and are named in _restrictedFields, and employees are left out when a filter or sort uses a field the user cannot read, so an empty result does not prove nobody matches.
-
Read an employeeTier 0 · ReadReads outside content
bamboohr_get_employeeRead one employee's record. Only the fields named are returned (up to 400), and fields the connected user may not see are silently left out. Use employee id 0 for the connected user.
-
Add an employeeTier 2 · ReversibleReads outside content
bamboohr_create_employeeAdd a new employee record, for example a new hire. List-type values (job title, department, division, location, employment status) must match an option that already exists in BambooHR. Creating the record does not invite the person to BambooHR or send onboarding packets.
-
Update contact and personal detailsTier 2 · ReversibleReads outside content
bamboohr_update_employeeChange an employee's name, Employee #, work or personal contact details, or home address. Job title, department, division, location and manager changes go through record_job_change so they keep an effective date. Pay, employment status and termination cannot be changed here.
-
Record a job changeTier 2 · ReversibleReads outside content
bamboohr_record_job_changeAdd a row to the employee's job information history with an effective date: a new job title, department, division, location or manager. Give every value the row should hold, including those that stay the same, and use option values that already exist in BambooHR.
-
List time off requestsTier 0 · ReadReads outside content
bamboohr_list_time_off_requestsList time off requests, newest first by default, with dates, amount and unit, category id, status (REQUESTED, APPROVED, DENIED, CANCELED) and notes. Names are not included: look employees up with list_employees (employee_ids). Requests the connected user may not see are silently left out. For who is out on a day use status eq 'approved' and startDate le 'DAY' and endDate ge 'DAY'.
-
Check time off balancesTier 0 · ReadReads outside content
bamboohr_get_time_off_balancesShow an employee's balance and amount used this year for each assigned time off type, as of today or a future date to project accruals. The timeOffType ids here are the category ids that create_time_off_request takes. A 403 means the connected user may not view this employee's time off, not that the balance is zero. policyType tells accruing types from discretionary ones (such as bereavement), which show 0 but can still be requested. Does not accept employee id 0.
-
See who's outTier 0 · ReadReads outside content
bamboohr_whos_outList approved time off overlapping a date range (up to 366 days) with each person's name and job title, sorted by start date. Company holidays are not included.
-
Request time off for an employeeTier 2 · ReversibleReads outside content
bamboohr_create_time_off_requestFile a time off request on an employee's behalf. It starts as REQUESTED and goes to the employee's approvers, who are notified. Give exactly one of amount or daily_amounts.
-
Approve a time off requestTier 3 · ExternalReads outside content
bamboohr_approve_time_off_requestApprove a REQUESTED time off request as the connected user, completing their step in the approval chain (it stays REQUESTED while other approvers remain). The employee is notified.
-
Deny a time off requestTier 3 · ExternalReads outside content
bamboohr_deny_time_off_requestDeny a REQUESTED time off request. A denial is final: it ends the whole approval chain. The employee is notified.
-
List job applicationsTier 0 · ReadReads outside content
bamboohr_list_job_applicationsList applications in BambooHR Hiring with the applicant's name, email and source, the job, status and rating. Filter by job, status group, a search phrase or arrival time. Needs a user with access to the hiring settings.
What can start work
These events from BambooHR can become tasks for your agents through Intake. How Intake works.
Someone requested time off and it awaits a decision.
Connect BambooHR first. Then, on the Intake page, open Webhooks and sources, find it under Connector triggers and select Start watching. Then, on the Rules tab, select New rule to say which requests become tasks and who gets them.
Testing, problems and disconnecting
Everdeck checks the connection when you save it. On the connection’s page in Integrations, Test checks it again at any time.
If BambooHR later refuses the connection, for example because a key was deleted or a sign-in expired, the connection shows Needs attention on the Integrations page and the people who manage connections are told. Agents can’t use it until a company admin fixes it with Edit or Reconnect.
To stop agents using BambooHR, open the connection and select Disconnect. Agents stop using it at once and its saved credentials are deleted. What else happens depends on how it was connected: each way above says.
Still stuck?
Email [email protected] and say what you were trying to do. Or browse every guide.