HRMS migration
Field-level mapping, validation, and rollback between SmartRecruiters and Zoho Recruit. We move data and schema; workflows are rebuilt natively in Zoho Recruit.
SmartRecruiters
Source
Zoho Recruit
Destination
Compatibility
6 of 12
objects map 1:1 between SmartRecruiters and Zoho Recruit.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from SmartRecruiters to Zoho Recruit is a migration from a high-volume enterprise ATS with a $15,000+ annual floor to a tiered ATS that starts free and scales to enterprise. SmartRecruiters organizes hiring around Job Postings, Candidates, and Applications with organization-scoped Custom Fields surfaced only at runtime via the /configuration endpoint. Zoho Recruit uses a Candidate-centric model with Job Openings and structured Assessments, but enforces that imported Users cannot already hold a separate Zoho Recruit account and requires Last Name as a mandatory Candidate field. We run a mandatory pre-migration discovery pass to enumerate every SmartRecruiters custom field and permitted value, hold any SmartRecruiters Owner without a Zoho User identity in a reconciliation queue, and pre-create every pipeline stage in Zoho Recruit before Applications are imported so that stage assignments resolve on first insert. Workflows, Hiring Agent automations, and Assessment packages do not migrate as code; we deliver a written inventory of these for the customer's admin to rebuild in Zoho Recruit.
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 SmartRecruiters object lands in Zoho Recruit, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
SmartRecruiters
Job Posting
Zoho Recruit
Job Opening
1:1SmartRecruiters Job Posting maps directly to Zoho Recruit Job Opening. The posting UUID from SmartRecruiters becomes the external ID field in Zoho Recruit for deduplication. We map title, location city/state/country, department (from the SmartRecruiters Department object), employment type (full-time, part-time, contract mapped to Zoho picklist values), and experience level. The SmartRecruiters posting date maps to Zoho Recruit's creation timestamp, and the status field (OPEN, CLOSED, DRAFT, CANCELLED) maps to Zoho's Job Opening status picklist. Job description and requirements migrate as the Description field.
SmartRecruiters
Candidate
Zoho Recruit
Candidate
1:1SmartRecruiters Candidate maps 1:1 to Zoho Recruit Candidate. We concatenate firstName and lastName into the Full Name field, with email as the primary deduplication key. Zoho Recruit requires Last Name as a mandatory field; for candidates without a last name in SmartRecruiters we substitute 'Not Provided' per Zoho's documented import requirement. Phone, mobile, address, and social profile URLs migrate to standard Zoho fields. SmartRecruiters tags migrate as Zoho Recruit tags using the multi-record tag endpoint. Candidate history, source attribution, and consent decisions migrate to custom fields or notes.
SmartRecruiters
Application
Zoho Recruit
Candidate subform (Job Openings tab)
1:1SmartRecruiters Application records linking Candidate to Job Posting map to the Zoho Recruit Candidates subform under the Job Openings section. We resolve the SmartRecruiters Candidate UUID and Job Posting UUID to the corresponding Zoho Candidate ID and Job Opening ID before import. SmartRecruiters pipeline stage maps to a Zoho Recruit status picklist; we pre-create all SmartRecruiters stages as picklist values in Zoho before this mapping runs. Any screening answers from SmartRecruiters migrate as custom fields on the Zoho Candidate record. Note: SmartRecruiters Application API only accepts New status on insert; we handle the stage assignment in Zoho directly without a two-step workaround.
SmartRecruiters
User
Zoho Recruit
User
1:1SmartRecruiters Users (recruiters, hiring managers, admins) map to Zoho Recruit Users by email match. Zoho Recruit enforces a hard constraint: a person cannot be imported as a User if they already hold a separate Zoho Recruit account under any organization. We run a pre-migration check against the destination Zoho Recruit org for every SmartRecruiters Owner; any collision requires the account to be closed before import proceeds. Active SmartRecruiters users map to active Zoho Users with role preserved; any user without a destination match goes to a reconciliation queue for the customer's admin to provision.
SmartRecruiters
Department
Zoho Recruit
Department (Zoho People integration) or custom picklist
lossySmartRecruiters Department records map to Zoho Recruit Departments if the organization uses Zoho People. If Zoho People is not in scope, department data migrates as a custom picklist field on Job Opening and Candidate so that reporting by department remains available. We preserve the department hierarchy (parent and child department relationships) as a custom related-field structure in Zoho.
SmartRecruiters
Hiring Team
Zoho Recruit
User assignment on Job Opening
lossySmartRecruiters assigns hiring team members (recruiters, hiring managers, sourcers, coordinators) per job via user ID and role. We map these assignments to Zoho Recruit's assignee and collaborator fields on Job Opening records. The SmartRecruiters role labels (hiring_manager, recruiter, sourcer) map to Zoho's User field assignments with role notes preserved in a custom field. If a SmartRecruiters Hiring Team member has no Zoho User account, their assignment is logged in the inventory document for the customer's admin to provision before cutover.
SmartRecruiters
Interview Record
Zoho Recruit
Interview
1:1SmartRecruiters Interview records (scheduling data, interviewer assignments, outcome notes) map to Zoho Recruit Interview records. We map interview date and time, interviewer name (resolved to Zoho User by email), interview type, and overall disposition. SmartRecruiters scorecard evaluation data migrates to Zoho Recruit Assessment records linked to the Interview; the schema difference (structured scorecard fields in SmartRecruiters vs freeform assessment criteria in Zoho) means we map the evaluator scores as Assessment criteria records and preserve evaluator comments as assessment notes. Interview status (SCHEDULED, COMPLETED, CANCELLED) maps to Zoho Interview status.
SmartRecruiters
Offer
Zoho Recruit
Candidate (offer fields) or custom module
lossySmartRecruiters Offer records (compensation details, start date, offer status, candidate linkage) migrate as custom fields on the Zoho Recruit Candidate record or as a custom Offer module if the customer has Zoho Creator add-ons. Compensation structure (base salary, bonus, equity) migrates to currency custom fields; offer status (EXTENDED, ACCEPTED, DECLINED, WITHDRAWN) migrates to a picklist. The candidate linkage resolves via email match to the migrated Zoho Candidate record.
SmartRecruiters
Attachment
Zoho Recruit
Attachment (Candidate)
1:1SmartRecruiters attachments (resumes, cover letters, portfolio files) stored against candidate profiles migrate as Zoho Recruit Candidate Attachments. We use Zoho Recruit's bulk file attachment endpoint to upload each file and associate it with the target Candidate record via ID resolution. Resume parsing results from SmartRecruiters migrate to Zoho Recruit's resume parser custom fields if the customer enables that feature in Zoho. File naming conventions from SmartRecruiters are preserved so that candidates' document history is auditable at the destination.
SmartRecruiters
Custom Field
Zoho Recruit
Custom Field
lossySmartRecruiters custom fields are organization-scoped and have no standard set; every organization defines its own fieldLabel and valueLabel pairs surfaced only at runtime. We run a mandatory pre-migration discovery pass using the SmartRecruiters /configuration endpoint to enumerate every active custom field, its data type (string, picklist, number, date, boolean), and permitted value list. We then pre-create equivalent custom fields in Zoho Recruit via Setup > Fields > Custom > Create New Field, matching data type and picklist values before any data import begins. Skipping this step leads to silent value loss when unmapped SmartRecruiters custom fields are dropped at Zoho import time. SmartRecruiters custom fields using multi-select or tag structures map to Zoho multi-select picklists or tags respectively.
SmartRecruiters
Scorecard
Zoho Recruit
Assessment
lossySmartRecruiters Interview Scorecards (structured evaluation data per interviewer) do not map to a standalone Zoho Recruit object; we translate them into Zoho Recruit Assessment records linked to the corresponding Interview. Each SmartRecruiters scorecard criterion maps to an Assessment criterion in Zoho, with the evaluator's numeric score mapped to the criterion score field and free-text comments preserved in the notes. The overall recommendation (move forward, hold, reject) maps to a custom picklist field. This transformation is documented in the mapping spec for customer sign-off before production migration.
SmartRecruiters
Consent Record
Zoho Recruit
Custom Field or notes on Candidate
lossySmartRecruiters stores candidate consent decisions (email consent, data retention consent, GDPR flags) against the Candidate record. Zoho Recruit does not have a standard consent management module, so we migrate consent data to a set of custom fields on the Candidate record (consent_email__c, consent_data_retention__c, consent_gdpr__c) as boolean or date fields, or to candidate notes if the customer prefers an audit-log approach. This is a configuration decision made during scoping.
| SmartRecruiters | Zoho Recruit | Compatibility | |
|---|---|---|---|
| Job Posting | Job Opening1:1 | Fully supported | |
| Candidate | Candidate1:1 | Fully supported | |
| Application | Candidate subform (Job Openings tab)1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Department | Department (Zoho People integration) or custom picklistlossy | Fully supported | |
| Hiring Team | User assignment on Job Openinglossy | Fully supported | |
| Interview Record | Interview1:1 | Fully supported | |
| Offer | Candidate (offer fields) or custom modulelossy | Fully supported | |
| Attachment | Attachment (Candidate)1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Scorecard | Assessmentlossy | Fully supported | |
| Consent Record | Custom Field or notes on Candidatelossy | 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.
SmartRecruiters gotchas
Custom field schema discovery is required before any migration can begin
SAP acquisition integration may alter data residency and API access patterns
Candidate API only creates applications in New status via public endpoint
Large report file exports require command-line tools, not browser download
Zoho Recruit gotchas
Daily API rate limits are tier-gated and per-user capped
User import hard cap of 2,000 records
Attachment folder hierarchy must be preserved exactly
Resume parsing quota varies by plan and resets daily
Custom fields unavailable in Free and Standard editions
Pair-specific challenges
Migration approach
Discovery and custom field enumeration
We audit the source SmartRecruiters environment using the Candidate API, Job API, and Application API with OAuth 1.0 token authentication. The first discovery task is a mandatory custom field enumeration pass via the /configuration endpoint to retrieve every organization-scoped custom field, its data type, and its permitted value list. We pair this with a full audit of active Job Postings, Candidates, Applications (with pipeline stages), Interview records, and Offer data. We also extract all SmartRecruiters Users (Owners) by email to run the Zoho Recruit account collision check. The discovery output is a written migration scope document with record counts, a custom field manifest, a user reconciliation list, and a Zoho Recruit edition recommendation based on the customer's user count and feature requirements.
Schema design and Zoho Recruit field provisioning
We design the Zoho Recruit destination schema before any data import begins. This includes pre-creating every SmartRecruiters custom field as a Zoho Recruit custom field with matching data type (string, number, date, picklist, multi-select), configuring all SmartRecruiters pipeline stages as Zoho Recruit Job Opening status or stage picklist values, and setting up any custom modules required for Offer records. We also create the department picklist or configure Zoho People Department integration based on the customer's scope. Schema provisioning happens in a Zoho Recruit Sandbox environment first for validation, then moves to production.
User reconciliation and Zoho account collision resolution
We extract every distinct SmartRecruiters Owner referenced on Candidate, Application, and Interview records and match by email against the destination Zoho Recruit org's User table. For each collision (an email that already has a Zoho Recruit account), we surface the issue to the customer's admin with instructions to close the separate account. For each Owner without a Zoho identity, we hold the record in the reconciliation queue. Migration cannot proceed past record import until all Owner-to-User references are resolved because Zoho Recruit enforces OwnerId as a required or recommended field on most objects. We validate the user provisioning before production migration begins.
Sandbox migration and reconciliation
We run a full migration into a Zoho Recruit Sandbox environment using production-like data volumes. The customer's HR lead reconciles record counts across Candidates, Job Openings, Applications, Interviews, and Attachments, spot-checks 25-50 random candidate records against the SmartRecruiters source for field-level accuracy, and validates that pipeline stage assignments landed correctly on Applications. Any field mapping corrections, custom field omissions, or stage configuration errors are documented and corrected before the production migration plan is finalized. Sandbox sign-off gates the production migration start date.
Production migration in dependency order
We run production migration in record-dependency order to satisfy Zoho Recruit's foreign key requirements. Job Openings import first (they are referenced by Applications). Candidates import second (they are referenced by Applications and Interviews). Applications import third once both Job Opening IDs and Candidate IDs are resolved. Interviews and Scorecards import fourth with Candidate and Job Opening ID lookups resolved. Offers and Attachments import last. We use Zoho Recruit's bulk API with batches of 100 records per call, track credit consumption, and apply exponential backoff on rate-limit responses. Each phase emits a row-count reconciliation report and an error log before the next phase begins.
Cutover, delta migration, and workflow rebuild handoff
We freeze SmartRecruiters writes during cutover, run a final delta migration of any records created or modified in the 24-48 hour window since the initial production import, then enable Zoho Recruit as the system of record. We deliver the Workflow and Hiring Agent inventory document to the customer's admin team, with each SmartRecruiters automation mapped to a recommended Zoho Recruit Workflow Rule configuration. We support a one-week hypercare window for reconciliation issues. We do not rebuild SmartRecruiters workflows as Zoho Recruit Workflow Rules inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
SmartRecruiters
Source
Strengths
Weaknesses
Zoho Recruit
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 SmartRecruiters and Zoho Recruit.
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
SmartRecruiters: Not publicly documented on the developer portal.
Data volume sensitivity
SmartRecruiters 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 SmartRecruiters to Zoho Recruit migration scoping. Not seeing yours? Book a call.
Walk through your SmartRecruiters to Zoho Recruit migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave SmartRecruiters
Other ways to arrive at Zoho Recruit
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.