HRMS migration

Migrate from JOIN to Crelate

Field-level mapping, validation, and rollback between JOIN and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.

JOIN logo

JOIN

Source

Crelate

Destination

Crelate logo

Compatibility

75%

9 of 12

objects map 1:1 between JOIN and Crelate.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from JOIN to Crelate is a shift from a job-distribution-first ATS to a recruiting CRM that combines applicant tracking with relationship management. JOIN structures its data around Jobs as the parent container with Candidates and Applications as children; Crelate uses a unified Contact object that consolidates candidate profile, communication history, and pipeline activity in one record. We extract JOIN's candidate records and map them to Crelate Contacts, map JOIN Job postings to Crelate Jobs, and resolve the Application relationship through Crelate's pipeline stage model. JOIN's activity timeline (email threads, scheduled interviews, call logs) cannot be retrieved via API — we flag this at scoping, ingest a manual CSV export from the JOIN dashboard, and attach it as notes or linked documents in Crelate so the timeline survives cutover. Workflows, email sequences, and job board credits do not migrate; we deliver a written inventory of automations requiring rebuild in Crelate's 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

JOIN logo

JOIN

What's pushing teams away

  • Users report bugs and account downgrades that cause data loss, disrupting active hiring pipelines and leading recruiting teams to seek more stable alternatives.
  • Employer branding tools and candidate experience features lag behind competitors, causing larger companies with strong employer brand priorities to migrate to platforms with more polished candidate-facing pages.
  • Pricing becomes opaque at higher volumes, with job posting credits and seat limits that generate unexpected overage charges at renewal time.
  • Customer support response times frustrate teams managing active pipelines, especially when urgent issues like posting failures or candidate data errors arise during peak recruiting periods.

Choosing

Crelate logo

Crelate

What's pulling them in

  • Affordable per-seat pricing with transparent tiers makes Crelate accessible for small-to-mid staffing firms evaluating ATS platforms for the first time.
  • Fast implementation reported by customers—some describe getting live in a matter of minutes with support team assistance.
  • Unified ATS + CRM in a single product eliminates the need to buy and synchronize separate recruiting and sales tools.
  • Flexible custom fields across Contacts, Companies, and Opportunities allow recruiting teams to capture firm-specific data without developer involvement.
  • Positive reviews highlight the product's intuitive interface and functional breadth for teams that need recruiting workflows without enterprise overhead.

Object mapping

How JOIN objects map to Crelate

Each row shows how a JOIN object lands in Crelate, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

JOIN

Job

maps to

Crelate

Job

1:1
Fully supported

JOIN Job records map directly to Crelate Job postings. We extract title, description, department, location, employment type, and posting status. JOIN's internal job ID becomes a Crelate custom field for cross-reference. Job posting distribution settings (the 250+ board network) do not transfer because Crelate handles posting through its own career portal and optional distribution partners; we document the original posting channels as a text field so the customer can re-establish distribution in Crelate manually or via a third-party distributor.

JOIN

Candidate

maps to

Crelate

Contact

1:1
Fully supported

JOIN Candidate records map to Crelate Contact. Standard fields (name, email, phone, address, work history, education, skills) migrate 1:1. Source attribution and lifecycle stage transfer to Crelate's candidate status fields. JOIN custom fields on Candidates are subject to Crelate's 20-custom-field-per-entity cap; we flag anyJOIN custom fields exceeding this limit at scoping and either compress them into structured picklists or land them as free-text notes for post-migration re-entry.

JOIN

Application

maps to

Crelate

Job Application (linked to Contact and Job)

1:1
Fully supported

JOIN Application records link a Candidate to a Job with applied date, referral source, and rejection/offer flags. We resolve the parent Contact and Job references during migration and attach the Application as a pipeline entry on the Crelate Job. Applied date and referral source migrate as metadata on the pipeline stage entry. Applications in rejected or offer stages preserve those statuses as Crelate stage entries with timestamp metadata.

JOIN

Pipeline Stage

maps to

Crelate

Pipeline Stage

lossy
Fully supported

JOIN exposes stage names (Screening, Interview, Offer, and custom stages per job) that vary by plan and by job. We extract the full stage list per job during the scan phase and build a customer-specific mapping table. Where Crelate's pipeline template has fewer stages, we collapse intermediate stages and preserve stage-entry dates as metadata so timing context is not lost. The customer approves the stage mapping before any pipeline data loads.

