| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Time Off (hr_holidays) • Discuss (mail) • Calendar (calendar) |
| Lines of code | 930 |
| Technical Name |
bamboohr_connector |
| License | LGPL-3 |
| Website | https://techspawn.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Time Off (hr_holidays) • Discuss (mail) • Calendar (calendar) |
| Lines of code | 930 |
| Technical Name |
bamboohr_connector |
| License | LGPL-3 |
| Website | https://techspawn.com |
Mirror BambooHR into Odoo.
Pull employees, departments, jobs, photos, emergency contacts, leave types and time-off requests from BambooHR on a schedule.
Nothing is ever written back.
Connect in Seconds
One form. Enter your BambooHR subdomain and API key, hit Test Connection, then click Sync All — the full directory lands in Odoo.
Everything Important. Synced.
Seven entity types pulled straight from BambooHR into the corresponding Odoo HR records. Matched by stable IDs — no duplicates, ever.
Employees
Name, work email, phones, addresses, birthday, gender, hire status, and manager hierarchy — populates Odoo's org chart automatically.
Departments & Jobs
Auto-discovered from the employee directory. Matched by name to avoid duplicating departments you already created in Odoo.
Profile Photos
Pulled from BambooHR and shown on Odoo employee cards and org charts. Opt-in flag — off by default to save bandwidth.
Emergency Contacts
Each employee's BambooHR emergency contacts as a child table. Name, relationship, phones, email, primary flag.
Compensation
Pay rate, type, frequency and currency. Restricted to HR Manager group via field-level security.
Leave Types
BambooHR time-off types mirrored into Odoo's Time Off module so leave requests land against the right category.
Time-Off Requests
Pulled into Odoo as draft leaves, ready for HR to approve. Overlap-aware so existing leaves aren't double-booked.
Read-Only. By Design.
Most "sync" modules ask you to trust that they won't accidentally overwrite your HR system of record. We made that impossible at the code level.
Structurally Read-Only
No HTTP method other than GET can be issued. Not a setting — the code physically cannot do it.
Idempotent Sync
Employees keyed on BambooHR ID, leaves on request ID. Run sync as often as you want.
Full Audit Trail
Every run logged: entity, trigger, counts, duration, errors. Colour-coded for at-a-glance health.
Per-Entity Crons
Five separate cron jobs. Run leaves hourly, employees nightly. Tune from the UI.
Failure Tolerant
Per-record savepoints. One bad employee never aborts a sync of 200.
Opt-In Heavy Fields
Photos, compensation, contacts are off by default. Turn on what you need.
Five Crons. Tuned Independently.
Run leaves hourly, employees nightly, departments weekly. Pick the cadence that fits each entity — all from one settings panel, no code edits.
Up and Running in Minutes
No middleware. No webhooks to expose. Just an API key.
Install the module
Apps → search "BambooHR Connector" → Install. Depends on hr and hr_holidays.
Configure credentials
HR → BambooHR → Configuration → New. Enter your BambooHR subdomain and API key, then click Test Connection.
Run initial sync
Click Sync All. Departments, jobs, employees, leave types and time-off requests are pulled in. Watch progress in Sync Logs.
Schedule auto-sync
Open Schedule tab, set the interval, enable the jobs you want, click Apply Schedule. Done — it runs on its own from here.
Coming Soon
Features we are actively planning. Have a request? Drop us a line and we'll prioritise it.
Custom Field Mapping
UI to map BambooHR custom fields to Odoo custom fields without writing code.
Skills & Certifications
Pull skills and certifications from BambooHR custom tables straight into Odoo's HR Skills module.
Email & Slack Alerts
Automatic notifications when a scheduled sync partial-fails or fails, so problems don't sit unnoticed.
Sync Analytics Dashboard
Visual dashboard for sync health over time: trends, success rates, slow endpoints.
Document Sync
Pull BambooHR employee documents (offer letters, contracts) into Odoo's document store.
CSV Export of Sync Logs
One-click export of sync history for audit, compliance, or reporting purposes.
Technical Details
Compact, focused, no surprises.
| Odoo version | 18.0 Community / Enterprise |
| Dependencies | hr hr_holidays |
| Python deps | requests (bundled with Odoo) |
| BambooHR API | REST v1 — HTTP Basic auth (API key) |
| HTTP methods used | GET only — structurally enforced |
| License | LGPL-3 |
| Category | Human Resources |
Frequently Asked Questions
Can this module accidentally modify our BambooHR data?
No. The HTTP client only exposes _get() and _get_binary() methods. There is no code path in the entire module that can issue a POST, PUT, PATCH or DELETE request to BambooHR.
What happens if I run "Sync All" twice?
Nothing bad. Every entity is matched by a stable ID (BambooHR's employee ID, request ID, type ID) so existing records get updated, not duplicated. You can re-run as often as you want.
What happens if one employee has bad data and fails?
Only that one employee is skipped — the failure is logged with the error message in the Sync Logs, and the rest of the sync continues. Per-record savepoints protect the overall transaction.
Can I see exactly what was synced and when?
Yes. HR → BambooHR → Sync Logs shows every run with state (success/partial/failed), counts of records created/updated/skipped, duration, and the full error message text for any failures.
Does it sync compensation? What about privacy?
Compensation sync is opt-in (off by default). When enabled, pay rate / type / frequency / currency fields are added to employee records but restricted to the HR Manager group via Odoo's field-level security.
Do we need a public URL or webhook endpoint?
No. The connector is pull-based on a cron schedule. It only needs outbound internet access from your Odoo server to api.bamboohr.com.
Sync With Confidence.
Get your BambooHR data into Odoo today. Your HR system of record stays untouched.
Questions? Drop us a line at support@techspawn.com
Built and maintained by Techspawn · Odoo 18 · LGPL-3
https://techspawn.com
Please log in to comment on this module