CRM migration
Field-level mapping, validation, and rollback between Moskit and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Moskit
Source
Freshsales
Destination
Compatibility
5 of 9
objects map 1:1 between Moskit and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Moskit CRM to Freshsales is a cross-regional migration that requires handling Moskit's undocumented API rate limits, preserving its deal-centric project linkage, and adapting Moskit's flat object model into Freshsales' Lead-to-Contact-to-Account conversion flow. Moskit stores Contacts, Companies, Deals, Activities, and Projects with custom fields per object type; we query each object individually to discover the custom schema before export. Freshsales has no published API rate-limit documentation, so we probe conservatively and back off on any 429 response. Projects in Moskit are spawned from Deals and carry a Deal reference; we import Deals first, capture source IDs, then remap those IDs to destination deal IDs when importing Projects. WhatsApp conversation metadata (timestamps, participants, message count) migrates from Moskit, but actual message content lives in WhatsApp's infrastructure and does not transfer. We do not migrate Moskit Workflows or Project automations; we deliver a written inventory of every automation for your admin to rebuild in Freshsales.
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 Moskit 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.
Moskit
Contact
Freshsales
Lead and Contact (split based on lifecycle)
1:manyMoskit's Contact object holds all person records regardless of qualification stage. We split on a Moskit lifecycle property if present (e.g., qualified lead maps to Freshsales Contact attached to an Account; unqualified maps to Freshsales Lead). If Moskit has no lifecycle field, all Contacts import as Freshsales Leads and the customer decides on a conversion day. We preserve the original Moskit contact ID in a custom field moskit_original_id__c on both Lead and Contact for audit and cross-reference.
Moskit
Company (Empresas)
Freshsales
Account
1:1Moskit Companies map directly to Freshsales Accounts. The company domain_name or website field becomes the Account Website. Account is created before any Contact or Lead import so that the Account Lookup relationship is satisfied at insert time. If Moskit stores multiple contacts per company, each Contact record in Freshsales points to the same Account via the AccountID lookup.
Moskit
Deal (Negócios)
Freshsales
Deal
1:1Moskit Deals map to Freshsales Deals. Pipeline stages from Moskit become Freshsales Deal stages, which we configure in the destination Admin Settings before migration. Deal amount, close date, owner, and custom fields migrate directly. The Moskit deal ID is preserved in a custom field moskit_original_id__c on the Deal for cross-referencing.
Moskit
Project (Projetos)
Freshsales
Deal Tasks or Custom Object
1:manyMoskit Projects are deal-centric and carry a reference to the originating Deal. We import Deals first, capture source IDs, then import Projects in a second pass remapping the deal reference to the new destination deal IDs. If the customer wants standalone project records, we create a Freshsales custom object called Project with a Lookup to Deal and migrate task-level details (titles, due dates, assignees) as child task records. This requires Freshsales Enterprise plan for custom objects.
Moskit
Activity (Atividades)
Freshsales
Task or Event
1:1Moskit Activities (tasks, calls, meetings, notes) map to Freshsales Tasks and Events. We classify by Moskit activity type: task activities map to Freshsales Task, call activities map to Task with subtype=Call, meeting activities map to Freshsales Event. Each activity's parent reference (deal_id or contact_id) is remapped to the Freshsales Deal or Contact ID resolved from the migration ID map. Timestamps and owner assignments migrate directly.
Moskit
Custom Properties
Freshsales
Custom Fields
lossyMoskit allows custom fields on Contacts, Companies, Deals, and Activities. We query each object type individually to discover its custom field schema (Moskit has no bulk schema endpoint). Each custom field is recreated in Freshsales Admin Settings under the corresponding module (Leads, Contacts, Accounts, Deals), matching field type: text to text, number to number, date to date, picklist to dropdown. Picklist values from Moskit migrate as Freshsales dropdown options verbatim.
Moskit
Pipeline Stages
Freshsales
Deal Stages
lossyMoskit pipeline stages (with stage order and probability if set) become Freshsales Deal stages under Admin Settings. We create each stage name matching the Portuguese label from Moskit and set the probability percentage if Moskit has that data. Stage order sequence is preserved. The customer may rename stages post-migration to English if preferred.
Moskit
User (Usuário)
Freshsales
User
1:1Moskit User records (name, email, role, active/inactive status) map to Freshsales User records. We match by email address. Active users in Moskit become active Freshsales users; inactive users are created with inactive status so the customer's admin can activate them with appropriate license assignment post-migration.
Moskit
WhatsApp Conversation Metadata
Freshsales
Note on Contact/Deal
1:1Moskit's WhatsApp sync stores conversation metadata (timestamps, participant numbers, message count) linked to Contact records, but actual message content lives in WhatsApp's infrastructure. We export the conversation metadata and create a Freshsales Note record on the corresponding Contact, with a note body indicating the conversation existed, its date range, and message count. The customer receives a separate export recommendation to pull full WhatsApp history directly from WhatsApp Business if required.
| Moskit | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead and Contact (split based on lifecycle)1:many | Fully supported | |
| Company (Empresas) | Account1:1 | Fully supported | |
| Deal (Negócios) | Deal1:1 | Fully supported | |
| Project (Projetos) | Deal Tasks or Custom Object1:many | Fully supported | |
| Activity (Atividades) | Task or Event1:1 | Fully supported | |
| Custom Properties | Custom Fieldslossy | Mapping required | |
| Pipeline Stages | Deal Stageslossy | Mapping required | |
| User (Usuário) | User1:1 | Fully supported | |
| WhatsApp Conversation Metadata | Note on Contact/Deal1: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.
Moskit gotchas
No published API rate limit documentation
WhatsApp conversation sync is a linked feature, not standalone data
Deal-to-Project linkage must be explicitly preserved
Custom field definitions vary by object and are not enumerated in bulk
Brazilian Portuguese field labels may cause mapping mismatches
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
Schema discovery and scoping
We generate a Moskit API key from the Marketplace module and run per-object schema discovery queries against Contacts, Companies, Deals, Activities, and Projects to enumerate all custom field definitions. We extract a record count sample (50 records per object) to assess data quality and identify duplicate risk. We pair this with a Freshsales environment audit: plan tier, existing custom fields, active users, and pipeline configuration. The output is a written scoping document with object-to-object mapping, custom field creation checklist, and a rate-limit baseline probe to calibrate extraction pacing.
Custom field creation in Freshsales
Before any data import, we create all target custom fields in Freshsales Admin Settings under the corresponding modules (Leads, Contacts, Accounts, Deals). Field types are matched from Moskit definitions: text to text, number to number, date to date, picklist to dropdown. Picklist values are created verbatim. We also configure the Lead-to-Contact field mapping screen in Freshsales so that when Leads convert, Moskit custom field data transfers to the correct Contact and Account fields. This step requires a Freshsales admin login and is validated in a staging pass before production.
Sandbox migration and reconciliation
We run a first-pass migration into a Freshsales sandbox environment using production-like data volume. We reconcile record counts (Contacts in vs Leads in, Accounts in, Deals in, Activities in) and spot-check 20-30 records against the Moskit source for field-level accuracy. Any field type mismatches, missing picklist values, or lookup resolution failures surface here and are corrected before production migration begins. The customer reviews the sandbox and signs off before we proceed.
Owner reconciliation
We extract every distinct Moskit Owner referenced on Contacts, Companies, Deals, and Activities and match by email against the Freshsales User table. Any Moskit Owner without a matching Freshsales User is held in a reconciliation queue. The customer's Freshsales admin provisions missing users (active or inactive depending on whether the original Moskit owner is still active) before record import resumes. OwnerId references are required on Deals and Contacts, so this step gates the production migration.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Moskit Companies), Leads and Contacts (with AccountId resolved for Contacts), Deals (with OwnerId and stage resolved), then Activities (Tasks and Events with parent record remapping). Projects are imported last in a second pass with deal-ID remapping. Each phase emits a row-count reconciliation report. Moskit's undocumented rate limits are managed with conservative request intervals and exponential backoff on any 429 response. The customer freezes writes to Moskit during the cutover window.
Cutover, validation, and automation handoff
We run a final delta migration of any records modified during the cutover window, then enable Freshsales as the system of record. We deliver a written inventory of every Moskit Workflow and Project automation with its trigger, conditions, and recommended Freshsales equivalent. We do not rebuild automations as Freshsales Workflows inside the migration scope; that work belongs to the customer's admin. We support a three-day post-cutover window to resolve reconciliation issues raised by the sales team.
Platform deep dives
Moskit
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Moskit and Freshsales.
Object compatibility
2 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
Moskit: Not publicly documented.
Data volume sensitivity
Moskit 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 Moskit to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Moskit 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 Moskit
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.