JOIN

Scorecards and Interview Feedback

maps to

Crelate

Notes or Custom Fields on Contact

1:1
Mapping required

Structured interview evaluations and free-text feedback stored in JOIN transfer to Crelate as Notes attached to the Contact record or as custom fields if the destination template supports typed feedback fields. Where the customer uses Crelate's custom question forms, we flatten the JSON evaluation data into readable text and attach it to the relevant Contact as a note for recruiter review during the hiring process.

JOIN

Custom Fields on Jobs

maps to

Crelate

Custom Fields on Job

1:1
Fully supported

JOIN employer-defined custom fields on Jobs map to Crelate custom fields on the Job object. Crelate enforces a maximum of 20 custom fields per entity, and the Job object is included in this limit. We extract all JOIN Job custom fields during scoping, assess which fall within the 20-field cap, and surface any overflow to the customer for prioritisation before migration begins.

JOIN

Custom Fields on Candidates

maps to

Crelate

Custom Fields on Contact

1:1
Fully supported

JOIN custom fields on Candidates map to Crelate custom fields on Contact. Field types (Short Answer, Picklist, Date, Numeric, Monetary) are mapped to equivalent Crelate field types during the transform phase. If the total exceeds the 20-field cap, we compress low-value fields into a structured note or deferred re-entry list. Picklist values from JOIN transfer as Crelate picklist options; the customer confirms the picklist configuration during scoping.

JOIN

Attachments and Resume Files

maps to

Crelate

Resume and Documents on Contact

1:1
Mapping required

Candidate resume files and supporting documents export from JOIN and upload to Crelate as linked file references on the Contact record. JOIN filenames are derived from internal IDs and require normalisation to a consistent convention (CandidateName_JobTitle_Date) to prevent collisions and ensure files are identifiable after ingestion. We apply this normalisation during the export phase before bulk upload to Crelate's document storage.

JOIN

Activity and Communication History

maps to

Crelate

Notes on Contact

1:1
Not supported

JOIN does not expose email threads, scheduled interview events, or call log entries through a documented API endpoint. We cannot retrieve this data programmatically. During scoping we flag this gap and instruct the customer to export the activity timeline as a CSV from the JOIN dashboard. We ingest this CSV alongside the API extract and attach the activity history as Notes or a linked document on the Crelate Contact record so that the timeline context survives cutover. The customer must perform the CSV export before the migration date.

JOIN

Owner

maps to

Crelate

User

1:1
Fully supported

JOIN Owners map to Crelate Users. We resolve Owners by email match against the destination Crelate User table. Any JOIN Owner without a matching Crelate User is held in a reconciliation queue, and the customer's admin provisions the missing User before record import resumes. Inactive JOIN Owners map to inactive Crelate Users to preserve historical attribution.

JOIN

Jobs (department and location metadata)

maps to

Crelate

Company (for agency clients)

lossy
Fully supported

For agency recruiting workflows where Jobs represent client engagements rather than internal hires, JOIN Job records map to Crelate Company or Opportunity records in addition to Crelate Job. The customer specifies during scoping whether the migration follows an internal hiring model (Job as requisition) or an agency model (Job as client engagement with candidates as contacts on the client Company record). We configure the mapping accordingly before any data loads.

JOIN

Referral Source

maps to

Crelate

Custom Field on Contact or Application

lossy
Fully supported

JOIN's referral source field on Applications (indicating where the candidate heard about the role) migrates as a custom picklist field on the Crelate Contact or as metadata on the Application entry. The customer confirms the preferred landing during scoping. If Crelate's standard source tracking fields are available in the destination plan, we map to those instead of a custom field.

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.

JOIN logo

JOIN gotchas

High

Activity log and communication history are not exported via JOIN API

Medium

Pipeline stage names vary per job and per plan

Medium

Custom fields on Candidates require manual equivalence review

Low

Resume and attachment export format is non-standard

Crelate logo

Crelate gotchas

High

120 req/min API rate limit throttles bulk migrations

High

20 custom field per-entity cap forces data model decisions

Medium

15,000-record export ceiling on single operations

Medium

Sequences and automation workflows do not migrate

Low

API key is a querystring parameter, not a header

