HRMS migration

Migrate from Recruitly to Bullhorn ATS & CRM

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

Recruitly logo

Recruitly

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

77%

10 of 13

objects map 1:1 between Recruitly and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Recruitly to Bullhorn is a step up from a small-to-mid agency platform to the enterprise standard in staffing and recruiting software. Recruitly's schema is relatively flat with custom columns in the Companies module and tier-gated record limits (1,000 to 50,000+ Candidates depending on plan). Bullhorn enforces a structured entity model (Candidate, ClientContact, ClientCorporation, JobOrder, Placement, Opportunity) with a formal custom object setup requiring a support ticket and a limit of 55 fields per custom object on Growth and Enterprise editions. We extract the full Companies column list from Recruitly before export, scope against the target Bullhorn edition for field capacity, provision Bullhorn custom objects upfront via a completed Custom Object Setup Sheet submitted to Bullhorn Support, and align the delta migration to Recruitly's own Friday-end-of-day cutover window. We do not migrate Outreach Campaigns, automation workflows, or AI matching configurations as code; we deliver a written inventory of these for your Bullhorn admin to rebuild in Bullhorn Automation (Herefish) or through Bullhorn's native workflow builder.

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

Recruitly logo

Recruitly

What's pushing teams away

  • Agencies with complex multi-brand or matrix organisational structures find Recruitly's hierarchy and approval workflows less flexible than enterprise alternatives like Bullhorn or Salesforce.
  • Users migrating from full-featured ATS platforms report that Recruitly's reporting and analytics dashboards lack the depth needed for executive-level recruitment reporting.
  • The platform's focus on small-to-mid-size agencies means enterprise-grade compliance features (government contracts, healthcare regulations) require custom configuration or the top Enterprise tier.
  • Some users cite difficulty getting granular automation rules to behave as expected without significant configuration effort, especially for multi-step candidate nurture sequences.

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 Recruitly objects map to Bullhorn ATS & CRM

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

Recruitly

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Recruitly Candidate records map directly to Bullhorn Candidate. Standard fields (firstName, lastName, email, phone, skills, source, status) transfer via REST API. Custom fields on Candidate require a Bullhorn Support ticket to create customObject1-10 schema before import; we pre-create the custom object definitions during discovery and submit the Custom Object Setup Sheet to Bullhorn Support before the migration phase begins. CV and resume attachments export from Recruitly's Export Data module and attach as ContentDocument records on the Bullhorn Candidate.

Recruitly

Contact

maps to

Bullhorn ATS & CRM

ClientContact

1:1
Fully supported

Recruitly Contacts (managed under the Sales module) map to Bullhorn ClientContact. The contact's associated Recruitly Company record maps to a Bullhorn ClientCorporation, and the ClientContact.clientCorporation lookup is resolved at import time. Email, phone, title, and owner fields map directly. Recruitly's contact record limits (200 Free, 5,000 Solo, 25,000+ Professional) do not apply at Bullhorn, removing a constraint that often surfaces after migration scoping.

Recruitly

Company

maps to

Bullhorn ATS & CRM

ClientCorporation

1:1
Fully supported

Recruitly Companies map to Bullhorn ClientCorporation. This mapping requires explicit field extraction from the customer's live Recruitly Companies module because the column configuration can include fields from Sales Analytics, Recruiting Analytics, Billing, General, Recent Activities, and Custom field groups. We extract the full visible column list before export and map each to a corresponding Bullhorn ClientCorporation field. Fields without a Bullhorn equivalent become custom fields on ClientCorporation, subject to the 55-field custom object limit if they exceed standard field capacity.

Recruitly

Job

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

Recruitly Jobs map to Bullhorn JobOrder. The Recruitly job status (open, filled, on hold, cancelled) maps to Bullhorn's jobStatus field. Job requirements, description, and board distribution settings transfer as custom fields or standard JobOrder text fields. Recruitly's tier-based job limits (5 Free, 25 Solo, unlimited Professional) do not apply at Bullhorn, so open job counts above Recruitly Professional limits can be migrated without tier upgrades.

Recruitly

Placement

maps to

Bullhorn ATS & CRM

Placement

1:1
Fully supported

