CRM migration

Migrate from Fat Free CRM to Freshsales

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

Fat Free CRM logo

Fat Free CRM

Source

Freshsales

Destination

Freshsales logo

Compatibility

70%

7 of 10

objects map 1:1 between Fat Free CRM and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Fat Free CRM has no public REST API, which is the defining constraint of this migration pair. We connect directly to the underlying MySQL or PostgreSQL database using read-only credentials provided by the customer, enumerate the full relational schema including any plugin-extended columns, then map the extracted records into Freshsales through its REST API with batch chunking and exponential backoff. The migration preserves link tables for contact-account associations, opportunity-contact relationships, and campaign tag memberships. User and group IDs from Fat Free CRM have no meaning in Freshsales, so we extract the full user roster as a reference table and map ownership by email match, requiring the customer to provision Freshsales user accounts before record import. Workflows, automations, and campaign configurations do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Freshsales Workflow Rules.

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

Fat Free CRM logo

Fat Free CRM

What's pushing teams away

  • The user interface feels dated compared to modern SaaS CRMs, and G2 reviewers consistently rate the UX as needing significant improvement.
  • Community development has slowed — Bitrix24's comparison page explicitly notes it is unclear whether Fat Free CRM is still actively maintained, raising long-term support concerns.
  • No native public API means third-party integrations require direct database access or custom Rails code, complicating connections to email, calendars, or other tools.
  • Lacks the reporting depth, automation builder, and sales intelligence features that teams outgrow as they scale beyond basic contact and opportunity tracking.
  • Hosting, maintenance, security patching, and upgrades fall entirely on the customer, creating hidden operational overhead that grows over time.

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 Fat Free CRM objects map to Freshsales

Each row shows how a Fat Free 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.

Fat Free CRM

Account

maps to

Freshsales

Account

1:1
Fully supported

Fat Free CRM accounts table stores name, website, phone, billing address, and assigned user ID. We extract these fields and map them directly to Freshsales Account fields. The account's assigned user_id resolves to a Freshsales User by email lookup once the customer has provisioned Freshsales user accounts. Multi-address or multi-contact relationships encoded in join tables are preserved as Freshsales Contact-to-Account links. Standard tier and edition constraints do not apply to Account object ingestion — all Freshsales tiers support Accounts.

Fat Free CRM

Contact

maps to

Freshsales

Contact

1:1
Fully supported

Fat Free CRM contacts store name, email, phone, title, and a foreign key to the parent account. The contact_accounts join table preserves the many-to-one relationship. We map contacts to Freshsales Contacts with the AccountId lookup resolved at import time. Duplicate contacts (same email) are flagged in a pre-import report for the customer to resolve before record insertion.

Fat Free CRM

Lead

maps to

Freshsales

Lead

1:1
Fully supported

Fat Free CRM leads are a distinct pre-conversion object with status, source, rating, and assigned user fields. We map Leads directly to Freshsales Leads, preserving lead status, source attribution, and rating. Any tag memberships on leads migrate as Freshsales tag assignments. The customer decides whether to keep leads as Leads or convert them to Contacts during the scoping phase.

Fat Free CRM

Opportunity

maps to

Freshsales

Deal

1:1
Fully supported

Fat Free CRM opportunities store deal name, stage, amount, probability, close date, and links to a contact and account. We map these to Freshsales Deals with the pipeline stage mapped to a Freshsales pipeline stage value, and the amount and probability preserved as numeric fields. The opportunity_contact join table is preserved as a Freshsales Deal Contact association. Deal ownership maps via the email-based user lookup.

Fat Free CRM

Task

maps to

Freshsales

Task

1:1
Fully supported

Fat Free CRM tasks include title, body, due date, category, completion status, assigned user, and optional links to opportunity or contact. We map open and completed tasks to Freshsales Tasks, preserving title, description, due date, status, and category. Task assignment resolves through the email-based owner mapping. Tasks linked to Opportunities or Contacts retain those associations in Freshsales via the WhatId and ContactId fields.

Fat Free CRM

Campaign

maps to

Freshsales

Campaign

1:1
Fully supported

Fat Free CRM campaigns store name, status, budget, and target metrics. Contact-campaign membership is stored in the tag and subscription tables. We import campaign records and rebuild contact-campaign associations by enumerating the tag memberships linked to each campaign. Note that Freshsales Campaign metrics (budget tracking, target versus actual) are basic compared to dedicated marketing platforms; we document the metrics available in Freshsales and flag any campaign data that has no destination field for the customer to acknowledge.