Pair-specific challenges

  • JOIN activity timeline requires a manual CSV export

    JOIN does not expose email threads, call logs, scheduled interviews, or activity log entries through any documented API endpoint. The current JOIN API supports Candidate records, Job postings, Applications, and Custom Fields, but the internal communication and activity history cannot be retrieved programmatically. We flag this gap at scoping and require the customer to export the activity timeline as a CSV from the JOIN dashboard before cutover. We ingest the CSV alongside the API extract and attach the activity history as Notes on the relevant Crelate Contact records. If the customer does not perform the CSV export, the activity timeline will not appear in Crelate after migration.

  • Crelate caps custom fields at 20 per entity

    Crelate enforces a maximum of 20 custom fields per entity (Contact, Company, Job, Opportunity). JOIN has no documented custom field cap per entity. During scoping we extract the full custom field schema from JOIN and count fields per entity. If any entity exceeds the 20-field limit, we surface the overflow to the customer with a prioritisation recommendation and either compress low-value fields into structured notes or defer them to a post-migration re-entry queue. Skipping this step results in migration errors at the Crelate API layer when the field count limit is reached.

  • Per-job pipeline stages require explicit mapping before load

    JOIN does not enforce a universal stage schema. Each Job can have a custom stage sequence, and some JOIN plan tiers restrict stage customisation. If the customer has 50 open jobs with different stage sequences, we must build a mapping table that reconciles each sequence against the destination Crelate pipeline template. Without explicit mapping, pipeline stage data either fails to load or lands with incorrect stage assignments that break reporting. We extract the stage list per job during the scan, present the mapping table for customer approval, and only then run the pipeline data load.

  • Crelate API rate limit of 120 requests per minute throttles bulk ingestion

    Crelate's API v3 throttles ingestion at 120 requests per minute per IP. JOIN's API does not have a publicly documented rate limit, which means extraction can proceed at standard REST pacing. During bulk load into Crelate, we implement queue management with exponential backoff and batch chunking to stay within the 120 req/min ceiling. Without this handling, bulk migrations time out or return 429 errors that halt the load mid-process. The rate limit also means migrations with high record volumes take longer than a simple record-count calculation suggests.

  • Resume filenames from JOIN are non-standard and require normalisation

    Candidate resume files exported from JOIN may carry filenames derived from JOIN's internal IDs (numeric strings or hash values) rather than human-readable conventions. We normalise filenames to a consistent pattern (CandidateName_JobTitle_Date) during the export phase to prevent filename collisions in bulk downloads and ensure files remain identifiable after ingestion into Crelate's document storage. This step adds processing time but prevents the common post-migration problem of a document library full of unidentifiable numbered files.

Migration approach

Six steps for a successful JOIN to Crelate data migration

  1. Discovery and scoping call

    We audit the JOIN portal to capture job count, candidate volume, application count, per-job stage sequences, custom field schema (counted per entity), attachment file count and total size, and owner list. We run a JOIN API read test to confirm extraction coverage and identify any entities that return incomplete records. The discovery output is a written migration scope document that includes the stage mapping table, the custom field overflow assessment against Crelate's 20-field cap, and the activity timeline gap (with instructions for the CSV export). The customer approves the scope before scheduling the migration.

  2. JOIN activity CSV preparation

    We provide the customer with written instructions to export the activity timeline from the JOIN dashboard as a structured CSV. The export must include candidate ID, activity type (email, call, interview, note), timestamp, and content. We ingest the CSV into our staging environment and validate row count and column coverage before proceeding. If the customer cannot produce the CSV, we document the gap in the migration sign-off and proceed without the activity history, attaching a migration note to each Contact record indicating that the timeline requires manual re-entry in Crelate.

  3. Schema design and Crelate configuration

    We design the destination schema in Crelate. This includes creating custom fields on Job and Contact to match JOIN's schema, configuring pipeline stages and stage templates, setting up any agency-model Company and Opportunity records if applicable, and confirming the custom field count per entity stays within the 20-field cap. Schema changes deploy into the Crelate environment before any data loads. We validate the Crelate API connection and confirm the 120 req/min rate limit behaviour with a test batch of 100 records.

  4. Sandbox migration and reconciliation

    We run a full migration into a Crelate test environment using production data volume. The customer reviews a random sample of 30-50 migrated records across Jobs, Candidates, Applications, and Pipeline Stages, checking field accuracy, stage assignment, and attachment visibility. Any mapping corrections (field type mismatches, stage mapping errors, custom field overflow) are resolved here before the production migration window opens. The customer signs off on the sandbox output before we schedule the production cutover.

  5. Owner reconciliation and User provisioning

    We extract every distinct JOIN Owner referenced on Candidate, Application, and Job records and match by email against the destination Crelate User table. Owners without a matching Crelate User enter a reconciliation queue. The customer's Crelate admin provisions any missing Users (active or inactive depending on whether the original JOIN user is still active). Migration cannot proceed past the User provisioning step because OwnerId references are required on most Crelate entity imports.

  6. Production migration in dependency order

    We run the production migration in record-dependency order: Jobs (parent entities), Contacts (from JOIN Candidates), Job Applications (with Contact and Job lookups resolved), Pipeline stage entries (per-job mapping applied), Custom Fields (with overflow handling applied), Attachments (with normalised filenames, chunked for the 120 req/min limit), and the manual activity CSV attached as Notes on the relevant Contact records. Each phase emits a row-count reconciliation report. We freeze JOIN writes during the cutover window and run a final delta migration of any records modified during the window before switching Crelate to system-of-record status.

  7. Cutover, validation, and automation inventory handoff

    We enable Crelate as the system of record after the delta migration confirms zero new records in JOIN during the cutover window. We deliver a written inventory of any JOIN automations, workflows, or job board distribution settings that do not migrate, with a rebuild recommendation for Crelate's workflow builder. We support a five-business-day hypercare window to resolve reconciliation issues raised by the recruiting team. Post-migration admin support, Crelate workflow rebuild, and team training are outside standard migration scope and are available as separate engagements.

