HRMS migration
Field-level mapping, validation, and rollback between SnapHire and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
SnapHire
Source
Recruit CRM & ATS
Destination
Compatibility
8 of 12
objects map 1:1 between SnapHire and Recruit CRM & ATS.
Complexity
BStandard
Timeline
5-8 weeks
Overview
SnapHire to Recruit CRM is a migration from a New Zealand-origin ATS with configurable workflows and limited export tooling to a globally-used recruitment platform rated 4.9 on Capterra by over 460 reviewers. The structural challenge is SnapHire's absence of a documented public API for bulk data extraction — we coordinate CSV exports through SnapHire's Client Success team and transform the output for Recruit CRM's REST API ingestion. Recruit CRM's associated-fields model (per-candidate, per-job custom data fields) requires field-level mapping that we scope during discovery, as SnapHire custom candidate fields vary per-organization with no shared schema. We preserve candidate stage history and rejection reasons as explicit fields in Recruit CRM. Workflows, SnapHire's Candidate Match talent community scoring logic, and SnapHire's intelliHR onboarding push do not migrate — we document these for the customer's admin to rebuild in Recruit CRM 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 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.
SnapHire
Candidate
Recruit CRM & ATS
Contact
1:1SnapHire Candidate records map to Recruit CRM Contact. Name, email, phone, address, and application history transfer directly. Candidate status (active, archived, rejected) maps to Recruit CRM's Contact status field. Historical stage movements are preserved as a stage_history custom text field or as a dated timeline note on the Contact record for auditability.
SnapHire
Job
Recruit CRM & ATS
Job Requisition
1:1SnapHire Job records (title, department, location, description, pipeline assignment) map to Recruit CRM Job Requisition. The job pipeline in SnapHire becomes a Recruit CRM pipeline with corresponding stage values. We extract the job's associated pipeline and stage configuration during discovery and build matching stage values in Recruit CRM before job records are loaded.
SnapHire
Custom Candidate Data Fields
Recruit CRM & ATS
Associated Fields
1:1SnapHire custom candidate data fields (validation rules, multi-choice dropdowns, checkboxes) map to Recruit CRM's associated_fields endpoint — POST /v1/candidates/associated-field/{candidate}/{job}. Each associated field in Recruit CRM requires a pre-existing field_id, so we create the destination field schema in Recruit CRM first, extract the field IDs, then map SnapHire custom field values during ingestion. Multi-choice values require explicit option mapping if the option sets differ between platforms.
SnapHire
Workflow
Recruit CRM & ATS
Pipeline Stage
lossySnapHire hiring-stage workflows (stage progressions with configurable actions at each stage) do not migrate as code. We document the existing SnapHire workflow stages and actions in a written inventory. Each SnapHire workflow maps to a Recruit CRM pipeline configuration with matching stage names and probabilities. The customer's admin rebuilds any conditional logic or automated actions in Recruit CRM post-migration.
SnapHire
Candidate Match (Talent Community)
Recruit CRM & ATS
Candidate Matching
1:1SnapHire's Candidate Match feature generates match scores between talent community candidates and job profiles. The matched candidate records and their static scores transfer as custom fields on the candidate Contact record. The matching algorithm itself is SnapHire-native and cannot be replicated. Recruit CRM's AI-powered candidate matching regenerates match scores post-migration based on its own scoring model.
SnapHire
Hiring Stage History
Recruit CRM & ATS
Activity Timeline / Custom Stage History Field
1:1Each candidate's SnapHire stage movement history (stage name, entry date, exit date, action taken) is preserved as a structured custom field or as dated Activity notes in Recruit CRM. We extract the stage_history object from SnapHire's candidate export and populate it as a multi-line text field (or equivalent) in Recruit CRM to maintain auditability of the full hiring journey.
SnapHire
Rejection Reasons
Recruit CRM & ATS
Rejected Status / Custom Rejection Field
lossySnapHire rejection reasons are configured per-organization as freeform or predefined lists. We extract the full rejection reason taxonomy during discovery and map each reason to a Recruit CRM custom picklist field on the Contact or to a candidate status value. Any reason not covered by the destination taxonomy is flagged for manual assignment post-migration.
SnapHire
Category
Recruit CRM & ATS
Tag / Custom Field
lossySnapHire job-specific categories used for reporting do not have a direct equivalent in Recruit CRM. We map them to Recruit CRM Tags on the Job Requisition, or to a custom multi-select field if the customer requires category-level pipeline reporting. The mapping choice is made during scoping based on how the customer uses categories for analytics.
SnapHire
Attachment
Recruit CRM & ATS
Attachment / Document
1:1Candidate and job attachments — resumes, cover letters, assessment files — transfer as binary blobs. We download from SnapHire (as available via CSV export or portal download) and re-upload to Recruit CRM linked to the corresponding Contact or Job record. File naming conventions are preserved to aid recruiter recognition post-migration.
SnapHire
Owner
Recruit CRM & ATS
User
1:1SnapHire Owners referenced on Candidate, Job, and Workflow records map to Recruit CRM Users by email match. We extract all distinct owner references, match against Recruit CRM's user list, and flag any SnapHire owners without a matching Recruit CRM User for the customer's admin to provision before record import begins.
SnapHire
Onboarding Workflow Configuration
Recruit CRM & ATS
Documentation Only
lossySnapHire's onboarding automation is designed exclusively for intelliHR (Humanforce) integration — pushing new hire data to downstream HR systems. This configuration does not transfer to Recruit CRM, which has no native intelliHR push. We extract the onboarding workflow configuration and deliver it as a written document so the customer's admin can rebuild the workflow logic in Recruit CRM or a separate onboarding tool post-cutover.
SnapHire
Application
Recruit CRM & ATS
Candidate-Job Association
1:1SnapHire application records (linking a Candidate to a Job with an application date and status) map to Recruit CRM's candidate-to-job association. We resolve the candidate Contact ID and job Requisition ID at migration time and create the association using Recruit CRM's candidate-job linking endpoints or through the bulk import with explicit lookup resolution.
| SnapHire | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Candidate | Contact1:1 | Fully supported | |
| Job | Job Requisition1:1 | Fully supported | |
| Custom Candidate Data Fields | Associated Fields1:1 | Mapping required | |
| Workflow | Pipeline Stagelossy | Fully supported | |
| Candidate Match (Talent Community) | Candidate Matching1:1 | Mapping required | |
| Hiring Stage History | Activity Timeline / Custom Stage History Field1:1 | Fully supported | |
| Rejection Reasons | Rejected Status / Custom Rejection Fieldlossy | Mapping required | |
| Category | Tag / Custom Fieldlossy | Fully supported | |
| Attachment | Attachment / Document1:1 | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Onboarding Workflow Configuration | Documentation Onlylossy | Fully supported | |
| Application | Candidate-Job Association1: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
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 SnapHire export initiation
We audit the SnapHire instance across custom candidate data field inventory, active pipeline configurations, stage names, workflow structures, candidate and job record volumes, and attachment storage. We simultaneously initiate the CSV export request with SnapHire's Client Success team, recognizing that this extraction can take two to three weeks. We request the full field taxonomy from the customer and begin Recruit CRM associated-field schema design in parallel so that field IDs are ready when the export arrives.
Recruit CRM associated-field schema creation
Before any candidate data loads, we create all required associated fields in Recruit CRM via the API and capture the returned field IDs. This includes custom picklist values, validation rules, and field ordering. We configure pipeline stages in Recruit CRM to match the SnapHire workflow stage names and probabilities, ensuring that stage values used in the incoming data have valid destinations. This step gates all subsequent data ingestion.
CSV extraction, transformation, and staging
Once the SnapHire export arrives (CSV format), we stage it in a transformation environment. We apply field-level mapping from SnapHire's custom field names to Recruit CRM's associated_field IDs, resolve multi-choice option values, and build the per-candidate-per-job association payload. We run deduplication checks on candidate email addresses and flag duplicate records before ingestion. Candidate Match scores, stage history, and rejection reasons are extracted as separate structured columns for bulk load.
Owner and user reconciliation
We extract every distinct SnapHire Owner referenced on Candidate, Job, and Workflow records. We match these by email address against the Recruit CRM destination User list. Any SnapHire owner without a matching Recruit CRM User is placed in a reconciliation queue for the customer's admin to provision before record import resumes. Owner resolution gates the Contact and Job import because OwnerId references are required on most records.
Production migration in dependency order
We run production migration following record dependencies: Recruit CRM Users validated, then Job Requisitions (because candidate associations depend on them), then Candidates and their associated fields via the associated-fields endpoint, then stage history and rejection reason custom fields, then attachments. Each phase emits a row-count reconciliation report before the next phase begins. Associated-field writes use the Recruit CRM REST API with rate-limit handling and retry logic for 429 responses.
Cutover, validation, and workflow rebuild handoff
We freeze SnapHire writes during the cutover window, run a final delta migration of records modified during the window, then enable Recruit CRM as the system of record. We deliver the Workflow and Onboarding Automation inventory document to the customer's admin for rebuild in Recruit CRM. We support a one-week hypercare window for reconciliation issues. We do not rebuild SnapHire workflows as Recruit CRM automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
SnapHire
Source
Strengths
Weaknesses
Recruit CRM & ATS
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 SnapHire and Recruit CRM & ATS.
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
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 Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your SnapHire 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 SnapHire
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.