HRMS migration

Migrate from Zoho Recruit to Bullhorn ATS & CRM

Field-level mapping, validation, and rollback between Zoho Recruit and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.

Zoho Recruit logo

Zoho Recruit

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

79%

11 of 14

objects map 1:1 between Zoho Recruit and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

5-8 weeks

Rollback included Accuracy guarantee Field-level validation

Try the reverse

Bullhorn ATS & CRM
Zoho Recruit

Overview

What this migration involves

Moving from Zoho Recruit to Bullhorn is a migration from a candidate-centric ATS built for both agencies and corporate HR into Bullhorn's recruitment-CRM architecture designed specifically for staffing agencies. Zoho Recruit stores employment history, education, and interview rounds as subforms inside the Candidate record; Bullhorn separates these as candidate custom fields, candidate notes, or as part of the JobSubmission and Placement objects. We flatten Zoho subforms during the transform phase, creating matching custom fields in Bullhorn and linking subform rows to the parent Candidate via structured notes where Bullhorn's schema does not support a native equivalent. Zoho's daily API rate limit of 30,000 requests per org (capped at 1,000 per user per day on Enterprise) requires chunked batch processing, and the attachment folder hierarchy must be reconstructed under Bullhorn's /documents/Candidate/ and /documents/JobOrder/ paths before re-association. Workflows, assignment rules, Blueprint automation, and career site configuration do not migrate; we deliver a written inventory for the customer's admin to rebuild in Bullhorn.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Zoho Recruit logo

Zoho Recruit

What's pushing teams away

  • The platform's extensive customization options create a steep learning curve, with users reporting that building out workflows and custom fields takes significantly longer than expected.
  • Customer support is described as slow and inconsistent, with response times varying widely and users feeling stuck during configuration problems.
  • AI and resume parsing produce imperfect results on complex CVs, requiring manual review of every parsed resume rather than the automated workflow advertised.
  • Performance and UI consistency issues frustrate users, with slow load times and interface elements that behave differently across modules despite appearing similar.
  • Users feel locked in to the broader Zoho ecosystem — exporting clean data out requires careful CSV formatting and custom field remapping, unlike platforms with open API-first approaches.

Choosing

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

What's pulling them in

  • Agencies choose Bullhorn because it combines ATS and CRM in one platform, eliminating the need to switch between separate tools for candidate management and client relationship tracking.
  • The resume parser extracts contact details, work history, and skills into structured, searchable candidate profiles automatically without manual data entry, reportedly driving 24% more placements per recruiter.
  • Bullhorn's placement and split-billing model natively supports contract staffing workflows, handling start/end dates, overtime rules, and multi-party pay/charge rates in a single record.
  • The platform offers extensive third-party integrations through its Recruitment Cloud Marketplace, connecting with back-office, onboarding, and payroll systems used by staffing agencies.
  • 72% of Bullhorn customers are teams with fewer than 10 users, and Bullhorn's implementation team handles setup and data migration for small agencies going live within weeks.

Object mapping

How Zoho Recruit objects map to Bullhorn ATS & CRM

Each row shows how a Zoho Recruit 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.

Zoho Recruit

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Zoho Recruit Candidates map directly to Bullhorn Candidate records. Standard fields (First Name, Last Name, Email, Phone, Skills, Status) translate to Bullhorn's firstName, lastName, email, phone, skillIDs, and status. Zoho Candidate Status values (New, Active, On Hold, Dead, Joined) map to Bullhorn's Candidate status enumerations. Zoho's subforms—Employment History, Education, Certifications—are the primary transformation challenge: we flatten these into Bullhorn custom fields on the Candidate object or attach them as structured Candidate Note records during the transform phase. Custom fields require a Professional or Enterprise Bullhorn tier; we provision matching custom fields before candidate import.

Zoho Recruit

Client (Staffing Agencies)

maps to

Bullhorn ATS & CRM

ClientCorporation

1:1
Fully supported

Zoho Recruit's Clients module (agency-specific) maps to Bullhorn's ClientCorporation entity. Standard fields including Client Name, Website, Industry, and Address map to ClientCorporation fields directly. Client-specific custom fields (fee structures, preferred categories, tier classifications) migrate to Bullhorn custom fields on ClientCorporation. We create the ClientCorporation records first in the dependency order so that Candidate-to-Client lookup relationships can be resolved at insert time rather than through a separate update pass.

Zoho Recruit

Contact

maps to

