CRM migration
Field-level mapping, validation, and rollback between Fat Free CRM and Pipedrive. We move data and schema; workflows are rebuilt natively in Pipedrive.
Fat Free CRM
Source
Pipedrive
Destination
Compatibility
7 of 12
objects map 1:1 between Fat Free CRM and Pipedrive.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Fat Free CRM to Pipedrive replaces a self-hosted open-source platform with no API with a modern SaaS CRM whose REST API handles all downstream inserts cleanly. The structural challenge is that Fat Free CRM has no REST or GraphQL endpoint, so all extraction happens through direct database queries against its relational schema. We run a schema discovery phase against the live database, capture any plugin-extended columns, preserve link-table relationships (opportunity_contacts, contact_accounts, taggables), and resolve Organization IDs for every Contact before Deal association. Pipedrive's per-seat pricing (starting at 14 euros per user per month on the Lite plan) replaces the zero licensing cost of Fat Free CRM, but removes the operational burden of server maintenance, security patching, and self-managed Rails upgrades. We do not migrate workflows, automations, campaign logic, or attachment binaries; we deliver a written inventory of each so your admin rebuilds them in Pipedrive's automation builder post-migration.
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 Fat Free CRM object lands in Pipedrive, 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
Pipedrive
Organization
1:1Fat Free CRM accounts (name, website, phone, billing address, assigned user) map directly to Pipedrive Organizations. The account name becomes the Organization name and serves as the dedupe key during import. We resolve the assigned user against the Pipedrive user roster by email. Organizations are inserted before People to satisfy the Organization-People lookup that Pipedrive enforces when linking People to Organizations.
Fat Free CRM
Contact
Pipedrive
Person
1:1Fat Free CRM contacts (name, email, phone, title, link to Account) map to Pipedrive People. The contact_accounts join table resolves which Organization each Person belongs to; we set the org_id field on the Person record during insert. The contact's assigned user maps by email to a Pipedrive User. If a Contact has no associated Account in the source, we import it as an unlinked Person — orphaned from an Organization perspective but not dropped.
Fat Free CRM
Lead
Pipedrive
Lead
1:1Fat Free CRM Leads (with status, source, rating, assigned user) map to Pipedrive Leads. Pipedrive's Lead object is distinct from its Person object and supports a separate Lead status field. We preserve the Fat Free CRM lead status as the Pipedrive Lead status value, the source as a custom field, and the rating as a custom field or label. Leads do not automatically convert to People during migration; the customer's sales team reviews and converts them manually post-migration.
Fat Free CRM
Opportunity
Pipedrive
Deal
1:1Fat Free CRM Opportunities (stage, amount, probability, close date, link to Contact) map to Pipedrive Deals. The opportunity stage maps to a Pipedrive pipeline stage that we configure before migration. Pipedrive requires a Deal to link to a Person, an Organization, or both; we use the opportunity's linked Contact to resolve the Person reference, then derive the Organization ID from the Contact-Account relationship. If no Contact is linked to the Opportunity, the Deal is inserted as an unlinked Deal pending manual association.
Fat Free CRM
Pipeline stage
Pipedrive
Pipeline stage
lossyFat Free CRM's single pipeline stages map to a Pipedrive pipeline we create during migration. Each stage name and probability percentage from the source become a Pipedrive stage entry. If the customer uses multiple deal pipelines via a custom plugin, we create multiple Pipedrive pipelines with corresponding stage sets. Stage order and probability values are preserved as configured.
Fat Free CRM
Task
Pipedrive
Activity (type: task)
1:1Fat Free CRM Tasks (title, body, due date, category, completion status, assigned user) map to Pipedrive Activities with type = task. Due dates and assignees migrate; open tasks insert with status open and completed tasks with status completed. The activity date is set to the original task due date or completion date. Tasks linked to Opportunities or Contacts in Fat Free CRM carry their parent reference in the Pipedrive Activity's related_object and related_object_id fields.
Fat Free CRM
Note
Pipedrive
Activity (type: note)
1:1Fat Free CRM notes attached to Contacts, Accounts, or Opportunities map to Pipedrive Activities with type = note. The note body migrates as the activity subject or body field. Parent record associations (contact_id, account_id, opportunity_id) map to Pipedrive's related_object and related_object_id structure. Notes without a parent record are inserted as standalone notes.
Fat Free CRM
Campaign
Pipedrive
Custom Fields or Labels
lossyFat Free CRM Campaigns (name, status, budget, target metrics) have no direct Pipedrive equivalent. We import Campaign records as a custom field set on the Contact or as a Label in Pipedrive, depending on whether the customer needs to query by campaign membership. Campaign-contact associations (from the subscriptions or tag tables) migrate as Labels on the linked Person. The campaign metrics (budget, target) are stored in a migration reference table for the admin to review.
Fat Free CRM
User
Pipedrive
User (lookup)
1:1Fat Free CRM internal user IDs have no meaning in Pipedrive. We export the full user roster (id, email, first_name, last_name, role) as a reference table. Pipedrive user accounts are created by the customer in advance of migration. We resolve each Fat Free CRM owner_id by matching the user email to the provisioned Pipedrive user and store the Pipedrive user_id for use as the owner reference on all migrated records.
Fat Free CRM
Group
Pipedrive
Team (visibility group)
lossyFat Free CRM Groups function as organisational access-control units. Pipedrive's visibility groups (Restricted, Shared, Entire company) serve a similar purpose at a simpler level. We map group membership to Pipedrive Teams, which control record visibility per user. If a group structure is complex (nested groups, partial overlaps), we document the mapping and the customer configures Pipedrive visibility groups post-migration.
Fat Free CRM
Custom Fields
Pipedrive
Custom Fields
lossyFat Free CRM custom fields on Accounts, Contacts, Leads, and Opportunities may exist as serialized columns or plugin-added schema columns. We extract all custom field definitions and values during schema discovery. In Pipedrive, custom fields are key-value pairs created via the API (field type, label, key). We create matching Pipedrive custom fields before migration, then map values by matching the field key. Custom field keys in Pipedrive are alphanumeric hashes assigned at creation time; we preserve the original Fat Free CRM field name in the Pipedrive field label for discoverability.
Fat Free CRM
Tag
Pipedrive
Label
lossyFat Free CRM uses a global tagging system (acts_as_taggable) applied across Contacts, Accounts, Opportunities, and Leads. Pipedrive Labels serve a similar tagging function. We extract the full tag set per record from the taggings and tags tables, then apply labels to the corresponding Pipedrive Person, Organization, or Deal. Label names are preserved exactly. If a tag is used across multiple object types in the source, we apply the same label in Pipedrive to each record regardless of type.
| Fat Free CRM | Pipedrive | Compatibility | |
|---|---|---|---|
| Account | Organization1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Pipeline stage | Pipeline stagelossy | Fully supported | |
| Task | Activity (type: task)1:1 | Fully supported | |
| Note | Activity (type: note)1:1 | Fully supported | |
| Campaign | Custom Fields or Labelslossy | Fully supported | |
| User | User (lookup)1:1 | Fully supported | |
| Group | Team (visibility group)lossy | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Tag | Labellossy | 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.
Fat Free CRM gotchas
No public REST API forces direct database extraction
Plugin-extended schema may alter core tables
Attachment files live on the host filesystem
Users and groups must be manually remapped in the destination
Pipedrive gotchas
Custom field hash keys differ per account
Export access gated by visibility groups
Token-based API rate limits since December 2024
Sequences and Automations not exposed via REST API
Cost escalates via workflow caps and add-ons
Pair-specific challenges
Migration approach
Database connection and schema discovery
We connect read-only to the Fat Free CRM database (MySQL, PostgreSQL, or SQLite) using customer-provided credentials. We run a full schema discovery query across all tables including any plugin-extended tables. We enumerate the object inventory (accounts, contacts, leads, opportunities, tasks, campaigns, tags, users, groups, custom fields) and capture column types, join relationships, and any serialized or JSON columns that store extended field data. The discovery output is a written migration specification reviewed by the customer before extraction begins.
Pipedrive account provisioning and API setup
The customer provisions a Pipedrive account and provides an API token. We create all required Pipedrive objects before migration: a Pipeline with stages matching the source deal stages and probabilities, custom fields (with their API keys returned from Pipedrive after creation) for any source custom fields and campaign metrics, and Teams mapped from the source group structure. We configure the pipeline in the Pipedrive dashboard or via API before any records are inserted.
Data extraction from database
We extract data from each source table in dependency order: accounts, contacts (with organization resolution), leads, opportunities (with contact and account resolution from join tables), tasks and notes (with parent record references), and tags (taggables and tags tables). We clean data during extraction: deduplicate records on email address for People, remove records with null required fields, and format dates to ISO 8601. The extraction outputs a set of staged JSON files per object, each including the Pipedrive-compatible field mapping.
Data load via Pipedrive API
We push records into Pipedrive in strict dependency order: Organizations first, then People (with org_id resolved), then Leads, then Deals (with person_id and org_id resolved), then Activities (tasks, notes, meetings, calls), and finally Labels applied to the relevant records. We use the Pipedrive REST API with rate-limit handling and exponential backoff. Each phase emits a reconciliation report showing rows inserted, updated, and skipped so the customer can spot-check before the next phase begins.
Validation and reconciliation
We run a reconciliation pass comparing Pipedrive record counts against the source database counts for each object type. We spot-check 20-30 records per object at random against the source database for field-level accuracy (name spelling, email, phone, deal amount, stage, assigned user). We verify that Deals are linked to their correct Person and Organization, and that Tags appear on the expected records. We deliver a written reconciliation report to the customer before cutover.
Cutover and admin handoff
We freeze write access to the Fat Free CRM database during cutover and run a final delta migration to capture any records created or modified since the initial extraction. We deliver a migration completion report, the attachment file inventory, the user and group roster mapping, and the Pipedrive API key for the customer to rotate post-migration. We do not rebuild Fat Free CRM workflows, automations, or campaign logic in Pipedrive; we deliver a written inventory of each with the recommended Pipedrive automation approach for the customer's admin to implement as a separate task.
Platform deep dives
Fat Free CRM
Source
Strengths
Weaknesses
Pipedrive
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Fat Free CRM and Pipedrive.
Object compatibility
3 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
Fat Free CRM: Not applicable — self-hosted database has no API rate limiting.
Data volume sensitivity
Fat Free CRM 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 Fat Free CRM to Pipedrive migration scoping. Not seeing yours? Book a call.
Walk through your Fat Free CRM to Pipedrive migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Fat Free CRM
Other ways to arrive at Pipedrive
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.