BambooHR
What Shuttio reads from BambooHR, where it lands in Odoo, which permissions it needs and why, and what does not move.
Last updated: 7 Nov 2026
An API key. You paste your BambooHR company name (acme in acme.bamboohr.com) and a key from your photo menu, API Keys; Shuttio reads that company only.
Object by object: What objects are supported for BambooHR migrations.
What Shuttio reads and moves
The list below describes the move into Odoo. Where Clarify or Odoo differ, the destination's own article says so.
- What Shuttio asks BambooHR for: Exactly these fields, in one request: employee id, first name, last name, preferred name, work email, work phone, mobile phone, job title, department, division, location, manager's employee id, hire date and status. Everything else stays in BambooHR because Shuttio never asks for it.
- Employees: As Odoo employees: the name (preferred first name, then last name), work email, work phone, work mobile, job title, department, job position, work location and manager. An employee already in Odoo with the same work email (ignoring case) is linked to, not changed and not removed.
- Departments and divisions: As Odoo departments. A BambooHR division becomes the parent department of its departments. A department already in Odoo with the same name (and the same parent) is linked to, not changed.
- Job positions: One Odoo job position for each distinct job title. A position already in Odoo with the same name is linked to.
- Work locations: Found by name in Odoo or created, at your company's address, because Odoo needs an address for a work location.
- Managers: Linked once every employee is in Odoo. No coach is set, though Odoo would copy the manager there.
- Hire date: One line in the employee's notes (Hired: 2021-03-01) where this Odoo has a notes field on employees (Odoo 17 and 18). Odoo 19 keeps the hire date in a contract version, which Shuttio does not write.
- People who left: A person BambooHR marks Inactive is archived in Odoo, not left active.
Where each thing lands
| BambooHR object | In Odoo |
|---|---|
| Departments | Departments (Odoo Employees) |
| Job positions | Job positions (Odoo Employees) |
| Employees | Employees (Odoo Employees app) |
Notes, tasks, meetings, calls, files, owners and lists depend on the destination. This is the row for BambooHR, generated from the same tables the runner uses:
Into Odoo
| From | Objects | Notes | Tasks | Meetings | Calls | Emails | Files | Owners | Lists |
|---|---|---|---|---|---|---|---|---|---|
| BambooHR | Departments, Job positions, Employees | No | No | No | No | No | No | No | No |
Each destination's own article says how its data is written: Odoo.
Permissions and why
| What | Why Shuttio needs it |
|---|---|
| Your BambooHR company name | Like acme, from acme.bamboohr.com. The name is checked as a plain name, and the key goes to api.bamboohr.com only. |
| An API key | BambooHR has no OAuth for this. Shuttio checks the key against your company before it saves anything. Create it in BambooHR under your photo, API Keys, Add New Key. It sees what the user who made it sees, and Shuttio never writes to BambooHR. |
| The fields it asks for | Employee id, first name, last name, preferred name, work email, work phone, mobile phone, job title, department, division, location, manager's employee id, hire date and status. Shuttio never asks for national id or SSN, date of birth, gender, ethnicity, marital status, home address, personal email or phone, pay, bank details, emergency contacts, time off, performance, benefits, photo or custom fields. |
Use a key made by a user who can see the employee directory. BambooHR publishes no rate limit; Shuttio asks for the whole list in one request and pauses the run if BambooHR asks it to slow down. The key is stored encrypted and deleted 14 days after the migration finishes. You can delete it at any time in BambooHR under API Keys.
Known limits
- Private and sensitive HR data: National id or SSN, date of birth, gender, ethnicity, marital status, home address, personal email and phone, pay and compensation, bank details, emergency contacts, time off, performance, benefits and the photo are never requested from BambooHR.
- Custom fields: Not read, so none can carry something private. A custom field would have to be added to the list of fields Shuttio asks for.
- Odoo users: A user is a login and a paid seat, so none is created and no employee is linked to a user.
- Mobile phone that is personal: BambooHR keeps one mobile number and does not say whether it is work or personal. It is copied to Odoo's work mobile as it is; leave it empty in BambooHR if it is private.
- Odoo without the Employees app: The Employees app must be installed; if it is not, the run stops with one sentence and writes nothing.
- The Odoo app and the import package: Employees are written through your Odoo API key only.
- Rate limits: BambooHR publishes no limit. Shuttio makes one request for the whole list, spaced and slowed down when BambooHR asks, and pauses the run if BambooHR keeps pushing back; Resume carries on.
- Emails: Shuttio reads no emails from BambooHR.
Not answered here? Email help@shuttio.com.