Bullhorn ATS & CRM

Contact

1:1
Fully supported

Zoho Recruit Contacts (hiring managers, client representatives) map to Bullhorn Contact records linked to the corresponding ClientCorporation. First Name, Last Name, Email, Phone, Title, and Department migrate directly. The Zoho Contact-to-Client lookup relationship maps to Bullhorn's Contact.ClientCorporationId reference. Custom fields on Zoho Contacts (Extended certifications, Preferred communication method) migrate to Bullhorn Contact custom fields. Any Zoho Contact without a corresponding ClientCorporation is created as a standalone Contact; we flag these during scoping for customer review.

Zoho Recruit

Job Opening

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

Zoho Recruit Job Openings map to Bullhorn JobOrder records. Title, Description, Employment Type, and Address map to JobOrder fields directly. Zoho pipeline stages map to Bullhorn JobOrder status values (Open, Pending, Closed, Cancelled). We configure Bullhorn JobOrder status values before migration so that the stage translation is deterministic. Job Order custom fields migrate to Bullhorn JobOrder custom fields. Zoho's job board posting history does not migrate; we document the posting URLs and boards for the customer to reconfigure in Bullhorn's job distribution settings.

Zoho Recruit

Interview

maps to

Bullhorn ATS & CRM

JobSubmission + Candidate Note

1:many
Fully supported

