HRMS migration
Field-level mapping, validation, and rollback between Recruitly and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
Recruitly
Source
BambooHR
Destination
Compatibility
8 of 12
objects map 1:1 between Recruitly and BambooHR.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Recruitly to BambooHR is a category migration, not a like-for-like copy. Recruitly is a recruiting CRM and ATS built for staffing agencies, with data structures organized around Candidates, Placements, and outreach campaigns. BambooHR is an HRIS designed for internal HR teams managing Employees, Applicants, onboarding, PTO, and payroll. The schema transition requires mapping candidate records to BambooHR Employee records, collapsing placement and pipeline data into employee metadata or custom fields, and re-evaluating which outreach history is worth preserving. We handle the object-level mapping, flag the structural mismatches (Pipelines, Invoicing, Outreach Campaigns) that BambooHR cannot receive natively, and deliver a written inventory of those records for the customer's admin to address post-migration. Workflows, automations, and sequences do not migrate; we document them for admin rebuild.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Recruitly object lands in BambooHR, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Recruitly
Candidate
BambooHR
Employee
1:1Recruitly Candidate records map to BambooHR Employee records. The candidate's name, email, phone, address, and employment history fields map to the corresponding BambooHR employee fields (firstName, lastName, workEmail, workPhone, dateOfBirth, hireDate). Recruitly's candidate source, skills, and experience fields migrate as custom Employee fields in BambooHR since the standard BambooHR schema covers employment basics but not recruitment-specific attributes. We extract the full column list from Recruitly's candidate module during discovery to identify every custom field that requires a corresponding BambooHR custom property.
Recruitly
Candidate
BambooHR
Applicant
1:manyFor Recruitly Candidates who are in active pipeline stages and represent future hires, we create BambooHR Applicant records in addition to Employee records. The Applicant record captures the job applied to, application date, source, and stage status from Recruitly. BambooHR's Applicant Tracking module handles inbound applicants and job applications but does not support the full pipeline stage model that Recruitly uses, so stage information is stored as a custom field on the Applicant record. Active pipeline positions that are expected to result in hires get Applicant records; historical candidates who will not be re-hired get Employee records only.
Recruitly
Contact
BambooHR
Employee or Emergency Contact
1:1Recruitly Contacts are client-side records managed in the Sales module (company contacts, client stakeholders). These do not have a native BambooHR equivalent because BambooHR is employee-centric. We map Recruitly Contacts who are also employees in the system to Employee records with a clientContact flag custom field. Recruitly Contacts who are not employees are exported as a standalone CSV inventory delivered alongside the migration for the customer to import into a CRM or contact management tool outside BambooHR.
Recruitly
Company
BambooHR
Organization
1:1Recruitly Company records map to BambooHR Organization entries in the Employee directory. The organization's name, address, phone, and industry map to BambooHR's org-level fields. Recruitly's custom Company columns (from Sales Analytics, Recruiting Analytics, Billing, or General field groups) require explicit extraction during discovery and are mapped to BambooHR custom fields on the Organization record. BambooHR does not have a standalone Company module separate from the employee directory, so multi-company organizations with no shared employees need a separate tracking mechanism documented for the customer.
Recruitly
Job
BambooHR
Job
1:1Recruitly Job postings map to BambooHR Job records. The job title, description, location, department, employment status, and open date migrate directly. Recruitly job board distribution settings and job status (open, closed, draft) map to BambooHR job status and posting destination fields. Recruitly Jobs linked to specific Companies map to the corresponding BambooHR Organization. Recruitly's Jobs tier limits (5 Free, 25 Solo, unlimited Professional) are validated during scoping to confirm the target plan accommodates the migration volume.
Recruitly
Placement
BambooHR
Employee Custom Fields
lossyRecruitly Placements track the full hire-to-onboarding lifecycle including offer details, start date, guarantee period, commission, and billing rate. BambooHR has no native placement object, so we decompose placement data into Employee custom fields: placement_start_date, guarantee_period_months, billing_rate, commission_rate, and client_name. Placement-to-invoice linkage from Recruitly cannot be preserved in BambooHR because BambooHR does not have invoicing or accounts receivable features; we export placement-invoice linkage as a CSV inventory for the customer's finance team.
Recruitly
Pipeline
BambooHR
Employee Custom Field
lossyRecruitly Pipeline stage names and candidate order within stages cannot map to a native BambooHR structure. BambooHR Applicant Tracking uses a simplified stage model (Applied, Screening, Interview, Offer, Hired, Rejected) that does not support the multi-stage pipeline configurations that Recruitly uses. We map the most recent Recruitly pipeline stage to a custom Applicant field (recruitly_pipeline_stage__c) and store the pipeline name as applicant metadata. Customers requiring the full pipeline history receive a written inventory of stage transitions for manual reconciliation.
Recruitly
Activity
BambooHR
Employee Note
1:1Recruitly Activity logs (calls, emails, meetings, tasks) attached to Candidates map to BambooHR Employee Notes. The activity type, date, subject, and body content migrate as Note records linked to the corresponding Employee. Activity timestamps are preserved. Recruitly's engagement metrics (email opens, click counts, call duration) migrate as custom Note metadata fields since BambooHR Notes support rich text but not native engagement tracking. Large activity volumes (over 100,000 records) are chunked and loaded via BambooHR's API with rate-limit handling.
Recruitly
Custom Field
BambooHR
Custom Field
lossyRecruitly custom fields across Candidates, Contacts, Companies, and Jobs migrate to BambooHR custom Employee fields or Applicant fields depending on the parent object. BambooHR supports custom fields on Employee, Applicant, and Job records. We extract the full custom field schema from Recruitly during discovery, validate the field types against BambooHR's supported types (text, number, date, dropdown, checkbox, multiple-select), and flag any Recruitly field types that require conversion or approximation at the destination. Custom fields on Company records that have no Employee parent are stored as Organization-level custom properties in BambooHR.
Recruitly
Attachment
BambooHR
File Attachment
1:1Recruitly attachments (CVs, cover letters, certifications, contracts) attached to Candidates and Jobs migrate as File Attachments on the corresponding BambooHR Employee or Applicant record. We export attachments via Recruitly's Export Data module (requires Export Data privilege) and upload them to BambooHR via the BambooHR API or file upload interface. PDF, DOC, DOCX, and image formats are supported. BambooHR file attachments are linked to the employee record and visible in the Documents tab. Resume files are associated with the Employee's application history. Document conversion is handled for non-standard formats.
Recruitly
User
BambooHR
User
1:1Recruitly User records and Owner assignments on Candidates, Jobs, and Placements map to BambooHR User accounts. We resolve Recruitly Owner email addresses against BambooHR User accounts during migration. Any Recruitly Owner without a matching BambooHR User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Active and inactive user status is preserved. BambooHR's permission model (Employee, Administrator, Manager) maps from Recruitly's role assignments.
Recruitly
Outreach Campaign
BambooHR
No equivalent
1:1Recruitly Outreach Campaigns with templates, recipient lists, send history, and engagement metrics have no direct BambooHR equivalent. BambooHR Applicant Tracking does not include sales engagement or email cadence features. We export outreach campaign metadata (campaign name, template subject, send date, recipient count, open rate, click rate) as a CSV inventory delivered alongside the migration. The customer's admin uses this inventory to rebuild cadence sequences in a dedicated sales engagement tool (Salesloft, Outreach, or a similar platform) or to document campaign history for reporting purposes.
| Recruitly | BambooHR | Compatibility | |
|---|---|---|---|
| Candidate | Employee1:1 | Fully supported | |
| Candidate | Applicant1:many | Fully supported | |
| Contact | Employee or Emergency Contact1:1 | Fully supported | |
| Company | Organization1:1 | Fully supported | |
| Job | Job1:1 | Fully supported | |
| Placement | Employee Custom Fieldslossy | Fully supported | |
| Pipeline | Employee Custom Fieldlossy | Fully supported | |
| Activity | Employee Note1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Attachment | File Attachment1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Outreach Campaign | No equivalent1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Recruitly gotchas
Tier-based record limits are migration-critical
API rate limits restrict bulk migration throughput
Export Data privilege gates all bulk exports
Delta migration window is a tight Friday–weekend cutover
Companies module columns require explicit field mapping
BambooHR gotchas
Undocumented API rate limits can trigger 503 errors
Per-employee pricing model requires active record count verification
API credentials must be sent on every request to avoid extra round trips
Custom field schema varies per account and requires manual inventory
Document and attachment exports are not covered by standard report exports
Pair-specific challenges
Migration approach
Discovery and lifecycle classification
We audit the source Recruitly account across plan tier (Free, Solo, Professional, Enterprise), record counts per object (Candidates, Contacts, Companies, Jobs, Placements, Pipelines), custom field definitions, attachment volumes, and active outreach campaigns. We pair this with a BambooHR destination audit to confirm the target plan tier, existing custom field definitions, and API access. The discovery output is a written migration scope that classifies every Recruitly record by its lifecycle state (active candidate, placed consultant, former employee, client contact) and routes each object type to its BambooHR destination object or exclusion inventory.
Schema design and field mapping specification
We design the BambooHR destination schema before any data moves. This includes creating custom Employee fields (placement metadata, Recruitly source fields), custom Applicant fields (Recruitly pipeline stage, candidate source), and Organization-level custom properties for Company data. We map Recruitly custom field types to BambooHR field types (text, number, date, dropdown, checkbox, multiple-select) and flag any conversions required. The schema design is deployed into a BambooHR sandbox or staging environment for validation before production migration begins.
Export with privilege and rate-limit handling
We extract data from Recruitly using the Export Data module for bulk exports or the API for targeted record fetches, selecting the method based on the customer's plan tier and API quota. We confirm the Export Data privilege is assigned to the migration service account before extraction. Records are exported in dependency order: Companies (first, for Organization resolution), Jobs, Candidates (with pipeline stage), Placements (with placement metadata), Activities, and Attachments. Each export phase emits a row-count reconciliation report.
Sandbox migration and reconciliation
We run a full migration into the customer's BambooHR environment using a subset of records to validate the schema and field mapping. The customer's HR lead spot-checks migrated employee records against the Recruitly source, confirms that custom fields are populated correctly, verifies attachment visibility, and signs off before the production migration proceeds. Any mapping corrections happen in this phase. We specifically validate placement metadata decomposition and the Applicant-versus-Employee split decisions.
Production migration in dependency order
We run production migration in record-dependency order: Organizations (from Recruitly Companies), Jobs, Employees (from Candidates with lifecycle classification applied), Applicants (for pipeline-active candidates), Employee and Applicant custom fields, Placement metadata as Employee custom fields, Activities as Employee Notes, Attachments as File records, and Users (reconciled against BambooHR users by email). Outreach Campaign history is exported as a CSV inventory (not migrated to a native object). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and handoff
We freeze Recruitly writes during cutover and run a final delta migration of any records modified since the Stage 1 export. We validate record counts in BambooHR against Recruitly totals and spot-check 25-50 random records. We deliver the outreach campaign CSV inventory, the placement-invoice linkage CSV, and the pipeline stage transition inventory to the customer's HR admin. We do not rebuild Recruitly workflows or automations in BambooHR because the automation models differ fundamentally; we deliver a written inventory of active workflows requiring manual rebuild in BambooHR's workflow or approval chain builder.
Platform deep dives
Recruitly
Source
Strengths
Weaknesses
BambooHR
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Recruitly and BambooHR.
Object compatibility
1 of 7 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
Recruitly: 100 calls/day (Free), 1,000 calls/day (Solo); Professional and Enterprise limits are not publicly documented.
Data volume sensitivity
Recruitly doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Recruitly to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your Recruitly to BambooHR migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Recruitly
Other ways to arrive at BambooHR
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.