CRM migration
Field-level mapping, validation, and rollback between Onsite CRM and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Onsite CRM
Source
Freshsales
Destination
Compatibility
8 of 10
objects map 1:1 between Onsite CRM and Freshsales.
Complexity
CModerate
Timeline
2-3 weeks
Overview
Moving from Onsite CRM to Freshsales is a manual-extraction migration constrained by the absence of a public API on the source platform. Onsite CRM exposes data only through in-app CSV and PDF exports, which means we request scoped exports of each object type from the customer, validate record counts and field coverage against customer-supplied screenshots of the Onsite CRM UI, and then map every standard field to Freshsales equivalents. Custom fields require explicit mapping during scoping because Onsite CRM's field structure varies per customer configuration. Pipeline stages migrate as Freshsales pipeline stages with probability mapping preserved. Activity history (calls, SMS, email logs) is the highest-risk object because Onsite CRM's in-app export options may not bundle rich activity records in a single downloadable file. We flag this gap during discovery and advise customers to request a separate activity export before migration day. We do not migrate Onsite CRM workflows, automations, or sequences as code; these do not exist as transferable data in Onsite CRM's data model, and Freshsales automations require rebuilding post-migration.
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 Onsite CRM 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.
Onsite CRM
Contact
Freshsales
Contact
1:1Onsite CRM contact records map directly to Freshsales Contact. Standard fields (name, email, phone, company association) map to Freshsales Contact fields: first_name, last_name, email, phone, and the account_id lookup. Email serves as the dedupe key during import. We flag any contact records missing an email address for manual review because Freshsales requires a valid email for the contact to function fully in marketing and AI features.
Onsite CRM
Company
Freshsales
Account
1:1Onsite CRM company records map to Freshsales Account. The company name becomes the account_name, and the domain or website field maps to Freshsales website. We create accounts before contact import so that account_id lookup is satisfied at the moment of contact insert. If Onsite CRM exposes industry or employee count fields, we map those to Freshsales custom fields created during the configuration phase.
Onsite CRM
Deal
Freshsales
Deal
1:1Onsite CRM deal records map to Freshsales Deal. We map deal name, deal value, close date, and stage to Freshsales Deal fields. The stage name from Onsite CRM maps to a Freshsales pipeline stage that we configure before migration, preserving stage order and probability percentage. Closed-won and closed-lost statuses from Onsite CRM transfer to Freshsales deal status values.
Onsite CRM
Pipeline Stage
Freshsales
Pipeline Stage
lossyOnsite CRM custom pipeline stages are customer-specific and exported as part of the deal export or visible in the pipeline configuration UI. We extract stage names, their display order, and probability percentages. In Freshsales, we configure a matching pipeline with stages named to match the Onsite CRM taxonomy, and set probability mapping per stage. The customer reviews and approves the stage mapping before migration loads begin.
Onsite CRM
Activity: Call Log
Freshsales
Activity
1:1Onsite CRM call logs (built-in calling feature) map to Freshsales Activity records with activity_type = call. Call duration, disposition, and timestamp migrate to Freshsales activity fields. We note that Onsite CRM's call recording storage may be file-based rather than record-based; recording URLs require separate file extraction if the recordings are stored in the Onsite CRM environment rather than a linked telephony provider.
Onsite CRM
Activity: SMS
Freshsales
Activity
1:1Onsite CRM SMS thread records map to Freshsales Activity with activity_type = task and a custom field sms_body__c carrying the message content. Thread ordering is preserved by setting activity_date to the original message timestamp. We flag SMS export completeness as a pre-migration risk because Onsite CRM's SMS history export coverage may vary by customer configuration.
Onsite CRM
Activity: Email
Freshsales
Activity
1:1Onsite CRM email marketing and email tracking records map to Freshsales Activity. The email subject, body, and send timestamp migrate. Freshsales supports email logging through its email logging feature, which we configure during the migration setup phase to match Onsite CRM's email tracking behavior.
Onsite CRM
Task
Freshsales
Task
1:1Onsite CRM task records migrate to Freshsales Task with title, due_date, status, and priority preserved. Task assignment requires owner resolution: we match Onsite CRM owner email to Freshsales User email and set the owner_id accordingly. Any Onsite CRM task with an unresolvable owner is flagged for the customer to map manually before import.
Onsite CRM
Custom Field
Freshsales
Custom Field
lossyOnsite CRM custom fields on any object require manual mapping during scoping because the platform exposes only what the UI shows per customer configuration. We request customer-supplied screenshots of the Onsite CRM field configuration page during discovery, then create equivalent custom fields in Freshsales before migration. Field type mapping (text to text, date to date, picklist to picklist) is resolved during scoping, and any Onsite CRM field type that Freshsales does not support natively is flagged for alternative handling.
Onsite CRM
Tag
Freshsales
Tag
1:1Tags applied to Onsite CRM contacts or deals migrate as Freshsales Tag records linked to the corresponding contact or deal. The tagging taxonomy is preserved as-is, and the customer reviews tag normalization during scoping. If Onsite CRM uses a flat tag list and Freshsales supports hierarchical tags, we flag the normalization options for customer decision.
| Onsite CRM | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Activity: Call Log | Activity1:1 | Fully supported | |
| Activity: SMS | Activity1:1 | Fully supported | |
| Activity: Email | Activity1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Tag | Tag1: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.
Onsite CRM gotchas
No public API documentation found
Weebly-hosted infrastructure limits data access
Limited historical activity export
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 export scoping
We request customer-supplied screenshots of their Onsite CRM field configuration, pipeline stage setup, and object list. We run a test export of each object type (Contacts, Companies, Deals, Activities, Tasks) to confirm export file completeness and identify any fields missing from the standard export. We document every Onsite CRM custom field, its data type, and its current values, then create a mapping plan for Freshsales custom field creation. We also request a separate activity export request to assess call log, SMS, and email history coverage.
Data validation and cleansing
We validate every exported CSV against the Onsite CRM source: record counts per object, required field coverage (email presence on contacts, account association on deals), and duplicate identification. We flag records with missing required fields for the customer to resolve before import. We remove records marked as test or spam data and normalize date formats, phone number formats, and currency fields to match Freshsales import requirements. This phase produces a clean, validated dataset ready for field mapping.
Freshsales schema configuration
We configure the Freshsales destination account before any data loads begin. This includes creating Freshsales Users matching the Onsite CRM owner list, configuring pipeline stages mapped from Onsite CRM pipeline names and probabilities, creating custom fields for any Onsite CRM custom field that has no standard Freshsales equivalent, and setting up the Lead-Contact split logic if the customer has decided to implement a prospect funnel in Freshsales. We run this in a Freshsales trial account and validate the schema before production configuration.
Account and Contact migration
We load Companies (as Freshsales Accounts) first, then Contacts with the account_id lookup resolved from the Account import. Email serves as the dedupe key for contacts. Owner mapping is resolved by email match between Onsite CRM owner records and Freshsales User email addresses. Any owner without a matching Freshsales User is flagged and held in a reconciliation queue for the customer's admin to provision. We run record-count reconciliation after the contact load before proceeding to deals.
Deal and Activity migration
We load Deals with account_id resolved from the Account import and stage mapped to the Freshsales pipeline stage configured in step 3. Closed-won and closed-lost statuses are set explicitly from the Onsite CRM deal state. Activity history (calls, SMS, email logs) is loaded via Freshsales Activity API, linked to the parent Contact or Account record by resolved ID. Activity timestamp ordering is preserved from the original Onsite CRM export timestamp. Task records are loaded last with owner resolution applied.
Cutover, delta sync, and automation rebuild handoff
We freeze Onsite CRM writes during the final cutover window and run a delta migration of any records created or modified during the migration window. We deliver a written inventory of every Freshsales automation (workflows, assignment rules, territory rules) that requires configuration post-migration, along with the recommended setup steps. We do not rebuild automations inside the migration scope. We provide a one-week post-go-live support window to resolve reconciliation issues raised by the sales team.
Platform deep dives
Onsite CRM
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Onsite CRM and Freshsales.
Object compatibility
4 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
Onsite CRM: Not publicly documented.
Data volume sensitivity
Onsite CRM 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 Onsite CRM to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Onsite CRM 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 Onsite CRM
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.