CRM migration

Migrate from Monica CRM to Salesforce Sales Cloud

Field-level mapping, validation, and rollback between Monica CRM and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.

Monica CRM logo

Monica CRM

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

79%

11 of 14

objects map 1:1 between Monica CRM and Salesforce Sales Cloud.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Monica CRM to Salesforce is a migration from a personal relationship manager into a full enterprise CRM. Monica's data model is flat and contact-centric — it has no Accounts, no Opportunities, and no native pipeline — while Salesforce separates Contacts (attached to Accounts) from Leads, uses Opportunities to track deals, and supports custom objects from Professional tier. We resolve the schema gap by mapping Monica Contacts to Salesforce Contacts attached to auto-generated Account records (with the option to split to Lead for unqualified records), converting Journal entries to Activity Tasks, Reminders to dated Tasks with follow-up scheduling, and Gifts and Debts to custom Salesforce objects provisioned before import. The absence of a bulk export endpoint in Monica means we paginate across multiple REST endpoints in dependency order, with 60-request-per-minute throttling for self-hosted deployments. Private notes carry over as shared Notes records and we flag this distinction during scoping so the customer can exclude them if required. Workflows, Reminders configured as Monica Automations, and any self-hosted CardDAV scripts do not migrate; we deliver a written inventory for the customer's admin to rebuild in Salesforce Flow.

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

Monica CRM logo

Monica CRM

What's pushing teams away

  • No native integrations with popular tools — users want built-in sync with calendars, email clients, and other systems out of the box.
  • Side project status raises long-term viability concerns — community discussions note the project could sunset with no commercial backup.
  • Self-hosted rate limits are hardcoded — automated syncs can fail silently when CardDAV scripts hit the 60 requests-per-minute ceiling.
  • Missing features compared to business CRMs — no pipelines, no team collaboration tools, no advanced reporting for professional use cases.
  • Open-source forks create fragmentation — Monica-Next and Chandler operate independently, making it unclear which branch receives future development.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How Monica CRM objects map to Salesforce Sales Cloud

Each row shows how a Monica CRM 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.

Monica CRM

Contact

maps to

Salesforce Sales Cloud

Contact (attached to auto-generated Account)

1:1
Fully supported

Monica Contacts map directly to Salesforce Contact. Because Monica has no Account object, we auto-generate a Salesforce Account for each Monica Contact during import, using the Contact's first and last name as the Account name. The AccountId lookup is resolved at migration time before Contact insert. If the customer prefers Monica Contacts representing unqualified prospects to land as Salesforce Leads instead, we apply a Lead-Contact split rule based on a Monica tag or relationship type flag during scoping.

Monica CRM

Contact Details (emails, phones, social profiles)

maps to

Salesforce Sales Cloud

Contact Email, Phone, MobilePhone, and custom social fields

1:1
Fully supported

Each Monica contact avenue (email, phone, WhatsApp, Twitter, LinkedIn, etc.) with its label normalizes into a Salesforce Contact field or custom field. Primary email maps to Email, primary phone to Phone, and additional avenues map to labeled custom fields. The channel type label is preserved as a suffix in the custom field name for clarity.

Monica CRM

Relationship (spouse, child, parent, friend, colleague, pet)

maps to

Salesforce Sales Cloud

Custom Contact_Relationship__c object or custom Contact fields

lossy
Fully supported

Monica stores named relationship types per Contact with related Contact references. Salesforce has no native relationship object, so we provision a Contact_Relationship__c custom object during migration with Contact_a__c (lookup to Contact), Relationship_Type__c (picklist: spouse, child, parent, friend, colleague, pet), and Related_Contact__c (lookup to related Contact). Pet relationships map to a Pet__c custom object attached to Contact if the customer maintains pet data as a distinct entity.

Monica CRM

Relationship: Significant Other / Spouse

maps to

Salesforce Sales Cloud

Contact Spouse field or custom relationship record

1:1
Fully supported

Monica's significant other relationship is the highest-priority relationship type. We map it to a custom Spouse__c field on Contact or a Contact_Relationship__c record with Relationship_Type__c = 'Spouse'. The related Contact reference is resolved via Monica's partner relationship during export before insert.

Monica CRM

Relationship: Children

maps to

