CRM migration
Field-level mapping, validation, and rollback between Moskit and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Moskit
Source
Salesforce Sales Cloud
Destination
Compatibility
7 of 12
objects map 1:1 between Moskit and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Moskit CRM to Salesforce Sales Cloud is a migration from a Brazilian SMB-focused platform to a globally-scaled enterprise CRM. Moskit stores contacts, companies, deals, activities, and projects with Portuguese-language field labels and deal-centric project linkage; Salesforce uses the Lead-Contact-Account-Opportunity model with separate custom object support from Professional tier. We extract all available Moskit objects via their REST API using bearer-token authentication and paginated queries, resolve the deal-to-project linkage in a two-pass import (deals first, then projects with remapped deal references), and load into Salesforce using the Bulk API with chunking and parent-record lookup resolution. WhatsApp conversation metadata migrates as linked activity records; actual message history stays in WhatsApp infrastructure and is flagged as a gap. Workflows, automations, and WhatsApp integration configurations do not migrate; we deliver a written inventory of Moskit automations for the customer's admin to rebuild in Salesforce Flow.
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 Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Moskit
Contact
Salesforce Sales Cloud
Contact
1:1Moskit Contact records map directly to Salesforce Contact. We extract all standard fields (name, email, phone, custom properties) and map them to typed Salesforce fields. A custom field moskit_contact_id__c stores the original Moskit record ID for audit reconciliation. The Brazilian Portuguese field labels are preserved as-is in the migration package with a Portuguese-to-English glossary provided separately.
Moskit
Company (Empresa)
Salesforce Sales Cloud
Account
1:1Moskit Empresa records map to Salesforce Account. The Account's Name, Website, Industry, and Phone fields map directly. We use the Company record name as the dedupe key during import. Account is created before any Contact import so that the AccountId lookup on Contact is satisfied at insert time.
Moskit
Deal (Negócio)
Salesforce Sales Cloud
Opportunity
1:1Moskit Deals map to Salesforce Opportunity. The dealstage property maps to Salesforce StageName, and the pipeline assignment maps to a Salesforce Record Type and Sales Process that we configure before migration. Deal monetary values map to Amount, close date maps to CloseDate, and owner assignment maps to OwnerId via the User email lookup.
Moskit
Activity (Atividade)
Salesforce Sales Cloud
Task and Event
1:manyMoskit Activities are a unified object for tasks, calls, meetings, and notes. We split them by activity type: tasks map to Salesforce Task with Status and Priority; calls map to Task with TaskSubtype=Call and disposition preserved in a custom field; meetings map to Salesforce Event with StartDateTime and EndDateTime; notes map to Salesforce Note linked via ContentDocumentLink. All activities retain their original timestamps for timeline ordering.
Moskit
Project (Projeto)
Salesforce Sales Cloud
Custom Object (Projeto__c)
1:1Moskit Projects are deal-centric and must be imported in a second pass after Deals. We create a Salesforce custom object Projeto__c with a lookup field linked_deal__c pointing to the Opportunity. During the first pass, we capture source deal IDs. During the second pass, we resolve each project's source deal ID to the corresponding destination Opportunity ID and inject it into linked_deal__c. This two-pass approach is required because Moskit Projects carry a mandatory deal reference that cannot be satisfied until the destination Opportunity exists.
Moskit
Custom Properties
Salesforce Sales Cloud
Custom Fields
lossyMoskit allows custom fields on Contacts, Companies, Deals, and Activities. We extract the custom field definition per object by querying the schema individually (Moskit does not expose a bulk field-enumeration endpoint). Each custom field is created in Salesforce with the closest matching field type (text to Text, number to Number, date to Date, picklist to Picklist or Multi-Select Picklist). Field API names preserve the original Portuguese label slugified into a __c suffix.
Moskit
User (Usuário)
Salesforce Sales Cloud
User
1:1Moskit User records (name, email, role) map to Salesforce User by email match. We export all users including inactive ones with an is_active__c flag set to false for the customer's admin to activate in Salesforce before the production migration. Owners referenced on Deals, Activities, and Projects are resolved via this User map before those objects are imported.
Moskit
Pipeline Stages
Salesforce Sales Cloud
Opportunity Stage
lossyMoskit pipeline stages (custom-named with stage-order sequencing) map to Salesforce OpportunityStage values. We configure the destination stages in Salesforce Setup before migration, preserving stage order and any probability percentages set in Moskit. Stage-level win/loss probability migrates to StageProbability on each stage entry.
Moskit
WhatsApp Conversation Metadata
Salesforce Sales Cloud
Task (custom subtype)
lossyMoskit's WhatsApp Business sync stores conversation metadata (timestamps, participants, message count) linked to Contact records. The actual message content lives in WhatsApp infrastructure and cannot be extracted from Moskit. We import the metadata as Salesforce Tasks with a custom WhatsApp_conversation__c flag set to true, linked to the migrated Contact. Full message history is flagged as a separate data gap for the customer to address via WhatsApp data export tools.
Moskit
Attachment / Document
Salesforce Sales Cloud
ContentDocument / ContentVersion
1:1Moskit attachments linked to Contacts, Companies, Deals, or Activities migrate as Salesforce ContentVersion records attached to the corresponding parent record via ContentDocumentLink. We extract the binary file data and re-upload it to Salesforce's Content workspace during migration, preserving file names and sizes. If Moskit stores attachments as URLs rather than binaries, we migrate the URL as a custom text field on the parent record.
Moskit
Deal Product Line Item
Salesforce Sales Cloud
OpportunityLineItem
1:1Moskit Deals may include line-item product data. We map this to Salesforce OpportunityLineItem by resolving the Product2 reference and Pricebook2 entry at migration time. Quantity, unit price, and total amount migrate directly to the corresponding OpportunityLineItem fields.
Moskit
Tags / Labels
Salesforce Sales Cloud
Multi-Select Picklist
lossyMoskit tags and labels stored as multi-checkbox properties migrate to Salesforce multi-select picklist fields on the appropriate object. Tags used for segmentation migrate as-is; the customer chooses whether to convert tags to Salesforce Topics during scoping.
| Moskit | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company (Empresa) | Account1:1 | Fully supported | |
| Deal (Negócio) | Opportunity1:1 | Fully supported | |
| Activity (Atividade) | Task and Event1:many | Fully supported | |
| Project (Projeto) | Custom Object (Projeto__c)1:1 | Fully supported | |
| Custom Properties | Custom Fieldslossy | Mapping required | |
| User (Usuário) | User1:1 | Fully supported | |
| Pipeline Stages | Opportunity Stagelossy | Mapping required | |
| WhatsApp Conversation Metadata | Task (custom subtype)lossy | Fully supported | |
| Attachment / Document | ContentDocument / ContentVersion1:1 | Fully supported | |
| Deal Product Line Item | OpportunityLineItem1:1 | Fully supported | |
| Tags / Labels | Multi-Select Picklistlossy | 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
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and Moskit API access
We generate an API key from Moskit's Marketplace module using bearer-token authentication and validate access by running a lightweight query against each object type (Contact, Empresa, Negocio, Atividade, Projeto, Usuario). We audit custom field definitions per object, pipeline stage count, deal-to-project relationship volume, activity type distribution (task, call, meeting, note), and WhatsApp conversation metadata presence. We produce a written migration scope document that includes record counts per object, a preliminary field mapping, and a deal-to-project linkage count that drives the two-pass sequencing decision.
Schema design in Salesforce Sandbox
We design the destination schema in a Salesforce Full Copy or Partial Copy Sandbox. This includes provisioning custom objects (Projeto__c and any additional Moskit custom objects), custom fields (mapped from Moskit custom properties with type matching), Opportunity Record Types and Sales Processes for each Moskit pipeline, and Portuguese-to-English field-label aliases. Schema is deployed via Salesforce metadata API or change set. We coordinate with the customer's Salesforce admin to grant the migration user the Bulk API and REST API permissions required for data load.
Sandbox migration and reconciliation
We run a full migration into the Salesforce Sandbox using production-like data volume from Moskit. The customer's RevOps lead reconciles record counts (Contacts in, Accounts in, Opportunities in, Activities in, Projects in), spot-checks 25-50 random records against the Moskit source, and verifies the deal-to-project linkage integrity (every Projeto record must have a resolved linked_deal__c pointing to a valid Opportunity). The customer signs off on schema and mapping before production migration begins.
User provisioning and owner reconciliation
We extract every distinct Moskit User referenced on Deal, Activity, and Project records and match by email against the Salesforce destination org's User table. Any Moskit owner without a matching Salesforce User goes to a reconciliation queue. The customer's Salesforce admin provisions missing Users (active or inactive depending on whether the original Moskit user is still active) before production migration begins. OwnerId references are required on most standard objects so this step gates all subsequent imports.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Moskit Empresas), Contacts (with AccountId resolved), Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Products and Pricebook entries (if deal line items are present), OpportunityLineItems, Activities via Bulk API (Tasks, Events, Notes split from the unified Atividade object), then Custom Objects including Projeto__c in the second pass with remapped deal references. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation handoff
We freeze writes to Moskit during the cutover window, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver a written inventory of Moskit automations (workflow rules, if any) with recommended Salesforce Flow equivalents for the customer's admin to rebuild. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not rebuild automations as Salesforce Flow inside the migration scope; that is a separate engagement.
Platform deep dives
Moskit
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Salesforce Sales Cloud.
Object compatibility
1 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 Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Moskit to Salesforce Sales Cloud 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 Salesforce Sales Cloud
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.