Zoho Recruit Interviews are subforms within the Candidate record with scheduled time, interview type, interviewer, and feedback fields. Bullhorn separates interview history into the JobSubmission object (which tracks a candidate's journey through a specific job order) and candidate notes for qualitative feedback. We transform each Zoho interview subform row into a Bullhorn JobSubmission record for the associated JobOrder, then attach interview feedback as a Candidate Note linked to the submission. Interviewer name and interview type (Phone Screen, Technical, Onsite, Panel) map to JobSubmission custom fields or note content.

Zoho Recruit

Note

maps to

Bullhorn ATS & CRM

Note

1:1
Fully supported

Zoho Recruit Notes attached to Candidates, Job Openings, Clients, and Contacts migrate to Bullhorn Note records linked via ContentDocumentLink to the corresponding Bullhorn entity. Plain-text notes migrate as-is. Rich-text notes preserve HTML formatting where the destination Bullhorn instance supports it. We preserve the original note author and creation timestamp in Bullhorn note metadata. Notes attached to Zoho subforms (Employment History, Education) that we flatten into candidate custom fields are linked back to the candidate via structured note content referencing the flattened field data.

Zoho Recruit

Task

maps to

Bullhorn ATS & CRM

Task

1:1
Fully supported

Zoho Recruit Tasks map to Bullhorn Task records with Status, Priority, Subject, Due Date, and assigned Owner preserved. Task type discriminator (General, Screening, Submission Follow-up) maps to Bullhorn Task custom fields or category tags. Zoho's assignment rules are not migrated; we preserve the task owner by resolving Zoho Owner email to Bullhorn User ID during the Owner reconciliation phase. Tasks without a matching Bullhorn User are assigned to the migration admin for manual reassignment.

Zoho Recruit

Event

maps to

Bullhorn ATS & CRM

Event

1:1
Fully supported

Zoho Recruit Events (calendar-based meetings and interviews) map to Bullhorn Event records. Start Date/Time, End Date/Time, Location, Description, and attendees migrate directly. We link Bullhorn Events to the corresponding Candidate and JobOrder via the WhatId reference. Events without a parent JobOrder (general recruitment meetings) are created without a WhatId and linked to the primary recruiter's User record. All-day event flags and event series (recurring meetings) are not preserved; we migrate individual event instances only.

Zoho Recruit

Call Log

maps to

Bullhorn ATS & CRM

Task (Call subtype)

1:1
Fully supported

Zoho Recruit Call Logs map to Bullhorn Task records with TaskSubtype = Call. Call duration, disposition, phone number dialed, and caller type (Inbound/Outbound) migrate to Bullhorn Task custom fields. Call recording URLs stored in Zoho are preserved as Bullhorn ContentDocument records linked via ContentDocumentLink to the Task. Call log timestamps are preserved in the Activity Date field to maintain the candidate engagement timeline order.

Zoho Recruit

Attachment

maps to

Bullhorn ATS & CRM

ContentDocument

1:1
Fully supported

Zoho Recruit attachments require exact folder hierarchy preservation: /Attachments/Candidates/[candidate_id]/, /Attachments/JobOpenings/[job_id]/, /Attachments/Clients/[client_id]/. Bullhorn uses ContentDocument with ContentDocumentLink to the parent entity. We reconstruct the Zoho folder tree under Bullhorn's document storage path during pre-flight preparation, then map each file to the corresponding Bullhorn Candidate, JobOrder, ClientCorporation, or Contact record. Any attachment with an unresolvable parent record is held in a reconciliation queue. Resume files attached to Candidates are prioritized and mapped to the Candidate resume field where Bullhorn's data model supports it.

Zoho Recruit

User

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

Zoho Recruit Users (recruiters, admins, hiring managers) map to Bullhorn User records. We match by email address as the dedupe key. Zoho's 2,000-record User import cap applies to Zoho's native migration tool; FlitStack AI handles larger user counts by migrating the primary Owner records (those actively assigned to Candidates, Jobs, and Clients) as Bullhorn Users and associating any remaining historical assignees as Candidate custom field values or Contact associations, preserving the attribution chain without triggering any cap. Role and profile assignments require Professional or Enterprise Bullhorn and are mapped from Zoho's role structure.

Zoho Recruit

Campaign

maps to

Bullhorn ATS & CRM

JobOrder / Candidate Tag

1:many
Fully supported

Zoho Recruit Campaigns (sourcing initiatives linked to job boards or specific job openings) map to Bullhorn JobOrder records when the campaign has a direct job focus, or to Candidate tags for sourcing-wide campaigns. Campaign fields (Name, Type, Start Date, Budget) that have no Bullhorn native equivalent are stored as custom fields on the associated JobOrder or as a Campaign custom field on Candidate. The customer's Bullhorn admin reviews the campaign mapping during sandbox validation and can create a Campaign custom object in Bullhorn CRM if reporting by sourcing initiative is required.

Zoho Recruit

Custom Field

maps to

Bullhorn ATS & CRM

Custom Field

lossy
Fully supported

Zoho Recruit custom fields (available in Professional and Enterprise tiers only) are not available in Free or Standard editions, which means some records may have no custom field data to migrate. We inspect the source account's Zoho edition during discovery. For paid-tier accounts with custom fields, we create matching Bullhorn custom fields on the appropriate entity before importing records, using the Zoho field type to determine the Bullhorn field type (text, picklist, number, date, checkbox). Lookup fields in Zoho require a separate migration phase to resolve the referenced record ID to the Bullhorn equivalent ID at migration time.

Zoho Recruit

Assessment

maps to

Bullhorn ATS & CRM

Candidate Note / Custom Field

1:1
Fully supported

Zoho Recruit Assessment results attached to Candidates (pre-screening scores, skills assessments, psychometric results) do not have a direct Bullhorn native equivalent. We migrate assessment results as structured Candidate Note records with the assessment name, date, score, and evaluator in a consistent format, or to Bullhorn custom fields on the Candidate object if the assessment output is a numeric score or pass/fail flag. Assessment question banks and scoring rubrics require manual recreation in Bullhorn; we document the assessment schema from Zoho for the customer's Bullhorn admin to reference.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Zoho Recruit logo

Zoho Recruit gotchas

High

Daily API rate limits are tier-gated and per-user capped

High

User import hard cap of 2,000 records

Medium

Attachment folder hierarchy must be preserved exactly

Medium

Resume parsing quota varies by plan and resets daily

Low

Custom fields unavailable in Free and Standard editions

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM gotchas

High

ATS Growth edition has no API access

High

Attachments excluded from CSV bulk exports

Medium

Custom Object limits vary sharply by edition

Medium

Opportunity pipeline stages are recruitment-specific

Low

Resume parse quality varies by document format

Pair-specific challenges

  • Subform data is embedded in Candidate records and has no direct Bullhorn equivalent

    Zoho Recruit stores Employment History, Education, Certifications, and Skills as subforms embedded inside the Candidate record. Bullhorn's Candidate object does not have a native subform or related-record structure for this data. We flatten these subforms during the transform phase: structured data (job title, company name, dates) becomes Bullhorn custom fields on Candidate, and free-form content (certification details, narrative employment descriptions) becomes Candidate Note records linked via ContentDocumentLink. This transformation is the most time-intensive step of the migration and must be validated against sample records in the Bullhorn Sandbox before production migration begins.

  • Attachment folder hierarchy must be reconstructed under Bullhorn's document model

    Zoho Recruit maps attachments to records using a specific folder hierarchy: /Attachments/Candidates/[candidate_id]/[filename], /Attachments/JobOpenings/[job_id]/[filename], and so on. Bullhorn uses ContentDocument and ContentDocumentLink without enforcing a folder prefix. We extract files from the Zoho export in their original folder structure, then reconstruct that structure under Bullhorn's document storage before linking each file to the correct Candidate, JobOrder, ClientCorporation, or Contact record. Any Zoho attachment that has no parent record ID or a mismatched folder name is placed in an unassigned queue for manual resolution; the customer must confirm filename-to-record mappings for these orphans.

  • Daily API rate limits cap per-user and require chunked batch processing

    Zoho Recruit Enterprise caps at 30,000 API requests per day per org, with a ceiling of 1,000 requests per user per day—whichever is lower. A 10-recruiter Enterprise account has a 10,000-request daily ceiling, not 30,000. Bullhorn has entity-specific rate limits documented in its Developer Program Guide. We batch migrations into chunks of 100 records per request (Zoho's insert/update maximum), throttle across daily windows, and apply exponential backoff on limit responses from both platforms. We flag during discovery whether the customer's Zoho plan supports the target import velocity; Free and Standard tier accounts with tighter limits may require extended migration timelines.

  • Custom fields and lookup fields are unavailable in Zoho Free and Standard editions

    Zoho Recruit Free and Standard editions do not expose custom fields, lookup fields, or formula fields in the data export. Customers who created records in Free/Standard and later upgraded may have data inconsistencies: records created before the upgrade carry no custom field values, while records created after upgrade do. We detect this discrepancy during discovery by comparing record creation dates against the plan upgrade date. The migration plan maps only the custom fields present in the current tier; any data gap created by the earlier free or standard usage is flagged explicitly for the customer's admin.

  • Zoho's 2,000 User import cap applies to native tools but not to FlitStack AI migrations

    Zoho Recruit's native data migration tool enforces a 2,000-record User import ceiling. FlitStack AI does not use the native tool; we use Zoho's REST API to extract all user records regardless of count. For customers with more than 2,000 historical user records, we migrate primary Owner records (those assigned to active Candidates, Jobs, or Clients) as Bullhorn Users and store remaining historical assignee names as custom field values on the Candidate record. This preserves the attribution chain without triggering the cap and without requiring the customer to manually close secondary Zoho user accounts.

Migration approach

Six steps for a successful Zoho Recruit to Bullhorn ATS & CRM data migration

  1. Discovery and scoping

    We audit the source Zoho Recruit account across edition (Free/Standard/Professional/Enterprise), module usage, custom field inventory, subform structures (Employment History, Education, Certifications per Candidate), attachment count and folder depth, pipeline stage definitions, and active workflow and Blueprint rules. We pair this with a Bullhorn tier review (Growth, Pro, Premium) and document the Bullhorn custom field schema required to hold Zoho subform data. The discovery output is a written migration scope, a subform flattening specification, and a Bullhorn edition recommendation.

  2. Schema design and custom field provisioning

    We design the destination Bullhorn schema before any data moves. This includes provisioning custom fields on Candidate, JobOrder, ClientCorporation, and Contact entities to hold Zoho subform data and any Zoho custom fields from paid tiers. For each subform type, we define whether it becomes Bullhorn custom fields (structured data) or linked Note records (narrative data). We configure JobOrder status values to match Zoho pipeline stages. Bullhorn custom field provisioning is deployed to a Sandbox org first for validation before production configuration.

  3. Sandbox migration and reconciliation

    We run a full migration into a Bullhorn Sandbox using production-like data volume and sample subform records. The customer's recruiting operations lead reviews record counts, spot-checks 25-50 random candidate records against the Zoho source (verifying name, email, employment history custom fields, and interview notes), and validates attachment re-association by opening 5-10 files per entity type. Any mapping corrections—particularly subform flattening decisions and custom field type assignments—happen in Sandbox, not in production.

  4. Owner reconciliation and User provisioning

    We extract every distinct Zoho User referenced as an Owner on Candidate, JobOpening, Interview, and Note records and match by email against the Bullhorn destination org's User table. Any Zoho User without a matching Bullhorn User is placed in a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active or inactive based on whether the original Zoho user is still active). Migration cannot proceed past the User step because OwnerId references on Bullhorn records must be satisfied at insert time.

  5. Production migration in dependency order

    We run production migration in dependency sequence: ClientCorporation records first (from Zoho Clients), then Contact records with ClientCorporationId resolved, then JobOrder records (from Zoho Job Openings), then Candidate records with subform data flattened into Bullhorn custom fields and structured notes, then JobSubmission records (from Zoho Interview subforms), then Notes, Tasks, Events, and Calls, then Attachments with folder hierarchy reconstructed under Bullhorn's document model, then Campaign records, then Assessment results as custom fields or structured notes. Each phase emits a row-count reconciliation report before the next begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze writes in Zoho Recruit during cutover and run a final delta migration for any records modified during the production migration window. We then enable Bullhorn as the system of record and perform a post-migration reconciliation comparing record counts and attachment linkage rates against the Zoho source. We deliver a written automation inventory documenting every Zoho Workflow, Blueprint rule, and Assignment Rule with its trigger, conditions, actions, and recommended Bullhorn Automation equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Zoho Workflows or automations as Bullhorn Automation inside the migration scope.

Platform deep dives

Context on both ends of the pair

Zoho Recruit logo

Zoho Recruit

Source

Strengths

  • Free tier includes full candidate management with a hosted career site, making it viable for very small staffing operations.
  • Multi-edition architecture splits agency and corporate HR workflows, with tier-gated features that scale predictably with headcount.
  • Per-user API rate limits (500–1000/day) are generous for mid-size migrations compared to competitors that gate by total org quota.
  • Zoho's own data migration tool supports CSV import from Bullhorn, CATS, Jobdiva, and Workable, validating interoperability with common ATS formats.
  • 45-day money-back guarantee and 15-day full-feature trial reduce financial risk for teams evaluating the platform.

Weaknesses

  • Free edition excludes custom fields, lookup relationships, and formula fields, making data model extensibility unavailable until a paid tier is purchased.
  • Resume parsing quotas are capped: 250/day on Standard, 500/day on Professional, unlimited only on Enterprise — bulk imports of large candidate pools will hit these limits.
  • No bulk/batch API endpoint for inserts or updates — large migrations rely on looping single-record API calls within daily rate limit windows.
  • Custom modules cannot be imported from external ATS; only standard modules (Users, Candidates, Clients, etc.) are in the supported migration list.
  • Attachments require a rigid folder hierarchy to re-associate with records, and any deviation in folder structure during extraction causes silent disassociation.
Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

Destination

Strengths

  • Unified ATS and CRM on one platform purpose-built for staffing agencies, eliminating separate tools for candidates and clients.
  • Automated resume parsing extracts structured candidate data—contact details, work history, skills—into searchable profiles instantly.
  • Native placement and split-billing model handles contract staffing workflows including start/end dates and overtime rules.
  • Bullhorn Recruitment Cloud Marketplace offers 100+ pre-validated third-party integrations spanning the full recruiting lifecycle.
  • 24/7 global support coverage from 350+ support staff with dedicated account management included at all tiers.

Weaknesses

  • Widely regarded as old and bloated with an unintuitive interface and steep learning curve for new recruiters.
  • Slow page loads and performance lag cited in over 200 verified G2 reviews during high-volume recruiting periods.
  • Pricing is opaque—custom-negotiated per organization with significant upfront implementation fees that vary by deal.
  • ATS Growth edition excludes API access entirely, preventing automated data export without upgrading first.

Complexity grading

How hard is this migration?

Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Zoho Recruit and Bullhorn ATS & CRM.

  • Object compatibility

    B

    1 of 7 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Zoho Recruit: 500–30,000 requests/day by org edition; per-user ceiling of 250–1,000 requests/day (whichever is lower).

  • Data volume sensitivity

    B

    Zoho Recruit doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Zoho Recruit to Bullhorn ATS & CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Zoho Recruit to Bullhorn ATS & CRM data migrations

Answers to the questions buyers ask most during Zoho Recruit to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Zoho Recruit to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations land between five and eight weeks for accounts under 15,000 Candidates and 3,000 Job Openings with straightforward subform structures and no large-scale attachment sets. Migrations with complex subform hierarchies (multiple employment history rows per candidate, education and certification subforms), over 500,000 attachment files, or customers on Zoho Free or Standard who need custom fields designed from scratch move to twelve to twenty weeks because of subform flattening work, folder-hierarchy reconstruction, and Bullhorn custom field provisioning time.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Zoho Recruit.
Land in Bullhorn ATS & CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day