Salesforce Sales Cloud

Contact_Child__c relationship records

1:many
Fully supported

Monica supports multiple child entries per Contact. Each child record maps to a Contact_Relationship__c record with Relationship_Type__c = 'Child', storing child name, birthdate (if provided), and an optional related Contact record. If the child also exists as a separate Monica Contact, the related Contact reference is resolved via lookup.

Monica CRM

Journal Entry

maps to

Salesforce Sales Cloud

Task

1:1
Fully supported

Monica Journal entries are timestamped free-text activity logs with optional titles. We convert them to Salesforce Task records with Subject set to the Journal title (or 'Journal Entry' as default), Description set to the Journal body, and ActivityDate set to the original Monica creation timestamp. The WhoId points to the migrated Contact. Journal entries preserve the original author where Monica's API exposes it.

Monica CRM

Reminder (birthday, event, ad-hoc follow-up)

maps to

Salesforce Sales Cloud

Task

1:1
Fully supported

Monica Reminders include auto-populated birthday reminders, event reminders, and ad-hoc follow-ups tied to Contacts. We convert them to Salesforce Task records with the original reminder date as ActivityDate, IsRecurrence = true for birthday reminders, and Status = 'Not Started' for pending items. Completed reminders set Status = 'Completed' and preserve the completion date. Ad-hoc follow-ups map with Priority = 'Normal' and the reminder body as Subject.

Monica CRM

Gift (given, wanted, offered)

maps to

Salesforce Sales Cloud

Gift__c custom object

1:1
Fully supported

Monica Gift records with value, date, and status (given, wanted, offered) map to a Salesforce Gift__c custom object provisioned on the destination org before migration. Fields include Gift_Name__c (text), Value__c (currency), Date__c (date), Status__c (picklist: Given, Wanted, Offered), and Contact__c (lookup to Contact). The customer chooses whether to provision Gift__c as a custom object or map to a custom Notes-with-label structure during scoping.

Monica CRM

Debt (owed to, owed by)

maps to

Salesforce Sales Cloud

Debt__c custom object

1:1
Fully supported

Monica Debt records with amount, currency, and direction (owed to or owed by a contact) map to a Salesforce Debt__c custom object provisioned before migration. Fields include Amount__c (currency), Currency__c (text), Direction__c (picklist: Owed_To, Owed_By), Contact__c (lookup to Contact), and Notes__c (text). If the customer's Salesforce edition does not support custom objects, debts map as labeled Notes records instead.

Monica CRM

Tag

maps to

Salesforce Sales Cloud

Multi-select picklist or Topic

lossy
Fully supported

Monica tags are arbitrary string labels per Contact. We map them to a Salesforce multi-select picklist field on Contact (up to 255 characters total) or to Salesforce Topics with TopicAssignment records if the customer prefers a taxonomy approach. The customer chooses tag strategy during scoping.

Monica CRM

Stay-in-Touch tracking

maps to

Salesforce Sales Cloud

LastActivityDate and Task

1:1
Fully supported

Monica tracks when the user last contacted someone and prompts follow-ups based on a configurable frequency. We convert the last contact date to LastActivityDate on the Salesforce Contact record and create a pending Task with the next recommended follow-up date based on Monica's stay-in-touch frequency setting. The stay-in-touch frequency value migrates as a custom field stay_in_touch_frequency__c on Contact.

Monica CRM

Private Note

maps to

Salesforce Sales Cloud

Note

1:1
Fully supported

Monica private notes per Contact map to Salesforce Note records attached via ContentDocumentLink to the parent Contact. Monica's privacy flag (visible only to the owner) does not have a Salesforce equivalent in standard orgs. We flag this distinction during scoping: the customer chooses whether to migrate private notes as shared Notes (recommended for team visibility), migrate them as internal-only custom fields, or exclude them from migration entirely. Private notes are not masked or encrypted during migration.

Monica CRM

User / Owner

maps to

Salesforce Sales Cloud

User

1:1
Fully supported

Monica self-hosted single-user setups have no multi-user concept. Cloud-hosted Monica supports multiple users with role assignment per Contact (owner). We map Monica owner references to Salesforce User records by email match. Self-hosted Monica exports without owner data map to the admin User on the destination Salesforce org. Owner reconciliation happens before record import so that OwnerId references are satisfied on insert.

