HRMS migration
Field-level mapping, validation, and rollback between Tracker and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Tracker
Source
Bullhorn ATS & CRM
Destination
Compatibility
13 of 14
objects map 1:1 between Tracker and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Tracker to Bullhorn is a recruitment data model migration across two ATS platforms with different export mechanisms and API access tiers. Tracker does not publish a documented public REST API for automated migration; most migrations proceed through structured CSV export with custom field ordering and encoding handled per-export. Bullhorn enforces API usage limits across all editions except ATS Growth, which provides no API access at all, and Bullhorn's Activity timeline, field mappings, and placement chain integrity require explicit parent-record resolution during import. We run candidate deduplication against name, email, and phone before Bullhorn import to avoid the duplicate-record accumulation that builds silently under Tracker's unlimited-record model. Automation Playbook sequences, recruiter alerts, and status-update triggers do not export from Tracker and are not migrated by FlitStack AI; we deliver a written inventory of every active automation for the customer's Bullhorn admin to rebuild 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 Tracker 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.
Tracker
Candidate
Bullhorn ATS & CRM
Candidate
1:1Tracker Candidate records map directly to Bullhorn Candidate. Core fields (name, email, phone, resume text, status) migrate as standard field-to-field mapping. We deduplicate on name, email, and phone before Bullhorn import because Tracker积累了无限记录的惯性导致重复数据,导入 Bullhorn 后会产生额外的用户计费影响. Resume files are extracted from Tracker export as separate document attachments and re-linked to the Bullhorn Candidate record using the candidate's Bullhorn ID resolved at import time.
Tracker
Job
Bullhorn ATS & CRM
JobOrder
1:1Tracker Job records map to Bullhorn JobOrder. Job title, description, location, status, and assigned recruiter fields migrate to Bullhorn equivalents. The Job's assigned recruiter resolves to Bullhorn User ID via email match before JobOrder insert. Job status mapping (Open, Closed, On Hold) translates to Bullhorn JobOrder status values. Any custom fields on the Tracker Job enumerate during discovery and map to Bullhorn JobOrder custom fields.
Tracker
Company
Bullhorn ATS & CRM
ClientCorporation
1:1Tracker Company records map to Bullhorn ClientCorporation. The company name and address fields migrate directly, and domain normalization supports deduplication during import. ClientCorporation is created before any Candidate or JobOrder that references it so that the clientCorporationID lookup is satisfied at the moment of insert. We preserve the Tracker Company ID as a custom field tracker_company_id__c for audit trail.
Tracker
Contact
Bullhorn ATS & CRM
ClientContact
1:1Tracker Contacts (hiring managers and client-side relationships distinct from Candidates) map to Bullhorn ClientContact. Each ClientContact is linked to its parent ClientCorporation via clientCorporationID resolved by company name match. The Tracker contact ID is preserved as tracker_contact_id__c for reconciliation. We flag any Tracker Contacts without a matching Company during deduplication and present a resolution report before committing the import.
Tracker
Placement
Bullhorn ATS & CRM
Placement
1:1Tracker Placements map to Bullhorn Placement as the billable event record. We preserve the start date, end date, compensation, bill rate, and any mark-up or margin fields. The Placement's candidate and job references resolve to Bullhorn Candidate ID and JobOrder ID respectively at migration time, preserving the full back-office chain integrity. Historical placement records are critical for agency billing history and must not lose their Candidate-to-JobOrder linkage during import.
Tracker
Activity: Call
Bullhorn ATS & CRM
Task (TaskSubtype = Call)
1:1Tracker activity calls migrate to Bullhorn Task with TaskSubtype set to Call. Call disposition, duration, and any notes transfer to Bullhorn custom Task fields. The WhoId on Task points to the migrated Bullhorn Candidate or ClientContact; the WhatId points to the related JobOrder or Placement. ActivityDate preserves the original Tracker timestamp for timeline ordering.
Tracker
Activity: Email
Bullhorn ATS & CRM
EmailMessage + Task
1:1Tracker email activities migrate to Bullhorn EmailMessage records (the email content) linked to an Activity Task record (the timeline entry). The email body and subject migrate directly; attachments migrate as Bullhorn ContentDocument records linked via ContentDocumentLink. WhoId and WhatId on the Task resolve to migrated Bullhorn Candidate or ClientContact and the related JobOrder or Placement respectively.
Tracker
Activity: Meeting
Bullhorn ATS & CRM
Event
1:1Tracker meeting activities migrate to Bullhorn Event records. StartDateTime, EndDateTime, and Location migrate directly. Attendee lists from Tracker resolve to Bullhorn EventRelation records linked to the migrated Candidate, ClientContact, and User. Meeting notes migrate to the Event description field or attach as ContentDocument if the Tracker meeting had an associated document.
Tracker
Activity: Note
Bullhorn ATS & CRM
Note
1:1Tracker Notes linked to Candidates or Jobs migrate to Bullhorn Note records attached via ContentDocumentLink to the parent Candidate, ClientContact, JobOrder, or Placement. Rich text formatting in Tracker notes is preserved in Bullhorn Note body. If the Tracker note references any external attachments, those files are extracted and re-linked to the Bullhorn Note record.
Tracker
Activity: Task
Bullhorn ATS & CRM
Task
1:1Tracker task activities migrate to Bullhorn Task with Status, Priority, and ActivityDate preserved. Task assignment migrates by resolving the Tracker recruiter ID to Bullhorn User ID via email match. Any Tracker task without a matching User is assigned to a migration-system service account for the customer's Bullhorn admin to reassign post-migration.
Tracker
Pipeline Stage
Bullhorn ATS & CRM
JobOrder custom field or status mapping
lossyTracker pipeline stage names and candidate-stage associations map to Bullhorn JobOrder status values or a Bullhorn custom picklist field. We enumerate the complete set of Tracker stage names during discovery and configure corresponding Bullhorn JobOrder status values (or a custom field if the stage model is non-standard). Stage-level automation rules in Tracker do not migrate and are included in the automation rebuild inventory.
Tracker
Custom Field
Bullhorn ATS & CRM
Custom Field
1:1Tracker custom fields on Candidate, Job, and Company objects enumerate during discovery. Each Tracker custom field name and type (text, number, date, picklist, checkbox) maps to an equivalent Bullhorn custom field on the corresponding Bullhorn entity. Bullhorn entity-level custom field limits apply; if a Tracker object has more custom fields than Bullhorn's per-entity allowance, we identify the overflow and recommend Bullhorn Custom Object for the excess fields.
Tracker
Document: Resume
Bullhorn ATS & CRM
ContentDocument (linked to Candidate)
1:1Resume files, cover letters, and uploaded attachments stored against Tracker Candidate records are extracted from the export and re-associated to the corresponding Bullhorn Candidate record using the Bullhorn ID resolved at import time. Each document becomes a ContentDocument with a ContentDocumentLink pointing to the Candidate. We preserve the original file name and MIME type metadata.
Tracker
Placement Commission
Bullhorn ATS & CRM
Placement custom field
1:1Any commission, bonus, or split-revenue fields stored on Tracker Placements migrate to Bullhorn Placement custom fields. Commission percentage, recruiter split, and manager override fields are preserved as Bullhorn number or currency fields on the Placement object. If Tracker stores commission in a separate related object, we flatten it during the transform phase before Placement insert.
| Tracker | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job | JobOrder1:1 | Fully supported | |
| Company | ClientCorporation1:1 | Fully supported | |
| Contact | ClientContact1:1 | Fully supported | |
| Placement | Placement1:1 | Fully supported | |
| Activity: Call | Task (TaskSubtype = Call)1:1 | Fully supported | |
| Activity: Email | EmailMessage + Task1:1 | Fully supported | |
| Activity: Meeting | Event1:1 | Fully supported | |
| Activity: Note | Note1:1 | Fully supported | |
| Activity: Task | Task1:1 | Fully supported | |
| Pipeline Stage | JobOrder custom field or status mappinglossy | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Document: Resume | ContentDocument (linked to Candidate)1:1 | Fully supported | |
| Placement Commission | Placement custom field1: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.
Tracker gotchas
Automation workflows do not migrate as functional rules
CSV export is the primary migration path for most customers
Unlimited record model can mask deduplication needs
Bullhorn ATS & CRM gotchas
ATS Growth edition has no API access
Attachments excluded from CSV bulk exports
Custom Object limits vary sharply by edition
Opportunity pipeline stages are recruitment-specific
Resume parse quality varies by document format
Pair-specific challenges
Migration approach
Discovery and Bullhorn edition confirmation
We audit the source Tracker instance across tier (Launch/Core/Professional/Enterprise), active users, candidate volume, job volume, placement history, custom field enumerations, Automation Playbook sequence inventory, and activity history volume. We pair this with Bullhorn edition confirmation: if the customer is on ATS Growth (no API access), we use Bullhorn's CSV import capability; all other editions allow Bullhorn REST API with published rate limits of 100,000 calls per month and 1,500 calls per minute. The discovery output is a written migration scope with record counts, deduplication estimates, and a Bullhorn API versus CSV import decision.
Deduplication and duplicate resolution
We run candidate deduplication against Tracker candidate records using name, email, and phone as composite dedupe keys. We generate a duplicate resolution report grouped by match confidence (exact email, fuzzy name+phone, exact name only) and present it to the customer for resolution decisions before migration commits. Duplicate resolution scope directly affects migration timeline; large candidate databases with high duplicate rates require extended reconciliation phases. Tracker job records are not typically duplicated but we validate against ClientCorporation name for any duplicate Companies.
Bullhorn field mapping and schema configuration
We enumerate Tracker custom fields on Candidate, Job, Company, Contact, and Placement during discovery and configure the Bullhorn destination schema accordingly. This includes creating Bullhorn custom fields on the corresponding entities (Candidate, JobOrder, ClientCorporation, ClientContact, Placement) to receive Tracker custom field values, configuring field-level permissions for the migration service account, and mapping Tracker stage names to Bullhorn JobOrder status values. If Tracker custom field count exceeds Bullhorn's per-entity limit, we identify overflow and recommend Bullhorn Custom Object for the excess. Bullhorn Field Mappings (Admin > Field Mappings) are configured to control field display behavior on record edit pages.
Parent-record dependency ordering and resolution
Bullhorn requires parent records to exist before child records that reference them. We establish the following insert order: ClientCorporation (from Tracker Company), then ClientContact (linked to ClientCorporation), then JobOrder (linked to ClientCorporation and assigned User), then Candidate, then Placement (linked to Candidate, JobOrder, and ClientCorporation). Activity history migrates last using the resolved Bullhorn IDs for WhoId (Candidate or ClientContact) and WhatId (JobOrder or Placement). Owner resolution maps Tracker recruiter IDs to Bullhorn User IDs via email match; any Tracker owner without a matching Bullhorn User is held in a reconciliation queue for the customer's Bullhorn admin to provision before that phase resumes.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporation, ClientContact, JobOrder, Candidate, Placement, then Activity history. Activity migration (calls, emails, meetings, tasks) uses Bullhorn REST API with batch chunking and rate-limit handling (1,500 calls per minute, exponential backoff on 429 responses). Each phase emits a row-count reconciliation report before the next phase begins. Resume and document attachments migrate as Bullhorn ContentDocument with ContentDocumentLink to the parent Candidate record. Automation Playbook sequences are not migrated; the inventory document is delivered at this step for the customer's Bullhorn admin to begin rebuild parallel to migration.
Cutover, final delta, and automation handoff
We freeze Tracker writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Bullhorn as the system of record. We deliver the Automation Playbook inventory document listing every active sequence with its trigger, conditions, actions, and recommended Bullhorn Automation equivalent. We deliver the duplicate resolution log and a post-migration reconciliation report comparing Tracker record counts to Bullhorn imported record counts. We support a one-week hypercare window where we resolve any reconciliation issues raised by the agency's recruiting team. We do not rebuild Tracker Automation Playbook sequences as Bullhorn Automation rules inside the migration scope; that is a separate engagement or an internal Bullhorn admin task.
Platform deep dives
Tracker
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
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 Tracker and Bullhorn ATS & CRM.
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
Tracker: Not publicly documented.
Data volume sensitivity
Tracker 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 Tracker to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Tracker to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Tracker
Other ways to arrive at Bullhorn ATS & CRM
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.