HRMS migration
Field-level mapping, validation, and rollback between Teamtailor and Zoho Recruit. We move data and schema; workflows are rebuilt natively in Zoho Recruit.
Teamtailor
Source
Zoho Recruit
Destination
Compatibility
9 of 12
objects map 1:1 between Teamtailor and Zoho Recruit.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Teamtailor to Zoho Recruit is a platform switch that preserves core recruiting data while adapting to a different ATS architecture. Teamtailor organizes hiring around a Candidate-centric model with Jobs and Job Applications as linked relations, while Zoho Recruit uses a Candidates module with a separate Job Openings module and a Job Submission join object that must be explicitly created during import. We handle the schema translation, including Teamtailor's custom fields on candidate cards and job postings (which have no unified metadata API and require a discovery pass), and resolve Teamtailor's API rate limit constraints (50 req/10s) against Zoho Recruit's Credits-based V2 API limits that vary by edition. Workflows and automations from Teamtailor do not migrate; we deliver a written inventory of every active trigger and automation rule for the customer's admin to rebuild in Zoho Recruit's Blueprint and workflow tools. Interview Kits and structured question sets require manual reconstruction in Zoho Recruit's interview framework.
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 Teamtailor 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.
Teamtailor
Candidate
Zoho Recruit
Candidate
1:1Teamtailor Candidates map to Zoho Recruit Candidates. The mapping includes first name, last name, email, phone, LinkedIn URL, source, and all custom fields discovered during the scoping discovery pass. Email serves as the primary dedupe key. Custom fields on the candidate card (discovered by inspecting a sample of records since Teamtailor exposes no unified schema endpoint) map to Zoho Recruit custom fields on the Candidates module, using type mapping: text to single-line, multi-checkbox to multi-select picklist, date to date field, and numeric values to number or currency fields based on content.
Teamtailor
Job
Zoho Recruit
Job Opening
1:1Teamtailor Jobs map to Zoho Recruit Job Openings. Job title, status (active/paused/closed), department, location, and job body content migrate. The job status maps to Zoho Recruit's Opening Status field (Open, On Hold, Closed). Teamtailor's job-specific custom fields (discovered during scoping) map to custom fields on the Job Openings module. The public job URL is preserved in a custom text field for reference.
Teamtailor
Job Application
Zoho Recruit
Job Submission
1:1Teamtailor Job Applications (the join between Candidate and Job with status, source, and timestamps) map to Zoho Recruit Job Submissions. This is a critical mapping: Zoho Recruit requires the Job Submission record to be explicitly created and linked to both the Candidate and the Job Opening. Application status from Teamtailor (applied, screening, interview, offer, hired, rejected) maps to Zoho Recruit's Submission Status values. Rejection reasons and stage-at-rejection migrate to custom fields on the Job Submission.
Teamtailor
Department
Zoho Recruit
Department
1:1Teamtailor Departments export as a flat list and map directly to Zoho Recruit Departments. In Zoho Recruit, Departments are used to organize Job Openings and sometimes to assign hiring managers. We import the department taxonomy before Job Openings so that the department lookup is satisfied at import time.
Teamtailor
Location
Zoho Recruit
Location
1:1Teamtailor Locations export as a flat list and map to Zoho Recruit Locations. Geographic information from Teamtailor's location fields migrates as location text; Zoho Recruit's Location module supports city, state, and country fields which we populate where available from the source data.
Teamtailor
Custom Fields (Candidates)
Zoho Recruit
Custom Fields (Candidates)
1:1Teamtailor custom fields on candidate cards are user-defined key-value pairs with no standardized API schema. We run a discovery pass on a sample of 50-100 candidate records to enumerate field names, types, and picklist values. Each discovered field maps to a corresponding Zoho Recruit custom field on the Candidates module, created before migration. Lookup fields from Teamtailor (if referencing other Teamtailor objects) are converted to text fields or to Zoho Recruit Lookup fields pointing at the migrated related record, depending on the target module's availability in Zoho Recruit.
Teamtailor
Custom Fields (Job Postings)
Zoho Recruit
Custom Fields (Job Openings)
1:1Teamtailor custom fields on job postings differ from candidate custom fields and are scoped to the job object. These fields are optional and depend on the customer's job template configuration. We discover them during the same scoping pass and create equivalent custom fields on the Job Openings module in Zoho Recruit. Field types map as for candidate custom fields.
Teamtailor
User (Hiring Team)
Zoho Recruit
Staff
1:1Teamtailor Users (recruiters and hiring managers) map to Zoho Recruit Staff records. We resolve by email match. Any Teamtailor user referenced on a Candidate, Job, or Job Application without a matching Zoho Recruit Staff record enters a reconciliation queue for the customer to provision before record import proceeds. Roles (Admin, Recruiter, Hiring Manager) map to Zoho Recruit profile permissions.
Teamtailor
Interview Kits and Questions
Zoho Recruit
Interview Kits (manual rebuild)
lossyTeamtailor Interview Kits group structured questions for candidate evaluation and are tied to jobs via the API. Zoho Recruit does not have an equivalent Interview Kit object at the API level; interview scheduling uses scorecards and rating templates within the Interview module. We export the full list of Interview Kit names, question text, question type, and the jobs they are attached to. This inventory is delivered as a written handoff document for the customer's admin to recreate interview templates in Zoho Recruit's Interview framework.
Teamtailor
Uploads and Attachments
Zoho Recruit
Attachments
1:1Teamtailor resumes, cover letters, and other candidate files are stored as upload objects with a URL returned by the API; the file itself must be fetched separately. We download each file, map it to the corresponding Zoho Recruit Candidate record, and upload it as an attachment using Zoho Recruit's file attachment API. File type and original filename are preserved. Files that cannot be retrieved (expired URLs or access-restricted uploads) are flagged in the reconciliation report.
Teamtailor
Multi-Brand / Entity Configurations
Zoho Recruit
Separate Account or Tag-Based Approach
lossyTeamtailor's Multi-Brand feature allows a single account to host multiple employer brands with separate career sites and sometimes separate candidate pools. Zoho Recruit does not have a native multi-brand equivalent. We scope the export to each brand separately during discovery and deliver brand-tagged datasets. The customer decides whether to create separate Zoho Recruit accounts per brand (preferred for full data isolation) or to use a Brand tag on Candidate and Job Opening records for filtering within a single account.
Teamtailor
Candidate Activity (Answers and Actions)
Zoho Recruit
Activity Log / Tasks
lossyTeamtailor's /v1/answers and /v1/actions endpoints return candidate activity data including questionnaire responses and candidate interactions. These endpoints return HTTP 500 on unbounded queries for large datasets. We paginate by date range (monthly slices) and migrate key activity indicators (application received, stage changed, offer extended) as custom fields on the Job Submission or as Tasks on the Candidate. Full answer-by-answer migration is scoped based on the customer's requirements and the dataset size.
| Teamtailor | Zoho Recruit | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job | Job Opening1:1 | Fully supported | |
| Job Application | Job Submission1:1 | Fully supported | |
| Department | Department1:1 | Fully supported | |
| Location | Location1:1 | Fully supported | |
| Custom Fields (Candidates) | Custom Fields (Candidates)1:1 | Mapping required | |
| Custom Fields (Job Postings) | Custom Fields (Job Openings)1:1 | Mapping required | |
| User (Hiring Team) | Staff1:1 | Fully supported | |
| Interview Kits and Questions | Interview Kits (manual rebuild)lossy | Mapping required | |
| Uploads and Attachments | Attachments1:1 | Mapping required | |
| Multi-Brand / Entity Configurations | Separate Account or Tag-Based Approachlossy | Mapping required | |
| Candidate Activity (Answers and Actions) | Activity Log / Taskslossy | 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.
Teamtailor gotchas
API rate limit of 50 requests per 10 seconds can stall bulk exports
Unbounded answers and actions endpoints return HTTP 500 on large datasets
Custom fields are not surfaced in a unified schema endpoint
Automation and trigger rules are not accessible via the public API
API versioning header is required on every request
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 schema mapping
We audit the Teamtailor account for object volumes (Candidates, Jobs, Job Applications, custom fields, departments, locations, hiring team users), active automations visible in the UI, Interview Kits, and multi-brand entity count. We run the custom field discovery pass on a sample of records to enumerate field names and types. In parallel, we confirm the target Zoho Recruit edition and available Credits ceiling. The discovery output is a written migration scope with a field-level mapping spreadsheet and a Zoho Recruit schema pre-creation checklist.
Zoho Recruit schema pre-creation
Before any data moves, we create all required custom fields on the Candidates and Job Openings modules in Zoho Recruit, matching the types discovered from Teamtailor. We create the Department and Location taxonomy records. We confirm Staff record provisioning for each Teamtailor user. If the customer has chosen a multi-account multi-brand architecture, we set up each Zoho Recruit account with its own schema. Schema is validated in a Zoho Recruit sandbox or trial account before production migration begins.
Teamtailor export with rate limit handling
We export data from Teamtailor using the JSON API with token authentication and the required X-Api-Version: 20240404 header. Our extraction workers pace at 50 requests per 10 seconds to stay within the rolling bucket limit, with exponential backoff on HTTP 429 responses. The /v1/answers and /v1/actions endpoints are split into date-bounded slices (monthly) to avoid HTTP 500 errors on unbounded datasets. File attachments are downloaded separately using the upload URLs returned by the API.
Data transformation and deduplication
We transform exported Teamtailor records into Zoho Recruit API format. Candidates are deduplicated by email. Jobs are mapped to Job Openings with status translation. Job Applications are held as a pending join set until Job Openings and Candidates are both present in Zoho Recruit. Custom field values are type-checked against the Zoho Recruit field definitions created in Step 2 and reformatted where necessary (date formats, picklist value matching). Owner email addresses are resolved to Zoho Recruit Staff IDs.
Production migration in dependency order
We execute production migration in record-dependency order: Locations and Departments first (taxonomy), then Job Openings (since Job Submissions depend on them), then Candidates (with custom field values), then Job Submissions (join records linking Candidates to Job Openings), then Staff assignments on records, then Attachments. Each phase emits a row-count reconciliation report. We pace inserts to stay within Zoho Recruit's Credits ceiling and concurrency limits, batching to 100 records per API call as documented in Zoho's API guide.
Cutover, validation, and automation handoff
We freeze Teamtailor writes during cutover and run a delta migration of any records modified during the migration window. We deliver a reconciliation report comparing Teamtailor record counts to Zoho Recruit imported counts with a delta list for manual resolution. We deliver the Interview Kit inventory and the Teamtailor Automation and Trigger Rule document for the customer's admin to rebuild in Zoho Recruit's Blueprint and Workflow tools. We support a one-week hypercare window for reconciliation issues raised by the recruiting team.
Platform deep dives
Teamtailor
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 Teamtailor 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
Teamtailor: 50 requests per 10 seconds per organization.
Data volume sensitivity
Teamtailor 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 Teamtailor to Zoho Recruit migration scoping. Not seeing yours? Book a call.
Walk through your Teamtailor 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 Teamtailor
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.