Recruitly Placements map to Bullhorn Placement. The full lifecycle from offer acceptance through onboarding, guarantee period, and commission tracks as Bullhorn Placement records with corresponding Candidate, JobOrder, and ClientContact lookups. Placement-to-invoice linkage is preserved by mapping Recruitly invoice references to Bullhorn Billing or third-party billing system fields; if Bullhorn Billing is not in scope, we flag the invoice mapping for manual review during cutover. Commission rates and guarantee period details transfer as custom fields on Placement.

Recruitly

Pipeline

maps to

Bullhorn ATS & CRM

JobOrder Pipeline (custom field or workflow)

lossy
Fully supported

Recruitly candidate pipelines are structured with stages tied to Jobs. Bullhorn does not have a native pipeline Kanban for candidates in the same way Recruitly does; candidate progression through stages maps to JobOrder status values or to a custom pipeline field that we create during Bullhorn schema setup. We preserve stage names, candidate order within stages, and stage-to-stage movement history where available via the Recruitly API. The mapping is configured during discovery and validated in a Bullhorn Sandbox before production migration.

Recruitly

Activity (engagements)

maps to

Bullhorn ATS & CRM

Note, Task, Appointment

1:1
Fully supported

Recruitly logs engagement activities on Candidates and Contacts as Recent Activities. We export Recent Activities fields from Recruitly and map them to Bullhorn Note, Task (with TaskSubtype), and Appointment (Event) records. The parent record lookup (candidateID or clientContactID) is resolved at migration time so that activities attach to the correct Bullhorn record. Bullhorn's REST API supports notes, tasks, and appointments via the engagement and activity endpoints; we use batch inserts to manage volume. Bullhorn Plugin documentation confirms activities, notes, and appointments are importable objects.

Recruitly

Folder and Saved Search

maps to

Bullhorn ATS & CRM

Tag (custom field) or manual grouping

1:1
Fully supported

Recruitly Folders and Saved Searches are soft-organisation constructs that do not have a direct Bullhorn equivalent. We export the underlying record sets rather than the folder structure itself, and tag migrated records with the folder name as a custom Candidate or Contact field. We deliver a written reference document mapping each Recruitly folder to the set of Candidate IDs it contained, so the Bullhorn admin can recreate groupings or note which candidates require re-tagging.

Recruitly

Outreach Campaign

maps to

Bullhorn ATS & CRM

Bullhorn Automation (Herefish) or third-party tool

lossy
Fully supported

Recruitly Outreach Campaigns (email sequences with templates, recipient lists, send history, and open/click metrics) do not migrate as functional campaigns to Bullhorn because Bullhorn's cadence and sequencing features live in Bullhorn Automation (Herefish), a separate add-on. We export campaign templates as reference documents and map recipient lists to Bullhorn Candidate records with a custom campaign-source field. A Bullhorn admin rebuilds the cadence logic in Herefish post-migration. Recruitly's per-tier recipient limits (100 Free, 500 Solo, unlimited Professional) do not apply at Bullhorn.

Recruitly

User and Owner

maps to

Bullhorn ATS & CRM

BullhornUser

1:1
Fully supported

Recruitly User records and Owner assignments on Candidates, Jobs, and Placements map to Bullhorn BullhornUser. We resolve owners by email match. Any Recruitly Owner without a matching BullhornUser goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Inactive Recruitly users are mapped to inactive BullhornUser records to preserve assignment history without granting active login access.

Recruitly

Attachment (CV, cover letter, documents)

maps to

Bullhorn ATS & CRM

ContentDocument

1:1
Fully supported

CVs, cover letters, and supporting documents attached to Recruitly Candidates and Jobs export from the Recruitly Export Data module (Export Data privilege required) and migrate as Bullhorn ContentDocument records linked via ContentDocumentLink to the parent Candidate or JobOrder. Document format conversion is applied where Recruitly's branded CV format (PDF with watermarking) is not natively supported in Bullhorn; we convert to standard PDF and preserve the original as a secondary attachment if the customer requests.

Recruitly

Invoice and Billing Record

maps to

Bullhorn ATS & CRM

Bullhorn Billing or manual mapping

1:1
Fully supported

Recruitly placement-linked invoices with line items, payment status, and trust account references require manual mapping review because billing workflows differ significantly between platforms. If Bullhorn Billing or Bullhorn One is in scope, we map invoice records to the Bullhorn Billing entity model. If not, we deliver a written invoice mapping reference and flag the records that require manual entry or third-party accounting system reconciliation post-migration. This is consistently the highest-touch object in the migration scope.