Monica CRM

Contact Avatar URL

maps to

Salesforce Sales Cloud

Contact PhotoUrl or custom photo field

1:1
Fully supported

Monica stores an avatar blob URL per Contact. We map the URL to a custom Photo_Url__c field on Contact. Salesforce does not natively host external avatar images on the Contact object, so the photo URL is stored as a reference. If the customer's org uses Salesforce Files, we can attach the downloaded avatar as a ContentDocument linked to the Contact as an alternative.

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.

Monica CRM logo

Monica CRM gotchas

High

No v4 to v5 migration path exists

Medium

Self-hosted rate limits are hardcoded

Medium

Side project sustainability risk

Medium

No official bulk export or backup endpoint

Low

Privacy note fields do not enforce access control in most destinations

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • Monica v4 to v5 schema differences have no official migration path

    The Monica repository maintainers have stated they do not plan to build a v4-to-v5 importer. Customers running Monica v4 have no official upgrade route and the schema differs in field names and object availability between versions. We inventory the schema differences between v4 and v5 during scoping by querying both endpoint sets against the live installation, then map v4 Contacts, Journal entries, and Reminders to v5-compatible field names before loading into Salesforce. If v4 Gifts and Debts use different API fields than v5, we apply field-level transformation during the extract phase.

  • No bulk export endpoint requires iterative API pagination across all object types

    Monica does not provide a documented bulk dump or full-account export endpoint. All migration work requires sequential API calls with pagination tokens across multiple object types — Contacts, Relationships, Journal, Reminders, Gifts, Debts, and Contact Details. We sequence the export in dependency order: Contacts first, then related records with ContactID references, then Journal entries. We cross-validate record counts against the Monica UI before each phase and pause if the API returns an inconsistent page token, which can happen on self-hosted deployments with limited PHP memory.

  • Hardcoded self-hosted rate limits require request throttling tuned to 60 req/min

    The self-hosted Monica API has hardcoded rate limits in RouteServiceProvider.php at 60 requests per minute for CardDAV endpoints. Automated migration scripts that fire requests at normal API speed will hit this ceiling, receive 429 responses, and fail silently if not handled. We implement exponential backoff starting at 1,000ms with a 1.5x multiplier and a hard ceiling of 60,000ms per endpoint, pausing and retrying rather than losing records. Cloud-hosted Monica applies different rate limits per tier; we detect and adapt during scoping.

  • Monica private notes become shared Notes records in Salesforce

    Monica allows private notes per contact that are visible only to the account owner. Salesforce has no per-record privacy flag for Notes in standard editions. Migrated private notes land as shared Note records accessible to any user with read access to the Contact. We flag this distinction during scoping: the customer chooses whether private notes migrate as Notes, as a custom Internal_Note__c field with read access scoped to specific profiles, or are excluded from migration entirely. No field-level encryption is applied unless the destination org has Salesforce Shield Platform Encryption enabled.

  • Monica relationship types require custom object provisioning before contact import

    Monica's named relationship types (spouse, child, parent, friend, colleague, pet) have no direct Salesforce equivalent. The destination Salesforce org must have the Contact_Relationship__c custom object and fields provisioned before relationship records are inserted. If the customer skips custom object provisioning during scoping, we map relationships to unstructured text fields on Contact, which limits filtering and reporting. Custom object provisioning requires a Salesforce admin or deployable metadata package; we coordinate with the customer's admin during the schema design phase.

Migration approach

