HRMS migration
Field-level mapping, validation, and rollback between WebHR and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
WebHR
Source
Bullhorn ATS & CRM
Destination
Compatibility
14 of 15
objects map 1:1 between WebHR and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from WebHR to Bullhorn is a platform-type migration: WebHR is a general HRMS that stores employee records as personnel files, while Bullhorn is a recruitment ATS and CRM purpose-built for staffing agencies. The core migration challenge is translating WebHR's employee records into Bullhorn's Candidate and ClientContact objects, with WebHR recruitment pipeline stages mapped to Bullhorn's JobOrder status and Placement tracking. We resolve the employee-to-candidate conversion during scoping, preserve WebHR's leave history as custom object records or notes on the Candidate, and flag that payroll, benefits, and e-signature data have no native Bullhorn equivalent so those records are migrated as structured documents or custom fields for admin review. Bullhorn's Custom Objects (up to 10 on Front Office Growth and Enterprise editions) handle any WebHR custom form data that cannot fit standard fields. Workflows, scheduling automation, and recruitment pipeline templates from WebHR do not migrate; we deliver a written inventory for the customer's admin to rebuild in Bullhorn's workflow builder.
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 Bullhorn ATS & CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
WebHR
Employee
Bullhorn ATS & CRM
Candidate
1:1WebHR Employee records map to Bullhorn Candidate records. We extract the full profile (name, contact, employment history, skills, resume) and map it to Bullhorn Candidate fields. WebHR's employee photo migrates as a Candidate attachment. The Candidate's status defaults to 'Active' if the WebHR employee is currently employed, or 'Placed' if a historical placement record exists. We preserve the original WebHR employee ID in a custom field webhr_employee_id__c for audit and reconciliation.
WebHR
Employee
Bullhorn ATS & CRM
ClientContact
1:1WebHR Employee records may also represent internal client contacts if the organization uses WebHR to track relationships with external clients. We map these to Bullhorn ClientContact records linked to the corresponding ClientCorporation, with the employee role mapped to the ClientContact title field.
WebHR
Companies (Organization)
Bullhorn ATS & CRM
ClientCorporation
1:1WebHR's CompaniesList endpoint maps directly to Bullhorn ClientCorporation. The organization name, address, and industry classification migrate as ClientCorporation fields. For multi-entity WebHR deployments, we extract each company as a separate ClientCorporation and preserve the parent-child hierarchy via ClientCorporation custom fields.
WebHR
Recruitment Candidate
Bullhorn ATS & CRM
Candidate + JobSubmission
1:1WebHR Recruitment Candidates are created through the ATS module and include application stage, screening data, and attachments. We map these to Bullhorn Candidate records with the WebHR application stage preserved in a custom field webhr_stage__c. If the candidate is tied to an active job opening, we create a Bullhorn JobSubmission linking the Candidate to the corresponding JobOrder. WebHR pipeline stage names vary by customer configuration; we extract the actual stage names during discovery and map them to Bullhorn's standard submission status values.
WebHR
Recruitment Pipeline Stage
Bullhorn ATS & CRM
JobSubmission Status + Custom Object
lossyWebHR's customer-defined pipeline stages (e.g., Screening, Technical Interview, Culture Fit) have no Bullhorn standard equivalent. We configure Bullhorn JobSubmission status values to match the customer's pipeline stages, creating custom status options where needed. For complex multi-stage pipelines with branching logic, we document the stage progression in a custom object or as a field mapping note for the admin to configure in Bullhorn's pipeline settings post-migration.
WebHR
Leaves and PTO
Bullhorn ATS & CRM
Note or Custom Object (LeaveHistory)
1:1WebHR leave records (leave type, start/end dates, status, balance consumed) have no native Bullhorn equivalent because Bullhorn is a recruitment platform. We migrate leave history as Note records attached to the Candidate, or as a Bullhorn Custom Object (LeaveHistory__c) if the customer has Front Office Growth or Enterprise edition and wants structured leave data. Balance forward is calculated and noted. We flag any leave records that may contain sensitive HR data and recommend the customer's admin review before making them visible on candidate profiles.
WebHR
Performance Reviews
Bullhorn ATS & CRM
Custom Object (Review__c) or Note
1:1WebHR Performance module stores review records linked to employees with ratings, goals, and feedback text. Custom review templates and rating scales differ across accounts. We map these to Bullhorn Custom Object records (Review__c) linked to the Candidate, or as structured Notes if the Bullhorn edition does not support Custom Objects. Rating scales are preserved as custom picklist fields; goals and feedback text migrate as long-text fields.
WebHR
Payroll Records
Bullhorn ATS & CRM
Placement Record + Note
1:1WebHR payroll records (payslips, year-to-date earnings, deductions) are available via API only if the payroll add-on ($2/employee/month) is active. We migrate payroll summary data as structured fields on the Bullhorn Placement record (if the customer uses Bullhorn Back Office for placement payroll) or as Notes attached to the Candidate. Bullhorn does not have a payroll module for general HR payroll; the Back Office handles contractor and placement billing, not employer payroll.
WebHR
Time and Attendance
Bullhorn ATS & CRM
Placement + Custom Object (Timesheet)
1:1WebHR clock-in/clock-out timestamps and approved timesheet data migrate to Bullhorn Placement records (for placed candidates) or a Custom Object (Timesheet__c) for tracking. We extract approved timesheet records and flag any unprocessed or pending entries that require manual resolution. Timesheet data linked to billable placements maps to Bullhorn time and expense records.
WebHR
Documents and Files
Bullhorn ATS & CRM
Candidate Attachment + ContentDocument
1:1WebHR's Files module stores employee documents (contracts, IDs, certifications) as binary blobs. We enumerate all file metadata, download the blobs, and re-upload them as Bullhorn Candidate attachments and ContentDocument records, preserving filenames and original upload dates. Document type is mapped to Bullhorn's attachment description field.
WebHR
Benefits
Bullhorn ATS & CRM
Custom Object (BenefitEnrollment) or Note
1:1WebHR benefit enrollment records (benefit type, coverage level, enrollment dates) migrate to Bullhorn Custom Object (BenefitEnrollment__c) linked to the Candidate, or as structured Notes if Custom Objects are unavailable. Dependent and beneficiary details map as sub-records or custom fields within the BenefitEnrollment object.
WebHR
eSignature Records
Bullhorn ATS & CRM
Note with Signature Metadata
1:1WebHR eSignature records (signed documents, signatory, signing date, audit trail) are migrated as Notes attached to the Candidate with the original signatory, timestamp, and signature status preserved in the note body. Bullhorn's native e-signature capability via integrations (DocuSign, AdobeSign) can be re-connected post-migration; the migration preserves the historical record of signed agreements.
WebHR
Custom Forms
Bullhorn ATS & CRM
Custom Object
1:1WebHR custom forms contain field data tied to specific employees. We export form response records and field values, mapping them to Bullhorn Custom Objects (one per form type) with custom fields matching the source form fields. Field types are mapped to equivalent Bullhorn custom field edit types (text, picklist, date, checkbox). If the destination Bullhorn edition supports fewer than the required custom objects, we prioritize the most operationally critical forms.
WebHR
Scheduler and Shifts
Bullhorn ATS & CRM
Event + Custom Object (Shift)
1:1WebHR Scheduler module stores shift assignments, rosters, and shift swap records. We extract active shift patterns and map them to Bullhorn Event records (for scheduled activities) or a Custom Object (Shift__c) linked to the Candidate Placement. Recurring shift patterns are documented for the customer's admin to configure in Bullhorn's calendar or Bullhorn Onboarding (Able) if shift scheduling is a recurring operational need.
WebHR
Owner
Bullhorn ATS & CRM
User
1:1WebHR users who created or owned records map to Bullhorn User records. We resolve WebHR users by email match against the Bullhorn User table. Any WebHR user without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Inactive WebHR users are mapped to inactive Bullhorn Users to preserve assignment history.
| WebHR | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Employee | ClientContact1:1 | Fully supported | |
| Companies (Organization) | ClientCorporation1:1 | Fully supported | |
| Recruitment Candidate | Candidate + JobSubmission1:1 | Fully supported | |
| Recruitment Pipeline Stage | JobSubmission Status + Custom Objectlossy | Fully supported | |
| Leaves and PTO | Note or Custom Object (LeaveHistory)1:1 | Fully supported | |
| Performance Reviews | Custom Object (Review__c) or Note1:1 | Mapping required | |
| Payroll Records | Placement Record + Note1:1 | Mapping required | |
| Time and Attendance | Placement + Custom Object (Timesheet)1:1 | Fully supported | |
| Documents and Files | Candidate Attachment + ContentDocument1:1 | Mapping required | |
| Benefits | Custom Object (BenefitEnrollment) or Note1:1 | Mapping required | |
| eSignature Records | Note with Signature Metadata1:1 | Mapping required | |
| Custom Forms | Custom Object1:1 | Mapping required | |
| Scheduler and Shifts | Event + Custom Object (Shift)1:1 | Mapping required | |
| Owner | User1: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.
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
Bullhorn ATS & CRM gotchas
ATS Growth edition has no API access
Attachments excluded from CSV bulk exports
Custom Object limits vary sharply by edition
Opportunity pipeline stages are recruitment-specific
Resume parse quality varies by document format
Pair-specific challenges
Migration approach
Discovery and tier verification
We audit the source WebHR account across active modules (base HR, Recruitment, Performance, Payroll, Scheduler, Benefits), record counts per object type, and the current WebHR subscription tier. We verify whether the payroll add-on is active and whether any modules are inaccessible on the current tier. We also extract the WebHR recruitment pipeline stage configurations and custom form definitions. The discovery output is a written migration scope document specifying which WebHR objects will migrate, which require an upgrade, and which map to Bullhorn Custom Objects requiring Bullhorn Support provisioning.
Bullhorn edition selection and Custom Object provisioning
We recommend a Bullhorn edition based on the migration scope. Bullhorn Starter ($99/user/month) covers basic ATS and CRM migration. Bullhorn Core ($165/user/month) is required if custom fields and workflows are needed. Bullhorn Pro (custom pricing) is recommended if the customer plans to use AI matching, Bullhorn Automation, or advanced analytics. We submit the Bullhorn Custom Object Setup Spreadsheet to Bullhorn Support early in this phase to begin provisioning parallel to schema design. The Bullhorn admin provisions the initial User accounts and grants the migration user API access.
Schema design and mapping rule definition
We design the Bullhorn destination schema: custom fields on Candidate, ClientCorporation, JobOrder, Opportunity, and Placement (using the Bullhorn entity's allowed custom field count per edition); Custom Objects provisioned via Bullhorn Support (LeaveHistory__c, Review__c, BenefitEnrollment__c, Timesheet__c, Shift__c, CustomForms per form type); JobSubmission status values mapped to the customer's WebHR pipeline stages; and the employee-to-candidate classification rule based on WebHR module activity. Schema is validated in a Bullhorn Sandbox org before production migration begins.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, ClientCorporations in, JobSubmissions in, Placements in), spot-checks 25-50 random records against the WebHR source, and reviews the Custom Object data structure. Any mapping corrections and Custom Object field adjustments happen in this phase. The admin signs off on the schema and mapping before production migration begins.
Owner reconciliation and User provisioning
We extract every distinct WebHR user referenced on Employee, Recruitment Candidate, and document records and match by email against the Bullhorn destination org's User table. Any WebHR user without a matching Bullhorn User goes to a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active or inactive based on whether the original WebHR user is still active). Migration cannot proceed to production until OwnerId references are resolvable on Candidate and ClientContact records.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporations (from WebHR Companies), Candidates (with employee-to-candidate classification applied and webhr_employee_id__c preserved), JobSubmissions (linked to Candidates and JobOrders), Custom Objects (LeaveHistory, Review, BenefitEnrollment, Timesheet, Shift, CustomForms), Documents and Files (as ContentDocument attachments), then Notes with payroll summary data and e-signature audit trails. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation rebuild handoff
We freeze WebHR writes during cutover, run a final delta migration of any records modified during the window, then enable Bullhorn as the system of record. We deliver the WebHR Workflow and Automation inventory document to the customer's Bullhorn admin. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not rebuild WebHR workflows as Bullhorn Tasks, Automated Actions, or Bullhorn Automation inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
WebHR
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
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 WebHR and Bullhorn ATS & CRM.
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
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 Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your WebHR to Bullhorn ATS & CRM 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 Bullhorn ATS & CRM
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.