HRMS migration
Field-level mapping, validation, and rollback between SnapHire and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
SnapHire
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 12
objects map 1:1 between SnapHire and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from SnapHire to Bullhorn is a migration from a New Zealand-origin ATS with a strong regional footprint to a globally-dominant staffing platform serving over 10,000 agencies. The primary complexity is not schema translation but extraction: SnapHire does not publish bulk export API documentation, and data extraction from SnapHire for Bullhorn migrations has been documented at two to three weeks depending on volume. We coordinate with the SnapHire Client Success team early in discovery to request the export, which unblocks the migration schedule. We map SnapHire Candidates to Bullhorn Candidates, Jobs to Bullhorn JobOrders, and custom candidate data fields to Bullhorn Custom Objects or standard fields depending on the Bullhorn edition. Workflows, Candidate Match scoring logic, and intelliHR onboarding push configurations do not migrate; we document them for the customer's admin to rebuild in Bullhorn post-cutover.
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 SnapHire 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.
SnapHire
Candidate
Bullhorn ATS & CRM
Candidate
1:1SnapHire Candidate records (name, contact details, stage progression, application history) map directly to Bullhorn Candidate. We preserve the full hiring stage history as a note or custom text area on the Bullhorn Candidate record for audit continuity. Candidate status from SnapHire maps to Bullhorn Candidate status using an explicit value-mapping table built during scoping.
SnapHire
Job
Bullhorn ATS & CRM
JobOrder
1:1SnapHire Job records (title, department, location, description, pipeline association) map to Bullhorn JobOrder. The JobOrder's status field maps from SnapHire job status, and we preserve the job's assigned categories as Bullhorn JobOrder categories or custom fields depending on the Bullhorn edition. Job attachments migrate as ContentDocumentLink records attached to the JobOrder.
SnapHire
Custom Candidate Data Fields
Bullhorn ATS & CRM
Custom Object or Custom Fields
lossySnapHire custom candidate data fields vary per-organization and are extracted during the SnapHire Client Success coordination phase. Multi-choice dropdowns and checkboxes require explicit value mapping to Bullhorn equivalent picklists or Custom Object fields. Bullhorn ATS edition supports 2 Custom Objects with 55 fields each; Bullhorn Front Office Growth/Enterprise supports 10. We pre-create the destination schema before migration and match field types to the closest Bullhorn field type.
SnapHire
Candidate Match (Talent Community)
Bullhorn ATS & CRM
Candidate with Custom Score Field
1:1The SnapHire Candidate Match feature generates match scores between talent community candidates and job profiles. These scores are preserved as a static custom field on the Bullhorn Candidate record during migration. The matching algorithm logic itself is SnapHire-native and cannot be replicated in Bullhorn. We document the matched candidate list with their scores for the customer's Bullhorn admin to evaluate using Bullhorn Search & Match if that module is licensed.
SnapHire
Workflow
Bullhorn ATS & CRM
Candidate Pipeline Stage Configuration
lossySnapHire workflows define hiring stage progressions and configurable actions per stage. Bullhorn does not have a direct equivalent at the object level. We document the existing SnapHire workflow configuration (stages, actions, triggers, assignment rules) as a written specification and recommend Bullhorn Automation or manual pipeline stage configuration as the rebuild path post-cutover.
SnapHire
Category
Bullhorn ATS & CRM
JobOrder Category or Tag
lossySnapHire job categories are user-defined labels used for reporting. They have no direct Bullhorn equivalent at the object level. We map them to Bullhorn JobOrder categories or tag them using Bullhorn's tagging model depending on the Bullhorn edition. The customer chooses the preferred approach during scoping, and we flag any categories that cannot map directly.
SnapHire
Attachment (Candidate)
Bullhorn ATS & CRM
ContentDocumentLink (Candidate)
1:1Candidate resumes, cover letters, and assessment files stored as attachments in SnapHire are downloaded as binary blobs and re-uploaded to Bullhorn as ContentDocument records linked via ContentDocumentLink to the Candidate record. We preserve the original filename and any SnapHire metadata (upload date, source) in the ContentDocument description field.
SnapHire
Attachment (Job)
Bullhorn ATS & CRM
ContentDocumentLink (JobOrder)
1:1Job-level attachments (job descriptions, requirements documents, company briefs) migrate to Bullhorn JobOrder as ContentDocument records attached via ContentDocumentLink. We maintain the association to the correct JobOrder during import using the Bullhorn JobOrder ID resolved during the job migration phase.
SnapHire
Hiring Stage History
Bullhorn ATS & CRM
Note or Custom Text Area
1:1SnapHire records each Candidate's movement through hiring stages with timestamps and optional rejection reasons. We preserve this as a formatted Note or custom text area on the Bullhorn Candidate record, maintaining the chronological order and including the original stage name, date, and any rejection reason recorded in SnapHire.
SnapHire
Rejection Reasons
Bullhorn ATS & CRM
Custom Field or Candidate Status Mapping
lossySnapHire rejection reasons are configured per-organization as freeform text or predefined lists. We extract the full rejection reason taxonomy from SnapHire during discovery and map each reason to either a Bullhorn custom Candidate field or a Candidate status value, depending on which approach the customer prefers. Unmapped reasons are preserved as text for manual review post-cutover.
SnapHire
Onboarding Workflow
Bullhorn ATS & CRM
Document
1:1SnapHire onboarding workflows push new hire data to intelliHR (Humanforce) to create employee records. This integration does not exist in Bullhorn. We extract the onboarding configuration (trigger, field mappings, downstream destination) as a written specification for the customer's Bullhorn admin to rebuild using Bullhorn Onboarding or a third-party integration if applicable.
SnapHire
Owner
Bullhorn ATS & CRM
User
1:1SnapHire Owners map to Bullhorn User records by email match. We extract every distinct owner referenced on Candidate, Job, and attachment records and match against the Bullhorn destination User table. Owners without a matching Bullhorn User are placed in a reconciliation queue for the customer's admin to provision before record import resumes.
| SnapHire | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job | JobOrder1:1 | Fully supported | |
| Custom Candidate Data Fields | Custom Object or Custom Fieldslossy | Mapping required | |
| Candidate Match (Talent Community) | Candidate with Custom Score Field1:1 | Mapping required | |
| Workflow | Candidate Pipeline Stage Configurationlossy | Fully supported | |
| Category | JobOrder Category or Taglossy | Fully supported | |
| Attachment (Candidate) | ContentDocumentLink (Candidate)1:1 | Fully supported | |
| Attachment (Job) | ContentDocumentLink (JobOrder)1:1 | Fully supported | |
| Hiring Stage History | Note or Custom Text Area1:1 | Fully supported | |
| Rejection Reasons | Custom Field or Candidate Status Mappinglossy | Mapping required | |
| Onboarding Workflow | Document1:1 | Fully supported | |
| 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.
SnapHire gotchas
SnapHire Bullhorn export can take 2–3 weeks
Custom data fields vary per-organization
Candidate Match scores are not transferable as logic
No public API documentation for bulk export
Onboarding workflows push to intelliHR only
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 SnapHire extraction request
We audit the SnapHire tenant across objects in use: Candidate volume, Job volume, custom field inventory, workflow configuration summary, Candidate Match talent community size, rejection reason taxonomy, and attachment count. We immediately submit the data extraction request to SnapHire Client Success to start the two to three week extraction window in parallel with configuration work. We pair this with a Bullhorn edition assessment (Starter/Core/Pro) to determine Custom Object limits and whether Bullhorn Automation is in scope.
Schema design and Custom Object setup
We design the Bullhorn destination schema: standard fields mapped from SnapHire (Candidate, JobOrder, etc.), Custom Object schema built from the SnapHire custom field inventory, and any custom fields on JobOrder or Candidate. We submit the Bullhorn Custom Object Setup Spreadsheet to Bullhorn Support for provisioning (Bullhorn Support creates Custom Objects, not the admin). Bullhorn editions cap Custom Objects at 2 (ATS) or 10 (Front Office Growth/Enterprise); if the SnapHire custom field count exceeds this, we group fields into fewer Custom Objects or flag the overflow for manual post-migration entry. Stage history and rejection reasons are mapped to Bullhorn custom text areas or note records.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using production-like data volume once the SnapHire export is delivered. The customer's operations lead reconciles record counts (Candidates in, Jobs in, Attachments in), spot-checks 25-50 random records against the SnapHire source data, and validates custom field mapping completeness. We resolve any mapping gaps before production migration begins. This step also validates the SnapHire CSV structure and flags any malformed records that need correction in the source export.
Owner reconciliation and User provisioning
We extract every distinct SnapHire Owner referenced on Candidate, Job, and attachment records and match by email against the Bullhorn destination User table. Any Owner without a matching Bullhorn User goes to a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active or inactive depending on whether the original SnapHire user is still active) before production migration proceeds. OwnerId references on Bullhorn records must be valid at migration time.
Production migration in dependency order
We run production migration in record-dependency order: Jobs/JobOrders (no parent dependencies), Candidates (with OwnerId resolved), custom data fields (after Custom Object schema is confirmed live in Bullhorn), attachments (via ContentDocument and ContentDocumentLink), stage history and rejection reasons (as notes or custom text fields), and Candidate Match scores (as custom fields on Candidate). Each phase emits a row-count reconciliation report before the next phase begins. We use Bullhorn REST API with rate-limit handling for standard imports and CSV-based bulk import where appropriate.
Cutover, validation, and rebuild handoff
We freeze SnapHire writes during cutover, run a final delta migration of any records modified during the migration window, then enable Bullhorn as the system of record. We deliver the SnapHire workflow configuration document and the intelliHR onboarding specification to the customer's Bullhorn admin for rebuild. We provide a one-week hypercare window to resolve reconciliation issues raised by the recruiting team. We do not rebuild SnapHire workflows as Bullhorn Automation inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
SnapHire
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between SnapHire and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across SnapHire and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between SnapHire and Bullhorn ATS & CRM.
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
SnapHire: Not publicly documented.
Data volume sensitivity
SnapHire 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 SnapHire to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your SnapHire 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 SnapHire
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.