CRM migration

Migrate from Moskit to Freshsales

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

Moskit logo

Moskit

Source

Freshsales

Destination

Freshsales logo

Compatibility

56%

5 of 9

objects map 1:1 between Moskit and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Moskit logo

Moskit

What's pushing teams away

  • Weak analytics — G2 and SoftwareWorld reviewers consistently flag that 'the analytics are not good' compared to international competitors, pushing data-driven sales teams toward HubSpot, Pipedrive, or Salesforce.
  • Feature gaps versus mature CRMs — reviewers note 'a few features that you can find on others CRMs missing on Moskit', so growing teams that hit a missing-feature wall migrate out.
  • Limited international presence — Moskit is concentrated in Brazil with Portuguese-first support and documentation; multi-country sales operations expand to Pipedrive, Zoho CRM, or HubSpot for global team coverage.
  • Narrow integration ecosystem versus international leaders — beyond WhatsApp, email, and Brazilian payment/telephony, the third-party connector library is meaningfully thinner than HubSpot's or Pipedrive's marketplaces.
  • Competitive Brazilian field — Atendare, Upsales, and Teamgate are cited as direct Moskit competitors in the Brazilian SMB space, so buyers comparison-shop heavily and Moskit loses deals where competitors offer slightly broader analytics or integration depth.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How Moskit objects map to Freshsales

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

maps to

Freshsales

Lead and Contact (split based on lifecycle)

1:many
Fully supported

Moskit'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)

maps to

Freshsales

Account

1:1
Fully supported

Moskit 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)

maps to

Freshsales

Deal

1:1
Fully supported

Moskit 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)

maps to

Freshsales

Deal Tasks or Custom Object

1:many
Fully supported

Moskit 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)

maps to

Freshsales

Task or Event

1:1
Fully supported

Moskit 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

maps to

Freshsales

Custom Fields

lossy
Mapping required

Moskit 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

maps to

Freshsales

Deal Stages

lossy
Mapping required

Moskit 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)

maps to

Freshsales

User

1:1
Fully supported

Moskit 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

maps to

Freshsales

Note on Contact/Deal

1:1
Fully supported

Moskit'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.

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.

Moskit logo

Moskit gotchas

High

No published API rate limit documentation

Medium

WhatsApp conversation sync is a linked feature, not standalone data

Medium

Deal-to-Project linkage must be explicitly preserved

Low

Custom field definitions vary by object and are not enumerated in bulk

Low

Brazilian Portuguese field labels may cause mapping mismatches

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • Lead conversion in Freshsales can silently drop field data without mapping

    Freshsales converts Leads to Contact, Account, and Deal on a configurable field mapping screen. If Moskit custom field values on a Contact that will become a Lead are not mapped to corresponding Contact or Account fields in Freshsales, that data is lost during conversion. We pre-create the target custom fields in Freshsales and document the required lead-to-contact mapping configuration in the migration package so the customer's admin sets it before any Lead conversion happens. Migrations that skip this step lose data silently at conversion time.

  • Project-to-deal linkage breaks if Deals are not imported first

    Moskit Projects store a reference to the originating Deal. If Projects are imported before Deals, the deal reference points to a non-existent destination record and the linkage breaks silently. We sequence Deals first, capture source deal IDs, then import Projects in a second pass and remap the deal reference to the new destination deal IDs. This two-pass approach adds time but is required to preserve the project context that Moskit users rely on for deal-linked task management.

  • Moskit API has no published rate limit; extraction requires adaptive backoff

    Moskit's REST API exposes create, edit, query, and delete operations per object type, but no published rate-limit threshold exists. We probe at conservative intervals (5 seconds per request minimum) and implement exponential backoff on any 429 response. If a 429 arrives without a Retry-After header, we default to a 30-second pause. This slows extraction compared to a documented-rate-limit API, but prevents mid-migration blocking. Very large Moskit accounts (50,000+ records) may require an extra week of extraction time.

  • Custom field schema must be discovered per object type individually

    Moskit has no endpoint that returns all custom field definitions across all object types in one call. We query each object individually (Contacts, Companies, Deals, Activities) to retrieve its custom field schema before pulling record data. This adds one to two API calls per object type to the extraction script but ensures we capture every custom field definition before mapping begins. We document the discovered schema in the migration package alongside the Freshsales field creation steps.

  • WhatsApp message content does not migrate; only metadata

    Moskit's WhatsApp Business integration stores conversation references and metadata (timestamps, participant numbers, message count) linked to Contact records, but actual message content lives in WhatsApp's infrastructure and is not accessible via Moskit's API. We migrate the metadata as a Note on the Contact. The customer receives a recommendation to separately export full WhatsApp history from the WhatsApp Business portal if conversation content is required in Freshsales or another tool.

Migration approach

Six steps for a successful Moskit to Freshsales data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Moskit logo

Moskit

Source

Strengths

  • Native WhatsApp Business integration with automatic conversation sync
  • 5000+ integrations available via Zapier, Make, and Pluga
  • AI-powered Smart Fields that extract deal information automatically
  • Meeting recording and transcription linked directly to CRM records
  • Mass email campaigns with personalization at scale

Weaknesses

  • API documentation is not publicly rate-limited; migration tooling must probe and adapt dynamically
  • Limited public review corpus makes it hard to surface common migration pain points from user forums
  • No publicly documented bulk export endpoint; migrations rely on paginated API queries
  • Pricing is in Brazilian Real (R$) only, which may complicate international cost analysis
  • Project module is deal-centric; standalone project management without a deal link is not supported
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 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 Moskit and Freshsales.

  • Object compatibility

    B

    2 of 8 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

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Moskit: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Moskit to Freshsales 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 Moskit to Freshsales data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most long-tail migrations with under 15,000 Contacts, 3,000 Deals, and no custom objects complete in two to four weeks. Migrations approaching 15,000+ records or involving Projects with deal-linked task hierarchies move to four to six weeks because of the two-pass project remapping and per-object schema discovery overhead. Moskit's undocumented API rate limits add unpredictability; very large record sets may require an extra discovery iteration before the production migration window opens.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Moskit.
Land in Freshsales, 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