Fat Free CRM

Tag

maps to

Freshsales

Tag

lossy
Fully supported

Fat Free CRM uses a global ActsAsTaggable system storing tags as string tokens in a separate table. Tags are attached to Contacts, Accounts, Opportunities, and Leads via join tables. We extract the full tag set per record and map to Freshsales Tags. Freshsales stores tags as a separate Tag object linked to records via tag assignments. Because multiple tags can exist per record, we create tag records first, then insert tag assignments in a second pass.

Fat Free CRM

Custom Field

maps to

Freshsales

Custom Field

lossy
Fully supported

Fat Free CRM supports custom fields on Accounts, Contacts, Leads, and Opportunities via a serialized field or extension table. We extract custom field definitions and their stored values during schema discovery. Custom fields map to Freshsales custom fields on the corresponding object. Plugin-extended columns (added by third-party Fat Free CRM plugins) may not have documented types; we infer field type from the column schema and flag any ambiguous types for the customer to confirm before destination field creation.

Fat Free CRM

User

maps to

Freshsales

User

1:1
Fully supported

Fat Free CRM stores internal user accounts with role, team, and login credentials. These IDs have no persistence in Freshsales because Freshsales maintains its own user directory. We export the full user roster as a reference table including email, name, and role. Freshsales user accounts must be created by the customer before migration begins. Ownership mapping resolves by matching the Fat Free CRM user email to the Freshsales user email at record import time.

Fat Free CRM

Group

maps to

Freshsales

Team

lossy
Fully supported

Fat Free CRM groups serve as organisational units for access control and data sharing. The group concept does not map directly to any Freshsales object, but group membership can be preserved as tags on user records or noted in a supplementary access matrix delivered alongside the migration. We extract group membership as a separate table and document it as a reference for the customer to implement via Freshsales role and territory configuration post-migration.

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.

Fat Free CRM logo

Fat Free CRM gotchas

High

No public REST API forces direct database extraction

Medium

Plugin-extended schema may alter core tables

Medium

Attachment files live on the host filesystem

Low

Users and groups must be manually remapped in the destination

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

  • No public API forces direct database extraction

    Fat Free CRM exposes no REST or GraphQL API. All data extraction runs against the underlying MySQL, PostgreSQL, or SQLite database using read-only credentials the customer provides. We run a schema discovery pass against the live database before extraction to capture the full table structure, column names, and data types. Any custom plugins that add columns to core tables must be disclosed before this phase; undiscovered plugin columns will surface as missing fields after migration and require a supplementary pass. The customer must be comfortable granting database read access for the extraction period.

  • Plugin-extended schema may alter core tables

    Fat Free CRM's plugin architecture can add columns to standard tables such as accounts, contacts, opportunities, and tasks, or create entirely new tables. The base schema we use for extraction reflects core Rails models; any plugin extensions are only visible during the schema discovery phase against the live database. We enumerate all discovered columns and map them to Freshsales custom fields. Undiscovered plugin columns that appear after extraction complete will require a supplementary data pass.

  • Attachment files cannot be extracted through the database

    Uploaded files in Fat Free CRM are stored on the server's local filesystem or a configured S3 bucket, not in the database. The database contains only file metadata (filename, path, associated record ID). We enumerate every attachment reference and deliver a file inventory so the customer can manually copy files to Freshsales' document storage layer post-migration. Binary attachment content does not migrate automatically through our database connection and API pipeline.

  • User ownership must be manually provisioned in Freshsales first

    Fat Free CRM internal user IDs are scoped to that installation and carry no meaning in Freshsales. We export a user roster as a reference table during scoping. Before record migration begins, the customer must create Freshsales user accounts for each active team member. Ownership assignment resolves by matching Fat Free CRM user emails to the Freshsales user emails at migration time. Inactive Fat Free CRM users are flagged as a separate group for the customer to decide whether to provision in Freshsales or reassign records to an active owner.

  • Freshsales import limits require batch processing

    Freshsales' native data import handles up to 10,000 records per batch; records exceeding this threshold are processed by Freshsales support within one to two business days. For large datasets (tens of thousands of records), we use the Freshsales REST API with batch chunking and rate-limit handling rather than the web-based import tool, which keeps the migration within our managed pipeline and avoids dependency on Freshsales support turnaround for large batches.

Migration approach