Six steps for a successful Monica CRM to Salesforce Sales Cloud data migration

  1. Scoping, version detection, and Salesforce edition assessment

    We audit the source Monica installation via API across all object types, detect the Monica version (v4 or v5) and deployment type (self-hosted or cloud-hosted with tier), and inventory record volumes for Contacts, Relationships, Journal entries, Reminders, Gifts, Debts, and Tags. We pair this with a Salesforce edition assessment: Professional ($75/user) covers migrations with standard Contact, Task, and Event objects; custom objects for Gifts and Debts require Professional with custom object entitlement. We confirm custom object limits per edition during scoping. The discovery output is a written migration scope with source record counts, destination schema plan, and a custom object provisioning checklist.

  2. Schema design and custom object provisioning

    We design the destination Salesforce schema to receive Monica data. This includes provisioning the Gift__c and Debt__c custom objects with all required fields and picklists, the Contact_Relationship__c custom object with Relationship_Type__c picklist values matching Monica's supported relationship types, and any custom fields for stay-in-touch frequency, private note migration strategy, and original Monica IDs for audit. Schema is deployed into a Salesforce Sandbox first for validation. We coordinate with the customer's Salesforce admin to grant the migration user field-level access to all target objects and Customization licenses for custom object creation.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using production-equivalent data volumes. The customer reconciles record counts against Monica's UI, spot-checks 25-50 random Contacts with relationships, Journal entries, and Reminders against the source, and validates that Gift and Debt custom object records display correctly in Salesforce. Any field mapping corrections, picklist value mismatches, or relationship resolution failures are documented and corrected before production migration begins.

  4. Owner reconciliation and User provisioning

    We extract all Monica owner references and match by email against the Salesforce destination org's User table. For self-hosted Monica single-user deployments, there is no owner data to reconcile; we assign migrated records to the customer's Salesforce admin User. For multi-user cloud Monica, owners without a matching Salesforce User go to a reconciliation queue for the customer's admin to provision before record import resumes. Owner resolution is required for all Tasks and Events before insertion.

  5. Production migration in dependency order

    We run production migration in record-dependency order: custom objects (Gift__c and Debt__c) first so they are available for lookup resolution, then Accounts (auto-generated from Monica Contacts), then Contacts with AccountId resolved, then Contact_Relationship__c records with both Contact lookups resolved, then Journal entries as Tasks, then Reminders as Tasks, then Notes, then Tags. Each phase emits a row-count reconciliation report. For self-hosted Monica, we enforce 60-request-per-minute throttling with exponential backoff across all API calls. Salesforce loads use Bulk API 2.0 for Tasks with batches of 10,000 records and REST API for custom object inserts.

  6. Cutover, validation, and custom object handoff

    We freeze Monica write access during cutover (typically a weekend 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 Monica Reminder Automations (if any were configured), Stay-in-Touch settings, and Gift/Debt workflows for the customer's admin to rebuild in Salesforce Flow. We support a one-week hypercare window where we resolve any record count discrepancies or mapping issues reported by the customer's team.

Platform deep dives

Context on both ends of the pair

Monica CRM logo

Monica CRM

Source

Strengths

  • Open-source and self-hostable at no cost with an official Docker image.
  • REST API exposes all major objects for programmatic read and write operations.
  • Intuitive UI designed specifically for personal relationship tracking, not sales pipelines.
  • Community-driven development with transparent public roadmap on GitHub.
  • Chrome extension provides AI-assisted recall during web browsing.

Weaknesses

  • Side project with no commercial backing or guaranteed long-term support.
  • No documented v4-to-v5 migration path, leaving data stranded on older versions.
  • Self-hosted deployments have hardcoded rate limits not configurable without code changes.
  • Lacks native integrations with calendars, email clients, or other productivity tools.
  • No advanced reporting, team collaboration, or pipeline management features.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

Complexity grading

How hard is this migration?

Moderate CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Monica CRM and Salesforce Sales Cloud.

  • Object compatibility

    B

    1 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

    C

    Monica CRM: Documented via response headers (X-RateLimit-Limit and X-RateLimit-Remaining). Self-hosted instances also have hardcoded throttles in RouteServiceProvider.php (60 req/min for CardDAV) noted in existing gotchas..

  • Data volume sensitivity

    B

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

Estimator

Estimate your Monica CRM to Salesforce Sales Cloud 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 Monica CRM to Salesforce Sales Cloud data migrations

Answers to the questions buyers ask most during Monica CRM to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Monica CRM to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 5,000 Monica Contacts with a standard object set and no custom object provisioning complexity. Migrations with Gifts and Debts mapped to custom Salesforce objects, large Journal histories (over 50,000 entries), self-hosted rate-limit handling for multi-record exports, or multi-user owner reconciliation move to six to ten weeks because of custom object schema deployment and iterative API pagination across all Monica object types.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Monica CRM.
Land in Salesforce Sales Cloud, 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