CRM migration
Field-level mapping, validation, and rollback between Highrise and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Highrise
Source
Freshsales
Destination
Compatibility
5 of 8
objects map 1:1 between Highrise and Freshsales.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from Highrise to Freshsales is a migration from a flat, contact-centric CRM built for small teams to a multi-object platform with built-in AI, workflows, and sales sequences. Highrise has no bulk write endpoint and exports Deals, Cases, and Notes as plain text, so we parse those TXT exports to reconstruct structured records before loading into Freshsales via its REST API with per-plan rate limits (1,000 to 5,000 requests per hour depending on the Growth, Estate, or Forest tier). Highrise's flat Party model (People and Companies as separate Party types) maps to Freshsales's hierarchical Contact-plus-Account model, which requires a pre-migration split and parent-record resolution before any Contact inserts. We do not migrate automations, workflows, or external Zapier Zaps; we deliver a written inventory of every identified automation for the customer's admin to rebuild in Freshsales's native Workflow Builder and Sales Sequences.
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 Highrise object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Highrise
People (Contacts)
Freshsales
Contact (with Lead split by qualification)
1:manyHighrise People map to Freshsales Contact by default. For People with a status indicating an unqualified prospect (no active deal, no recent task), we evaluate mapping to Freshsales Lead instead. The split criteria are defined during scoping based on the customer's Highrise setup. We preserve the Highrise contact's email as the unique identifier, and any Highrise custom fields on People migrate as Freshsales custom contact fields. The flat People-Party relationship does not require an Account in Highrise; Freshsales requires Contact.AccountId, so we create the parent Account from the linked Highrise Company (or a placeholder Account named after the Person) before Contact insert.
Highrise
Companies (Parties)
Freshsales
Account
1:1Highrise Companies (Party type = Organization) map to Freshsales Account. The Company name becomes Account Name, domain becomes Website, and address fields map to Freshsales billing address fields. We use the Company-Person association from Highrise to establish Contact.AccountId during the Contact migration phase. If a Highrise Company has no associated People, it still migrates as a standalone Account.
Highrise
Deals
Freshsales
Deal
1:1Highrise Deals map to Freshsales Deal. Highrise exports Deals as .txt only (not CSV), so we parse the plain text output to extract deal name, stage, monetary value, responsible owner, and linked Party. Stage names from Highrise (e.g., New, Contacted, Qualified, Won, Lost) map to Freshsales Deal Stage values. The deal owner email resolves to a Freshsales User during the Owner reconciliation phase. If Highrise Deals include any custom fields, those map to Freshsales custom Deal fields created before migration.
Highrise
Cases
Freshsales
Task or Case (Service Cloud dependent)
lossyHighrise Cases export as .txt only. We parse case title, status, linked Party, and any text body. If the destination Freshsales instance has Service Cloud enabled (Cases module available), Cases migrate as native Freshsales Cases with the Highrise Case status mapped to a Freshsales Case status field. If Service Cloud is not present, Cases migrate as Tasks with the subject prefixed [Case] and a custom multi-select picklist field capturing the original Highrise Case status for audit.
Highrise
Tasks
Freshsales
Task
1:1Highrise Tasks map directly to Freshsales Task. Completed and open tasks both migrate with due date, assignee (resolved by owner email), priority, and related Party preserved. The task subject and description fields transfer as plain text. Any task linked to a Highrise Party that has not yet been created in Freshsales is held in a dependency queue until the parent record exists in the destination.
Highrise
Notes and Emails (Recordings)
Freshsales
Note
1:1Highrise stores Notes, Emails, and Comments as Recordings linked to People or Companies. The export is TXT only, stripping HTML formatting and inline images from emails. We capture the full text content, the recording date, the author name, and the linked Party. Recordings migrate as Freshsales Notes attached to the corresponding Contact or Account. We flag any email body exceeding 5,000 characters for manual review because plain-text parsing of long-form email exports can truncate or mis-format message content.
Highrise
Custom Fields
Freshsales
Custom Fields
1:1Highrise custom fields on People, Companies, and Deals are detected via the custom_field_subjects API endpoints. We create matching Freshsales custom fields (on Contact, Account, and Deal objects respectively) before migration begins. Field types map as follows: text fields to Freshsales text, number fields to number, date fields to date, dropdown fields to single-select picklist, and multi-checkbox fields to multi-select picklist. If a Highrise custom field has a large enumerated value set, we validate that the Freshsales picklist can accommodate all values before creation.
Highrise
Tags
Freshsales
Multi-Select Picklist Custom Field
lossyHighrise Tags are a flat many-to-many label system applied across People, Companies, Deals, and Cases. Freshsales does not have a native tag object. We create a multi-select picklist custom field on the relevant Freshsales objects (Contacts, Accounts, Deals) and populate the field values with the original tag names. If a record has multiple tags, all tags migrate as comma-separated values in the multi-select field. We flag any tag count exceeding 20 unique values for a customer-admin review to prevent unwieldy picklist maintenance.
| Highrise | Freshsales | Compatibility | |
|---|---|---|---|
| People (Contacts) | Contact (with Lead split by qualification)1:many | Fully supported | |
| Companies (Parties) | Account1:1 | Fully supported | |
| Deals | Deal1:1 | Mapping required | |
| Cases | Task or Case (Service Cloud dependent)lossy | Mapping required | |
| Tasks | Task1:1 | Fully supported | |
| Notes and Emails (Recordings) | Note1:1 | Mapping required | |
| Custom Fields | Custom Fields1:1 | Mapping required | |
| Tags | Multi-Select Picklist Custom Fieldlossy | 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.
Highrise gotchas
API rate limits are endpoint-specific and aggressive
Deals, Cases, Notes, and Emails export as plain text only
No workflow or automation engine to migrate
Atom feeds are the best source for recording history
Free and Solo tiers have hard contact and storage caps
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the Highrise account across plan tier, People count, Company count, Deal volume, Case count, Task count, Recording volume (Notes and Emails), custom field definitions, and Tags. We extract the full owner roster (name and email) and map it against the target Freshsales plan (Growth, Pro, or Enterprise) to determine API rate limits and plan adequacy. The discovery output is a written migration scope document with object counts, mapping rules, and an estimated timeline.
TXT export parsing and field extraction
We download Highrise's built-in exports for Deals (.txt), Cases (.txt), and Notes (.txt), parse each file using delimiter-aware text extraction, and produce structured CSV intermediates for each object type. We flag malformed records (non-standard date formats, missing required fields, encoding issues) and deliver a data quality report to the customer before loading begins. People, Companies, Tasks, and Custom Field data come from the API and are already structured.
Freshsales schema preparation
We create all required custom fields on the Contact, Account, and Deal objects in Freshsales before any data loads. This includes any Highrise custom field definitions mapped during scoping and a multi-select picklist for Tags. We validate field type compatibility (text length, picklist value sets, required field rules) and disable any Freshsales validation rules that would block migration writes during the load phase. We also configure the Deal stage values to match the Highrise pipeline stage names so that stage mapping is 1:1.
Account migration as blocking prerequisite
We run Account migration (from Highrise Companies) first because Freshsales requires Contact.AccountId at insert time. Each Account is created with the Company name, website, and address. Any Highrise Company with no People is still migrated as a standalone Account. Accounts without a valid domain or name are assigned a placeholder identifier and flagged for customer review.
Contact migration with AccountId resolution
We migrate People to Freshsales Contacts with AccountId resolved from the linked Highrise Company. For People with no associated Company, we create a placeholder Account named after the Person. Owner email resolves to a Freshsales User; owners without a matching User are held in a reconciliation queue for the customer's admin to provision before Contact migration resumes. Custom field values on People populate the corresponding Freshsales Contact custom fields.
Deal, Case, Task, and Note migration with dependency resolution
Deals migrate after Contacts with PartyId resolved to the corresponding Freshsales Account or Contact. Cases migrate as Tasks (or native Cases if Service Cloud is present) with the Highrise Case status preserved in a custom field. Tasks migrate directly with assignee and due date. Notes (Recordings) migrate as Freshsales Notes attached to the parent Contact or Account. All phases emit a row-count reconciliation report showing records loaded, records skipped, and records held in dependency queue.
Cutover, delta migration, and automation handoff
We freeze writes in Highrise during cutover, run a final delta pass to capture any records modified during the migration window, then enable Freshsales as the system of record. We deliver the automation inventory document listing every identified Zapier Zap, Make scenario, and email filter rule with a recommended Freshsales Workflow Builder equivalent. We support a 5-business-day hypercare window for reconciliation issues. Rebuilding automations in Freshsales is outside migration scope and is handled by the customer's admin or a Freshsales implementation partner.
Platform deep dives
Highrise
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Highrise and Freshsales.
Object compatibility
3 of 8 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
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Highrise: 150 req/5s general; 2 req/10s for email search; 10 req/10s for recordings.xml. Returns 503 with Retry-After header on exceeded limits..
Data volume sensitivity
Highrise 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 Highrise to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Highrise to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Highrise
Other ways to arrive at Freshsales
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.