Odoo Connector for BambooHR
Help
BambooHR Connector keeps BambooHR and Odoo in step. BambooHR remains your HR system; Odoo receives the people data it needs for time off, attendances, timesheets, projects, planning, recruitment, payroll inputs and documents, and can send back what is born in Odoo when you allow it.
Requirements
- Odoo 17, 18, 19 or 20, Community or Enterprise, on Odoo.sh or on your own server. Odoo Online does not accept third-party modules.
- A BambooHR account and a BambooHR administrator who can approve the app.
- Install BambooHR Connector only. Odoo adds a bridge module on its own for each of these apps you have: Time Off, Attendances, Task Logs (project timesheets), Timesheets (Enterprise), Planning (Enterprise), Payroll (Enterprise), Recruitment, Skills Management, eLearning, Maintenance, Documents (Enterprise) and Appraisals (Enterprise), plus Employee Contracts on Odoo 17 and 18. Bridges are free and are never installed by hand.
Connect
- Go to BambooHR > Configuration > Connect BambooHR.
- Type your BambooHR subdomain (the
yourcompanyinyourcompany.bamboohr.com) and continue. - Tick I have informed the employees of this data processing. BambooHR's terms require that employees know their data is shared with Odoo.
- Click Go to BambooHR. A pairing code stays on the Odoo screen and BambooHR opens in a new tab; type the code there and let a BambooHR administrator approve the app.
- Back in Odoo, Continue setup on the connection: choose the data blocks, the direction of each flow and which employees come over, then Start.
- In Initial load, click Preview to see what would be linked, created or skipped, then Import.
The connection uses OAuth through Flexigotech's authorization service at bamboohr.connect.flexigotech.com. No API key is entered anywhere. Tokens can only be read by Odoo administrators.
What to sync
Employee filter
- Active, and terminated since a date (default: the last 12 months), Active employees or All employees.
- Excluded values: employment statuses, divisions or locations that never come over.
Data blocks
Off unless stated. Turning a block on later re-reads that data for the linked employees.
| Block | What it brings |
|---|---|
| Employee # (on) | the BambooHR employee number |
| Personal contact | home email and phone |
| Demographics | gender, marital status, nationality, place of birth |
| Private address | home address |
| Birth date and national ID | date of birth, national ID, SSN/SIN/NIN |
| Passport | passport data |
| Visa and work permit | visa type and expiry |
| Primary emergency contact | the first emergency contact |
| Number of children | the count only |
| Spouse | spouse's name and date of birth |
| Custom fields | your BambooHR custom fields |
| Custom tables | your BambooHR custom tables |
| Mirror employee files | copies the file categories you allow (off: files are listed and downloaded on demand) |
Ethnicity, EEO data, veteran status and credit cards are never read. The full field list, with BambooHR and Odoo names, is on the synced fields page.
Flows and directions
Each flow is Off, BambooHR to Odoo, Odoo to BambooHR or Both ways, limited to the directions that make sense for it.
| Flow | Default | Options | Needs |
|---|---|---|---|
| Employees, Termination, Departments, Job titles, Locations, Manager, Effective-dated history, Personal blocks, Custom field values | BambooHR to Odoo | BambooHR to Odoo, Both ways | — |
| Teams | Off | BambooHR to Odoo | — |
| Photo | Off | BambooHR to Odoo, Both ways | — |
| Compensation | Off | BambooHR to Odoo, Both ways | HR manager rights |
| Company holidays | BambooHR to Odoo | Off, BambooHR to Odoo, Odoo to BambooHR | — |
| Time off requests | BambooHR to Odoo | Off, BambooHR to Odoo, Both ways | Time Off |
| Time off comments | Off | BambooHR to Odoo, Both ways | Time Off |
| Clock entries | Off | all four | Attendances |
| Hour entries | Off | all four | Task Logs |
| Hours API | Off | Odoo to BambooHR | Task Logs |
| Hourly cost | Off | BambooHR to Odoo | Task Logs, HR manager rights |
| Shifts | Off | BambooHR to Odoo, Odoo to BambooHR | Planning |
| Job openings | BambooHR to Odoo | Off, BambooHR to Odoo | Recruitment |
| Applicants | Off | all four | Recruitment |
| Training | Off | BambooHR to Odoo | Skills Management |
| eLearning courses | Off | Odoo to BambooHR | eLearning |
| Education and certifications | Off | BambooHR to Odoo, Both ways | Skills Management |
| Assets | Off | all four | Maintenance |
| Goals | Off | BambooHR to Odoo, Both ways | Appraisals |
| Bonus and commissions, Benefit deductions | Off | BambooHR to Odoo | Payroll |
Hour entries sent to BambooHR and the Hours API cannot be on together: BambooHR would count the hours twice.
Other options on the connection
- Create new Odoo employees in BambooHR.
- Time off: Approve time off in Odoo instead of in BambooHR; Time off balances as a Balance table (default) or as Allocations; Time off types per company.
- Departures: set the end date, unassign equipment, release the company car, archive the Odoo user, offboarding plan.
- Onboarding: an activity plan launched when the employee is created or when the new hire packet is completed.
- Time: who calculates overtime (BambooHR or Odoo); approve BambooHR timesheets from Odoo; in Community, Approve hours up to… a date (Hours approved until).
- BambooHR is master for names: renames in BambooHR also rename the Odoo records the connector did not create.
Mapping screens
Under BambooHR > Configuration:
- Value maps: each BambooHR list value (department, job title, location, employment status, division, time off category, file category…) and its Odoo record. Create in Odoo makes the Odoo record; Create in BambooHR adds the option in BambooHR; Ignore leaves it out. A value with no map is never written: the old Odoo value stays and an issue says what to map.
- Custom fields: Discover fields, then map each one to an Odoo field or leave it shown on the employee form. Only HR managers can map encrypted or sensitive fields.
- Custom tables: Discover tables, then per table: off, read-only on the employee, or resume lines.
- Company routing: send employees to different Odoo companies by division, location, department or a custom field.
Day to day
- BambooHR > Dashboard: one card per connection with the state, last run per flow, open issues, waiting changes and rate-limit pauses. Sync now runs everything at once.
- Monitoring > Issues: what could not be applied and why. Retry, Mark resolved, Ignore, Open record.
- Monitoring > Outbox: changes from Odoo waiting to be sent. Retry or Cancel.
- Monitoring > Runs: each run with its counts; Run again. The API calls tab lists every call to BambooHR (no request bodies, kept 14 days) and can be exported for BambooHR's support team.
- Monitoring > Webhook events: what BambooHR announced; Process again.
- Monitoring > Access log: who looked at sensitive data (files, sensitive blocks), kept one year.
Changes arrive through signed BambooHR webhooks as they happen, and every 15 minutes the connector checks again in case a webhook was missed. A nightly pass reconciles everything; a weekly one re-reads all employees.
On the employee
Linked employees show an Origin: BambooHR badge and a BambooHR tab (HR officers) with history, balances, custom values and tables, time tracking settings and the new hire packet. Buttons:
- The BambooHR smart button opens the employee in BambooHR; Sync from BambooHR and Send to BambooHR.
- Files: list, download and upload BambooHR employee files (only allowed categories; every access is logged).
- New hire packet: create, edit or delete a draft, send, cancel; Start onboarding experience.
- Unlink or Ignore the BambooHR link (administrators); Forget employee (GDPR) (HR managers): anonymises the personal data, deletes the BambooHR copies and stops BambooHR from bringing the person back.
- Transfer to another company when BambooHR moves the employee to another routed company.
- Overtime (Timesheets) and Benefits (Payroll): looked up on demand and not stored.
A linked employee cannot be deleted in Odoo: archive it, or use Unlink or Forget.
Time off
Requests from BambooHR appear in Time Off with a Managed in BambooHR badge; approving or refusing them in Odoo is blocked unless you chose to approve in Odoo. Approved time off is locked on both sides. Refresh balances and Adjust in BambooHR are on the balances screen; policies and their assignments are read-only.
Timesheets and attendances
A period approved in BambooHR (or validated in Odoo Timesheets) locks its lines. Odoo sends hour entries summed per day, project and task. Approve in BambooHR on a BambooHR timesheet approves it only when everything in the period was sent. Time Tracking > Breaks and shift compliance runs a report on demand (Consult).
Test mode
Turn Test mode on before connecting to try the connector in your live Odoo: it never links to records that already exist, creates its own copies marked as test data, and only sends employees tagged as test to BambooHR. Purge test data removes them afterwards (anything still used by a real record is archived and reported).
Disconnect
Disconnect asks what happens to the records the connector created: keep them unlinked, anonymise the personal fields that came from BambooHR, or delete everything the connector created. You must choose; there is no default. Tokens, webhooks and every BambooHR copy are deleted at once. If the connection ends without this step (the app is uninstalled in BambooHR, the account is closed or access is revoked), administrators get reminders and the copies are purged automatically 25 days later. Reconnecting before then cancels the purge.
Common issues
| Issue | What to do |
|---|---|
| Value not mapped | Map the value in Value maps, then Retry. |
| Conflict | The same field changed in both systems; the issue shows both values. Fix the right one and resolve. |
| Not visible | BambooHR stopped showing this employee (often permissions). Nothing is archived until BambooHR confirms. |
| Missing scope | The flow needs a permission the app was not granted: reconnect and approve it. |
| Locked | The record is in an approved or validated period; change it where it was approved. |
| Circuit breaker | A run would have terminated or archived too many employees. Check the list and click Confirm and apply, or fix BambooHR. |
| Domain changed | BambooHR now answers on another subdomain: Update domain checks it is the same company. |
What is not included
BambooHR Payroll pay runs, performance reviews and feedback, offer letters and talent pools, and onboarding tasks: BambooHR's API does not offer them. Accrual policies are not rewritten in either system; requests and balances are copied.
Privacy and support
Employee data travels straight between BambooHR and your Odoo, never through Flexigotech. The privacy notice is at flexigotech.com/privacy/bamboohr. Support: comercial@flexigobe.com. Flexigotech only enters your Odoo when you ask, for that case, and never puts your data into AI tools.
Last updated: 7 October 2026.
