CRM migration
Field-level mapping, validation, and rollback between Results and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Results
Source
Freshsales
Destination
Compatibility
8 of 10
objects map 1:1 between Results and Freshsales.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from Results to Freshsales requires careful schema reconciliation because Results lacks publicly documented API field names and Freshsales enforces strict field-type constraints on import. We verify exportability and field compatibility during scoping, create matching custom fields in Freshsales with exact name correspondence, and migrate records in dependency order (Accounts first, then Contacts, then Deals, then Activities) to satisfy Freshsales lookup requirements. The Results person model maps to Freshsales Leads that convert to Contacts and Accounts, while any Results deal pipeline maps to Freshsales Deals with corresponding stage values. Workflows, automation rules, and custom reporting configurations do not migrate; we provide a written inventory of these for your admin to rebuild in Freshsales. Typical migration timelines land between two and four weeks depending on record volume and the number of custom fields requiring pre-creation.
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 Results 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.
Results
Contact (person record)
Freshsales
Lead
1:1Results person records map to Freshsales Lead as the initial import target. If the Results export contains a lifecycle_stage or status property, we use it to determine whether records should land directly as Freshsales Contact instead of Lead. Any email address in Results becomes the Lead Email field and serves as the dedupe key during import. The Results first_name and last_name split is reconstructed at migration time; if only a single name field exists, we use it as LastName and flag the FirstName blank for the customer's admin to populate post-migration.
Results
Company (organization record)
Freshsales
Account
1:1Results organization records map directly to Freshsales Account. The organization name becomes the Account Name field, and any domain or website field in the Results export becomes the Account Website field. Account is created before any Lead or Contact import so that the Account Lookup relationship is satisfied at the moment of record insert. If the Results export does not include a separate organization record for each person record, we perform email-domain grouping to generate Account records during the transform phase.
Results
Lead
Freshsales
Lead
1:1If Results exports a separate Lead object distinct from person records, those map directly to Freshsales Lead with status preserved. Any lead_score or rating property from Results migrates to the Freshsales Lead Rating field (Hot/Warm/Cold) or a custom numeric field for raw scoring values. Lead owner resolves by email match against Freshsales User records created during the migration User setup phase.
Results
Deal (opportunity record)
Freshsales
Deal
1:1Results deal records map to Freshsales Deal. The deal name, amount, close_date, and stage from Results export map to Freshsales Deal Name, Amount, Close Date, and Deal Stage respectively. If Results includes a pipeline identifier, we configure Freshsales Pipeline and Stage values before migration to match the customer's pipeline structure. Stage values that do not exist in Freshsales are pre-created during the schema setup phase.
Results
Deal Stage
Freshsales
Deal Stage
lossyEach distinct stage value in the Results deal export requires a corresponding Deal Stage in Freshsales. We create the stage values during schema setup, preserving the Results stage name and optionally mapping to a standard Freshsales stage label (Appointment Scheduled, Qualified to Buy, Presentation Scheduled, Decision Maker Bought-In, Contract Sent, Closed Won, Closed Lost) if the customer approves a label normalization. Stage probability percentages from Results migrate as-is if numeric, or we assign default Freshsales probabilities if the source does not track probability.
Results
Owner (user record)
Freshsales
User
1:1Results owner records map to Freshsales User by email address match. We require the customer to pre-create Freshsales User accounts matching the owner emails in the Results export before migration begins, or we hold owner references in a reconciliation queue until User provisioning is complete. Active/inactive status on Freshsales User must match whether the original owner is active in Results. OwnerId is required on Deal and Contact insert; unresolved owners block import.
Results
Activity: Task
Freshsales
Task
1:1Results task records map to Freshsales Task. Status, Priority, ActivityDate, and subject migrate directly. The Task WhoId links to the migrated Lead or Contact; the Task WhatId links to the migrated Deal or Account. We resolve these parent references by querying the migrated record IDs using the email address or external ID from the Results activity record as the lookup key. If the Results export does not include the person ID on activity records, we fall back to email-based matching.
Results
Activity: Meeting
Freshsales
Event
1:1Results meeting records map to Freshsales Event. StartDateTime, EndDateTime, and Location migrate directly. Attendee information from Results migrates to EventRelation records linked to the corresponding Contact or Lead. If Results stores meeting attendees in a separate association table, we reconstruct EventRelation records during the transform phase. Meeting subjects become the Event Subject field.
Results
Activity: Note
Freshsales
Note
1:1Results notes map to Freshsales Note records linked via ContentDocumentLink to the parent record (Lead, Contact, Account, or Deal). Note body migrates as plain text. If the Results export includes note attachments, those migrate as ContentDocument records linked to the same parent. We preserve the original created date as the Note CreatedDate for audit continuity.
Results
Custom Field
Freshsales
Custom Field
lossyAny custom fields in the Results export require pre-creation in Freshsales before migration begins. We create Freshsales custom fields with the exact column header name from the Results CSV export to enable automatic field mapping during import. Field types must match: text exports map to Freshsales text fields, numeric exports map to number fields, date exports map to date fields. If a Results custom field uses a picklist format, we create the corresponding Freshsales picklist with the exact option values before migration.
| Results | Freshsales | Compatibility | |
|---|---|---|---|
| Contact (person record) | Lead1:1 | Fully supported | |
| Company (organization record) | Account1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Deal (opportunity record) | Deal1:1 | Fully supported | |
| Deal Stage | Deal Stagelossy | Fully supported | |
| Owner (user record) | User1:1 | Fully supported | |
| Activity: Task | Task1:1 | Fully supported | |
| Activity: Meeting | Event1:1 | Fully supported | |
| Activity: Note | Note1:1 | Fully supported | |
| Custom Field | 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.
Results gotchas
QuickBooks-linked records have dual sources of truth
Suite is not architected to scale beyond ~15 users / 15K contacts
No documented public REST API
Field Service photos and signatures require separate binary extraction
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
API verification and field inventory
We connect to the Results API (with credentials provided by the customer) to enumerate all available objects, field names, and data types. We export a sample of 50-100 records per object to verify field contents, confirm which objects contain data, identify custom fields, and determine the export format (JSON, CSV, or other). This step produces a written field inventory that forms the basis of the migration schema document. Without this verification, we cannot guarantee that all fields in Results will map correctly to Freshsales field types.
Freshsales schema setup
We provision the Freshsales schema in the customer's target account before any data import. This includes pre-creating all custom fields required by the Results field inventory, using exact name matching for CSV compatibility. We configure Deal Stages to match the pipeline structure from Results, create any required picklist values, and set up user accounts matching the Results owner emails. All schema setup happens in the customer's live Freshsales account with their admin present so that changes can be reviewed and approved before data is loaded.
Test migration and reconciliation
We run a test migration using a subset of data from Results (typically 100-500 records per object) into Freshsales. The customer reconciles record counts, spot-checks mapped fields against the Results source data, and confirms that the person-to-account-to-deal structure is correct. Any field mapping errors, missing picklist values, or data type mismatches are corrected in the transform logic before the production migration begins. We do not proceed to production migration without a signed test migration approval.
Production migration in dependency order
We run production migration in record dependency order: Accounts (from Results organization records), Leads (from Results person records), Contacts (if Results uses a separate contact model or if leads are converted during migration), Deals (with AccountId and OwnerId resolved), then Activities (Tasks, Events, Notes) with WhoId and WhatId resolved by email-based parent lookup. Each phase emits a row-count reconciliation report. Any records that fail validation (missing required fields, invalid field types) are logged to an error file for the customer's admin to review and correct.
Cutover, validation, and automation inventory handoff
We freeze writes to Results during cutover, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver the workflow and sequence inventory document to the customer's Freshsales admin. We support a three-day hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Results automations as Freshsales Workflows or Sequences inside the migration scope; that work is handled by the customer's admin using the inventory document we provide.
Platform deep dives
Results
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 Results 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
Results: Not publicly documented.
Data volume sensitivity
Results 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 Results to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Results 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 Results
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.