Six steps for a successful Fat Free CRM to Freshsales data migration

  1. Database access and schema discovery

    We establish a read-only connection to the customer's Fat Free CRM database (MySQL, PostgreSQL, or SQLite) using credentials the customer provides. We run a full schema enumeration that captures every table, column, data type, and join relationship, including any plugin-extended columns on core tables. We also enumerate attachment metadata (filename, path, associated record) and the full user and group roster. This phase produces a schema map that becomes the basis of the field mapping document and identifies any custom tables requiring dedicated mapping logic.

  2. Field mapping and migration specification

    We produce a written field mapping document that pairs every Fat Free CRM table and column with its Freshsales destination object and field, including transformation logic for dates, enums, foreign key lookups, and null handling. The specification covers core objects (Accounts, Contacts, Leads, Opportunities, Tasks, Campaigns), tags, custom fields, and user ownership mapping. The customer reviews and approves the mapping before any test migration begins. Any ambiguous or plugin-derived columns are flagged for confirmation at this stage.

  3. Test migration into Freshsales sandbox

    We run a representative subset of records through the full pipeline into the customer's Freshsales sandbox or a development environment. The customer validates record counts, field population, tag assignments, owner assignment, and relationship integrity. We reconcile the imported counts against the source database counts and flag any mapping discrepancies. Corrections to the field mapping or transformation logic are applied before the production migration begins.

  4. Freshsales user provisioning and owner reconciliation

    The customer provisions Freshsales user accounts for all active team members. We cross-reference the Fat Free CRM user roster against the Freshsales user list by email and produce an owner reconciliation report identifying any Fat Free CRM users without a Freshsales match. Unresolved users are assigned to a designated catch-all Freshsales user or remain unmapped pending customer action. Migration cannot proceed past owner reconciliation because record ownership references must be valid at insert time.

  5. Production migration in dependency order

    We execute production migration in the following order: Accounts (foundational for Contact lookups), Contacts (with AccountId resolved), Leads, Deals (with AccountId and OwnerId resolved), Tasks (with WhatId and ContactId resolved), tag records and tag assignments, and finally custom field values on each object. We use the Freshsales REST API with batch chunking (up to 100 records per request) and exponential backoff on rate-limit responses. Each phase emits a reconciliation report showing inserted, updated, skipped, and errored counts before the next phase begins.

  6. Cutover, validation, and automation inventory delivery

    We run a final delta pass for any records modified during the migration window, then deliver the cutover report showing total records migrated per object. We provide a written inventory of all Fat Free CRM workflows, automations, and campaign configurations that do not migrate, with recommended Freshsales Workflow Rule equivalents and rebuild steps. We do not rebuild automations inside the migration scope. Post-migration support is scoped to data reconciliation issues raised within five business days of cutover; ongoing Freshsales administration and workflow rebuild are outside standard scope.

Platform deep dives

Context on both ends of the pair

Fat Free CRM logo

Fat Free CRM

Source

Strengths

  • Zero licensing cost — fully open source under MIT license with no per-user or subscription fees.
  • Complete source code access allows deep customisation of data models, views, and business logic without vendor lock-in.
  • Lightweight Ruby on Rails stack runs on commodity hosting (VPS, Heroku) with standard relational databases.
  • Active community and plugin architecture provide extension points for webhooks, time tracking, and record merging.
  • Self-hosted model ensures full data ownership and no third-party data retention concerns.

Weaknesses

  • No native public API — integrations require direct database queries or custom Rails development, limiting third-party tool connectivity.
  • Dated user interface consistently cited in reviews as a friction point compared to modern SaaS CRM experiences.
  • Slowing development activity raises concerns about security patches, Rails compatibility updates, and long-term viability.
  • Operational burden of self-hosting (server management, backups, upgrades, security) falls entirely on the customer.
  • Limited reporting, automation, and sales intelligence features compared to commercial CRM platforms.
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 Fat Free CRM 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

    Fat Free CRM: Not applicable — self-hosted database has no API rate limiting.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Fat Free CRM 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 Fat Free CRM to Freshsales data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Fat Free CRM to Freshsales migrations typically run two to four weeks for straightforward migrations under 10,000 total records. Migrations exceeding 10,000 records or involving custom fields, large task histories, or plugin-extended database columns extend to five to nine weeks. The database-extraction and schema-discovery phases add scoping steps that do not apply to platforms with native APIs, so timelines are slightly longer than comparable Freshsales-from-API migrations of similar record volume.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Fat Free CRM.
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