Recruitly

Custom Field

maps to

Bullhorn ATS & CRM

CustomObject1-10 (via support ticket)

lossy
Fully supported

Recruitly custom fields across all major objects map to Bullhorn customObject1 through customObject10. Bullhorn requires a Support ticket with a completed Custom Object Setup Sheet specifying field display name, description, hint, required status, edit type (text, drop-down, checkbox, picker, etc.), and field values for each custom field. Bullhorn editions restrict the number of searchable custom objects: Growth/Enterprise allows 10 custom objects with 55 fields each; ATS Growth has none. We pre-scope custom field count against the target Bullhorn edition during discovery.

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.

Recruitly logo

Recruitly gotchas

High

Tier-based record limits are migration-critical

High

API rate limits restrict bulk migration throughput

Medium

Export Data privilege gates all bulk exports

Medium

Delta migration window is a tight Friday–weekend cutover

Low

Companies module columns require explicit field mapping

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

  • Bullhorn custom objects require a support ticket before migration

    Bullhorn does not allow custom objects to be created via the REST API directly. Bullhorn Support must provision customObject1 through customObject10 per entity (Candidate, ClientContact, ClientCorporation, JobOrder, Placement, Opportunity) based on a completed Custom Object Setup Sheet. Each custom object is capped at 55 fields, with specific limits on edit types (up to 20 of any combination of checkbox, drop-down, picker, radio, section header, select, or text fields). If the Recruitly schema has more than 55 custom fields on a single object, they must be split across multiple custom objects or rationalised before migration. We submit the setup sheet during discovery and hold data migration until Bullhorn Support confirms custom object provisioning.

  • Recruitly Export Data privilege gates all bulk exports

    Recruitly requires the Export Data privilege to export Candidates, Contacts, Companies, and other records. Users without this privilege cannot initiate exports from the list view or Export Data module. Bullhorn Plugin documentation and Recruitly's own migration documentation confirm that the exporting user must hold elevated privileges. We confirm privilege assignment with the customer's Recruitly admin during migration kickoff and request elevated access before the export phase begins. Without this, the entire export step fails silently or produces partial data.

  • Invoice and billing object models are incompatible without manual mapping

    Recruitly's placement-linked invoicing with trust account tracking does not map directly to Bullhorn Billing. Recruitly stores invoice line items, payment status, and trust account references; Bullhorn uses a different invoice entity model that requires Bullhorn Billing or Bullhorn One to be active. If Bullhorn Billing is not part of the destination subscription, invoice records require manual mapping review and likely manual re-entry or third-party accounting system reconciliation. We flag this in discovery and scope invoice migration as a conditional deliverable based on whether Bullhorn Billing is in scope.

  • Friday-weekend delta migration window is fixed by Recruitly's own process

    Recruitly's documented migration process specifies delta migration on the Friday (or last working day) before the full switch, with the client exporting data after business hours to capture all records created or modified since Stage 1. We align our migration timeline with this window and schedule the delta export for the agreed Friday afternoon. Any records created on the switch day itself require a final manual pass or real-time webhook capture. Skipping the delta window means new placements, candidates, and job updates from the final days before cutover are lost.

  • Companies module column extraction must precede export

    Recruitly's Companies module allows users to add columns from over a dozen field groups (Sales Analytics, Recruiting Analytics, Billing, General, Recent Activities, Custom). During migration, we must extract the full column list from the customer's live Recruitly system before export to ensure all custom-visible fields are captured. If the customer has hidden default columns, those fields still exist in the schema and are available for mapping. Failure to capture the full column list results in fields that are visible in Recruitly but absent in the export, requiring retroactive data repair in Bullhorn.

