HRMS migration
Field-level mapping, validation, and rollback between WebHR and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
WebHR
Source
Recruit CRM & ATS
Destination
Compatibility
6 of 11
objects map 1:1 between WebHR and Recruit CRM & ATS.
Complexity
BStandard
Timeline
2-4 weeks
Overview
WebHR and Recruit CRM serve different primary personas. WebHR is an all-in-one HRMS built for small-to-mid businesses covering the full hire-to-retire lifecycle at per-employee pricing. Recruit CRM is a purpose-built recruitment ATS and CRM for staffing agencies and in-house recruiting teams, with candidate database management, job posting, and pipeline tracking as its core functions. Migrating from WebHR to Recruit CRM is primarily a recruitment data migration — candidates, job openings, applications, and application stage history move into Recruit CRM's Candidate, Job, and Application objects, while core employee records (compensation, PTO balances, performance reviews) move as candidate-linked contact records or are archived. WebHR's lack of bulk export endpoints means we enumerate records via paginated REST calls per object type, which extends timelines for large databases. We also flag any add-on modules (Payroll, Performance, Scheduler) that require manual handling if the customer's WebHR tier does not include them.
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 WebHR object lands in Recruit CRM & ATS, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
WebHR
Employee
Recruit CRM & ATS
Candidate (contact-level)
1:1WebHR employee records map to Recruit CRM Candidates as contact records. The employee's first name, last name, email, phone, job title, department, and hire date migrate to the Candidate object fields. The WebHR employee ID is preserved as a custom field webhr_employee_id__c for audit and cross-reference. Active employment status from WebHR (current employee) maps to a Candidate status value; terminated employees migrate with their termination date retained.
WebHR
CompaniesList (Organization)
Recruit CRM & ATS
Organization
1:1WebHR exposes the parent organization record via GET /v3 CompaniesList. This maps to Recruit CRM's Organization field on the Candidate record. For multi-entity WebHR deployments, each company extracted from CompaniesList becomes a separate Organization value in Recruit CRM, preserving the hierarchical structure. The WebHR company name, address, and industry fields map to the corresponding Candidate organization fields.
WebHR
Recruitment Candidates
Recruit CRM & ATS
Candidate
1:1WebHR ATS candidates are the primary migration payload for this pair. Each WebHR candidate record — including name, email, phone, resume/CV, source, screening notes, and application status — maps to a Recruit CRM Candidate record. The candidate's application pipeline stage from WebHR maps to the corresponding Recruit CRM pipeline stage; custom stage names require discovery-phase extraction before mapping because they are customer-defined rather than canonical.
WebHR
Recruitment Job Postings
Recruit CRM & ATS
Job
1:1WebHR job postings (created in the Recruitment module) map to Recruit CRM Job records. Fields include job title, job type (permanent/contract/intern), description, required qualifications, experience level, number of positions, and opening/closing dates. WebHR job post status (open/closed/draft) maps to Recruit CRM job status. Job postings linked to candidates via the application relationship preserve the linkage through Recruit CRM's candidate-job association.
WebHR
Recruitment Application
Recruit CRM & ATS
Application
1:1Each WebHR candidate applying to a job opening generates an application record. This maps to Recruit CRM Application records linking the Candidate and Job. The application stage in WebHR (e.g., Screening, Technical Interview, Offer) maps to the Recruit CRM application stage field, and the stage transition timestamps migrate to the Application object for pipeline analytics. Custom stage names require per-account discovery.
WebHR
Leaves and PTO
Recruit CRM & ATS
Candidate (leave note)
1:manyWebHR leave records (approved, pending, denied) include leave type, start/end dates, status, and balance consumed. These do not map to a native Recruit CRM object because Recruit CRM is an ATS/recruitment CRM, not an HRMS. We migrate leave history as note attachments on the Candidate record with a typed note category, preserving the leave type, dates, and status for HR audit purposes. Leave balance data migrates as a formatted text note or custom field if the customer configures one in Recruit CRM.
WebHR
Performance Reviews
Recruit CRM & ATS
Candidate (review note)
1:manyWebHR performance review records — including review period, rating, goals, and feedback text — migrate as typed notes on the Candidate record. Custom review templates and non-standard rating scales are customer-defined and must be extracted during discovery; we build a per-account field map before migration. The structured rating score migrates to a numeric custom field if Recruit CRM has one configured, otherwise it appears in the review note body.
WebHR
Documents and Files
Recruit CRM & ATS
Candidate (attachments)
1:1WebHR files module stores employee documents (contracts, IDs, certifications, CVs) as binary blobs. We enumerate all file metadata via the WebHR API and download each blob for re-upload to Recruit CRM as a Candidate attachment. The original filename, MIME type, upload date, and file content migrate. Resume and CV files associated with recruitment candidates map to Recruit CRM's resume attachment field on the Candidate record, preserving parseability for candidate parsing features.
WebHR
Payroll Records
Recruit CRM & ATS
Not migrated (manual handling recommended)
lossyWebHR payroll is a paid add-on at $2/employee/month. Historical payslips, year-to-date earnings, and deduction records are not part of a standard ATS data model and Recruit CRM does not have payroll objects. We scope payroll data availability during discovery by checking whether the customer's WebHR subscription includes the payroll module. If payroll is active, we extract payslip records as PDF attachments on the Candidate (or as a separate archive) and advise the customer to maintain payroll records in a dedicated payroll system post-migration.
WebHR
Time & Attendance
Recruit CRM & ATS
Not migrated (out of scope)
lossyClock-in/clock-out timestamps and approved timesheet records are HRMS-specific data with no equivalent in Recruit CRM's ATS/recruitment model. We extract approved timesheet records as a CSV report during migration for the customer's HR admin to archive, and flag any unprocessed or pending entries requiring manual resolution. Recruit CRM is not designed to store time-and-attendance data; it is not migrated as live records.
WebHR
Benefits Enrollment
Recruit CRM & ATS
Candidate (benefit note)
1:manyWebHR benefit enrollment records — benefit type, coverage level, enrollment dates, and dependent/beneficiary details — migrate as typed notes on the Candidate record. Benefit type maps to a custom field if Recruit CRM has one; otherwise the enrollment detail appears in the note body. This data is retained for HR audit continuity rather than for active recruiting use in Recruit CRM.
| WebHR | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Employee | Candidate (contact-level)1:1 | Fully supported | |
| CompaniesList (Organization) | Organization1:1 | Fully supported | |
| Recruitment Candidates | Candidate1:1 | Mapping required | |
| Recruitment Job Postings | Job1:1 | Fully supported | |
| Recruitment Application | Application1:1 | Fully supported | |
| Leaves and PTO | Candidate (leave note)1:many | Fully supported | |
| Performance Reviews | Candidate (review note)1:many | Mapping required | |
| Documents and Files | Candidate (attachments)1:1 | Mapping required | |
| Payroll Records | Not migrated (manual handling recommended)lossy | Mapping required | |
| Time & Attendance | Not migrated (out of scope)lossy | Mapping required | |
| Benefits Enrollment | Candidate (benefit note)1:many | 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.
WebHR gotchas
Payroll module is a paid add-on not included in base plan
Free tier limited to 5 employees with restricted module access
API lacks documented bulk export or batch endpoints
Custom review templates and pipeline stages vary by account configuration
Recruit CRM & ATS gotchas
API rate limits are license-scaled and can throttle bulk migration
Custom field schemas vary per organization and require field-level mapping
Files and email attachments require separate extraction and re-upload
Email sequences and automation logic do not transfer between platforms
Pair-specific challenges
Migration approach
Discovery and module availability audit
We authenticate to WebHR via OAuth 2.0 using the customer's API credentials and enumerate active modules (core HR, Recruitment, Performance, Payroll, Scheduler, Benefits, Files) to confirm what data is accessible for extraction. We extract a sample of each object type (Employees, Candidates, Jobs, Applications, Leave records, Performance Reviews, Files) to validate record counts, field presence, and pagination behavior. This phase identifies any module-gated data (Payroll, Performance, Scheduler) that requires a paid tier or manual handling, and surfaces the customer's custom pipeline stage names and review template configurations.
Candidate and job extraction via paginated REST API
We extract recruitment data in dependency order using WebHR's REST API v3. Candidates are extracted first, followed by Job postings and Application records. Each object type uses independent paginated reads with configurable page sizes (typically 50-100 records per page) and exponential backoff on 429 responses. All file attachments (CVs, resumes, certifications) are enumerated by metadata and downloaded as binary blobs with original filenames and MIME types preserved. We run this extraction in parallel across object types to reduce total enumeration time.
Field mapping and custom stage configuration
We build a custom field map for the destination Recruit CRM account based on the discovery-phase field extraction. Recruitment pipeline stage names from WebHR are mapped to the customer's Recruit CRM stage configuration (or created if the destination account does not yet have matching stages). Custom review template fields and non-standard rating scales are mapped to typed candidate notes or to Recruit CRM custom fields if pre-configured. The mapping document is reviewed and signed off by the customer's admin before production migration begins.
Staging migration and reconciliation
We run a full migration into a Recruit CRM staging or sandbox environment using production-like data volume. The customer's recruiting lead reconciles record counts (Candidates in, Jobs in, Applications in, Attachments in), spot-checks 25-50 records against the WebHR source for field accuracy and attachment completeness, and confirms stage mapping alignment. Any mapping corrections, missing fields, or stage misalignments are resolved here before production migration begins.
Production migration and document re-upload
We run production migration in dependency order: Job postings first (as the parent records for applications), then Candidates, then Applications linking to Jobs and Candidates, then typed notes for Leaves, Performance Reviews, and Benefits. File attachments are re-uploaded to Recruit CRM as Candidate attachments, with CV and resume files mapped to Recruit CRM's resume field. Each phase emits a row-count reconciliation report before the next phase begins. Any records rejected due to required field mismatches are queued for correction and retried in a follow-up pass.
Cutover, validation, and non-migrated data handoff
We freeze WebHR writes during cutover, run a final delta extraction of any records modified during the migration window, and import the delta into Recruit CRM. We validate candidate-record completeness against the WebHR source record count. We deliver a written inventory of non-migrated data — Payroll records, pending timesheets, active workflow configurations — with recommendations for manual entry or separate system handling. We support a one-week post-cutover window to resolve any data quality issues raised by the recruiting team.
Platform deep dives
WebHR
Source
Strengths
Weaknesses
Recruit CRM & ATS
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 2 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 WebHR and Recruit CRM & ATS.
Object compatibility
2 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
WebHR: Not publicly documented.
Data volume sensitivity
WebHR 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 WebHR to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your WebHR to Recruit CRM & ATS migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave WebHR
Other ways to arrive at Recruit CRM & ATS
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.