Platform deep dives

Context on both ends of the pair

JOIN logo

JOIN

Source

Strengths

  • Free Standard tier (up to 2 active job ads on 15+ free boards) lowers the entry bar for small businesses to test the platform with no commitment.
  • One-click distribution to 250+ job boards including German staples like StepStone and Indeed Germany makes it especially efficient for DACH-region hiring.
  • Unlimited team seats on every paid tier removes per-recruiter pricing friction common in enterprise ATSs.
  • Per-job pricing (€20/job Standard, €40/job Advanced) lets teams scale spend with active req count rather than headcount.
  • API access on Advanced tier (and Enterprise) plus custom integrations on Enterprise enables HRIS and downstream tooling synchronisation.

Weaknesses

  • Free tier is capped at 2 active job ads; teams running more than 2 reqs at once must upgrade.
  • API access is gated behind the Advanced tier (€40/job/month) — Standard customers cannot integrate programmatically.
  • Per-job pricing scales linearly with active reqs, so high-volume recruiters can end up paying more than enterprise ATSs with flat licensing.
  • Annual contracts are restricted to Enterprise; monthly billing only for Standard and Advanced.
  • Enterprise pricing not published — companies needing custom integrations must engage sales to benchmark cost.
Crelate logo

Crelate

Destination

Strengths

  • Unified ATS and CRM in a single platform reduces data synchronization overhead for recruiting teams.
  • Fast setup with guided implementation reported as a significant time saver for small teams.
  • Transparent per-seat pricing without surprise fees at the base tier.
  • Flexible custom field configuration across core objects without developer dependency.
  • Export capability supports up to 15,000 records per operation for Contacts, Companies, and Opportunities.

Weaknesses

  • API rate limit of 120 requests per minute restricts bulk migration throughput.
  • Custom field cap of 20 per entity requires field consolidation for complex recruiting schemas.
  • All advanced features (Activities, Activity Forms, Core Record Field customization) are tier-gated add-ons.
  • Customer service responsiveness receives consistent negative feedback in reviews.
  • Resume parsing quality trails competitors and generates support requests.

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 JOIN and Crelate.

  • 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

    JOIN: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your JOIN to Crelate 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 JOIN to Crelate data migrations

Answers to the questions buyers ask most during JOIN to Crelate migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your JOIN to Crelate migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most JOIN to Crelate migrations complete in two to four weeks for accounts under 10,000 Candidates and 200 Jobs with straightforward stage sequences. Migrations with high per-job stage variance, large attachment libraries exceeding 20 GB, active applications across multiple pipeline stages, or a requirement to ingest a manual activity CSV from JOIN extend to six to ten weeks because of stage mapping work, bulk attachment chunking within Crelate's 120 req/min API limit, and the delta reconciliation step at cutover.

Adjacent paths

Related migrations to explore

Ready when you are

Move from JOIN.
Land in Crelate, 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