Migration approach

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

  1. Discovery and target edition selection

    We audit the source Recruitly portal across plan tier, total record counts (Candidates, Contacts, Companies, Jobs, Placements, Activities), custom field definitions, active outreach campaigns, folder and saved search structures, and billing/invoice records. We pair this with a Bullhorn edition review (Starter at $99/user, Growth, Enterprise, or Bullhorn One for billing and payroll). The discovery output is a written migration scope, a custom object count against the target Bullhorn edition's limits, and a Bullhorn Support ticket checklist for custom object provisioning.

  2. Custom object schema provisioning via Bullhorn Support

    Before any data export begins, we complete the Bullhorn Custom Object Setup Sheet with field display names, descriptions, hints, required flags, edit types, and field values for every Recruitly custom field that maps to a Bullhorn custom object. We submit the completed spreadsheet to Bullhorn Support as a ticket. Bullhorn Support provisions customObject1-10 on the agreed entities (typically Candidate and ClientCorporation first). Migration cannot proceed past schema validation until Bullhorn confirms custom object setup. This step alone can take 3-7 business days and is the most common cause of timeline slippage.

  3. Export privilege confirmation and full data extraction

    We confirm the Export Data privilege with the Recruitly admin and extract all record sets: Candidates (with custom fields and attachments), Contacts, Companies (with the full visible column list), Jobs, Placements, Activities (Notes, Tasks, Appointments), and Invoice/Billing records. Recruitly's API rate limits (100/day Free, 1,000/day Solo) require throttling or batch export via the built-in Export Data module for larger migrations. We run the export into a structured staging directory with one CSV per object type and a manifest file recording record counts per export run.

  4. Sandbox migration and reconciliation

    We load the exported data into a Bullhorn Sandbox environment to validate the full mapping before production. Bullhorn Plugin documentation confirms that Bullhorn provides API access for data import once the account is provisioned. We run the full migration in dependency order (ClientCorporation first, then ClientContact, then Candidate, then JobOrder, then Placement, then Activity), reconcile record counts against the Recruitly source, and spot-check 25-50 records per object for field-level accuracy. The customer reviews and approves the Sandbox data before production migration begins.

  5. Production migration in record dependency order

    We run production migration in Bullhorn following the validated Sandbox sequence: ClientCorporation (from Recruitly Companies), ClientContact (with ClientCorporation lookup resolved), Candidate (with attachments and custom objects), JobOrder, Placement, Activity history via Bullhorn REST API batch inserts, and Invoice records as conditional scope. Bullhorn's character limits on certain fields (some capped at 100 characters) require field-level truncation during transform. Each phase emits a reconciliation report before the next phase begins. Recruitly writes are frozen during the production migration window.

  6. Cutover, delta migration, and automation rebuild handoff

    We freeze Recruitly writes, run the Friday delta export for any records created or modified since the Stage 1 export, apply the delta to Bullhorn, then enable Bullhorn as the system of record. We deliver a written inventory of all Recruitly Outreach Campaigns (with template reference and recipient list), automation workflows, and AI matching configurations that require rebuild in Bullhorn Automation (Herefish) or through Bullhorn's native workflow builder. We do not rebuild automations as code within the migration scope; that is a separate engagement. We support a one-week hypercare window for reconciliation issues raised during the first business week in Bullhorn.

Platform deep dives

Context on both ends of the pair

Recruitly logo

Recruitly

Source

Strengths

  • All-in-one ATS, CRM, sales, and AI matching platform with no feature gating across tiers.
  • Generous free tier (1,000 candidates, 200 contacts) lets agencies validate fit before committing.
  • Built-in AI candidate matching using vector database reduces manual sourcing time.
  • Fast 2–4 week implementation with a dedicated migration specialist for inbound switches.
  • WhatsApp integration included at all tiers for candidate communication.

Weaknesses

  • Reporting and analytics dashboards lack depth for executive-level recruitment reporting, per user reviews.
  • Tier-based record limits can constrain high-volume agencies on lower plans — silent at first but billing-relevant.
  • Complex automation workflows require significant configuration effort, especially multi-step candidate nurture sequences.
  • Companies module's heavily customisable columns make schema mapping more time-consuming during migrations.
  • API rate limits (100–1,000 calls/day) are restrictive for large bulk data operations.
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 Recruitly 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

    Recruitly: 100 calls/day (Free), 1,000 calls/day (Solo); Professional and Enterprise limits are not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Recruitly 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 Recruitly to Bullhorn ATS & CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 20,000 Candidates and 5,000 Contacts with no Bullhorn Billing scope. Migrations with custom objects, large placement and invoicing histories, multi-entity or multi-brand structures requiring separate Bullhorn entities, or legacy ATS data consolidated alongside Recruitly move to eight to fourteen weeks. The Bullhorn custom object provisioning step (a Bullhorn Support ticket) alone can take 3-7 business days and is on the critical path for all migrations with custom fields.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Recruitly.
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