CRM migration

Migrate from folk to Odoo CRM

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

folk logo

folk

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between folk and Odoo CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from folk to Odoo CRM is a structural migration that involves two fundamentally different data models. folk organizes around Groups as containers with Contacts as the primary record and per-group custom field schemas. Odoo CRM uses a pipeline-and-stage model centered on Leads and Opportunities, with module-level custom fields that apply across the entire CRM. We enumerate every Group's field schema during discovery, map each Group to Odoo Tags or CRM pipeline stages, and resolve the Contact-Company relationship using Odoo's partner model. The absence of a public bulk API in folk means we extract via CSV and import into Odoo through XML-RPC with batch chunking and validation. Workflows, email campaigns, Magic Fields, and enrichment credits do not migrate; we deliver a written inventory of these for your Odoo admin to rebuild or replace post-migration.

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

folk logo

folk

What's pushing teams away

  • Internal automation between contact and company fields requires manual field mapping — contacts and companies do not auto-link in folk, causing data duplication for teams with strong account-based motions.
  • Reporting is limited compared to Pipedrive or HubSpot — deal dashboards and pipeline analytics shipped recently but still lag behind pipeline-first CRMs on forecasting and cohort analysis.
  • Workspace-wide AI credit limits mean one heavy automator can exhaust Magic Field credits for the entire team, causing unexpected feature lockouts mid-month.
  • No public bulk API documented for programmatic export — teams with thousands of records rely on multi-step CSV extraction, which breaks for attachments and relationship graphs.
  • Some users report bugs with document attachments and slower performance when contacts exceed 5,000 records in a single group.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How folk objects map to Odoo CRM

Each row shows how a folk object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

folk

Contact (person subtype)

maps to

Odoo CRM

Contact

1:1
Fully supported

folk Contacts of person subtype map to Odoo CRM Contact records. Standard properties (name, email, phone, address) migrate directly. Custom fields migrate to Odoo custom fields on the res.partner model; we enumerate the per-group field schema during discovery and create equivalent custom fields in Odoo before import. The migration user must have write access to the CRM app and Contacts in Odoo. Odoo's partner model treats Contact as a res.partner record with is_company=False.

folk

Contact (company subtype)

maps to

Odoo CRM

Contact (is_company=True)

1:1
Fully supported

folk Contacts of company subtype map to Odoo CRM Contacts with is_company=True. This is a separate record from person-type contacts at the same organization. We preserve any manually established relationship between folk company-type contacts and their linked person-type contacts by setting the parent_id field on the person Contact to point to the company Contact in Odoo. This reconstructs folk's manual relationship field using Odoo's parent-partner structure.

folk

Group

maps to

Odoo CRM

Tag or CRM Stage

lossy
Fully supported

folk Groups function as both organizational containers and segment lists. We offer two migration strategies: (1) Tags — each Group becomes an Odoo CRM Tag and every Contact in that Group receives the Tag via crm.tag.rel. (2) Pipeline Stages — if the Groups map to deal stages, we create Odoo CRM pipeline stages from Groups rather than Tags. The customer chooses during scoping. Multi-Group contacts receive multiple Tags in Odoo.

folk

Pipeline View

maps to

Odoo CRM

CRM Pipeline Stage

lossy
Fully supported

folk pipeline views are per-Group. We map each folk Group with a pipeline view to an Odoo CRM stage within the default Odoo sales team pipeline. Stage names, sequence order, and probability percentages transfer to Odoo stage configuration. Odoo allows multiple pipelines via sales teams if the customer needs pipeline isolation.

folk

Note

maps to

Odoo CRM

Note

1:1
Fully supported

folk Notes attached to Contacts migrate to Odoo CRM internal notes as mail.message records on the res.partner thread. We preserve note body text, creation timestamp, and author attribution where author can be resolved to an Odoo User by email match. Notes that cannot be attributed are created under the admin User with a note indicating source.

folk

Reminder

maps to

Odoo CRM

Calendar Event or CRM Activity

1:1
Fully supported

folk Reminders carry a due date, assignee, and text. Due dates and text migrate to Odoo CRM as planned activities (calendar.event records with activity_type_id assigned). Assignee mapping requires resolving folk owner email to an Odoo User. Reminders without a resolvable assignee are attached to the Contact record as an unassigned CRM activity for the customer's admin to reallocate.

folk

Tag

maps to

Odoo CRM

Tag

1:1
Fully supported

folk contact tags migrate as Odoo CRM Tags using the crm.tag model. Tags are stored as string arrays in folk CSV export. We parse each array, deduplicate within the destination, and create Odoo Tags before linking them to Contact records via crm.lead.res.partner.rel. Tag name collisions are resolved by appending a numeric suffix.

folk

Attachment

maps to

Odoo CRM

Attachment

1:1
Fully supported

folk attachments linked to Contacts export as URLs or files via CSV. We attempt to download source files and re-upload them to Odoo as ir.attachment records linked to the res.partner. File size limits and supported formats follow Odoo's attachment configuration. Attachments that are file references (not downloadable URLs) are flagged for manual re-upload post-migration.

folk

Activity

maps to

Odoo CRM

Mail Activity

1:1
Fully supported

Activity history present in folk CSV export (calls logged, emails tracked, meetings scheduled) migrates to Odoo CRM as mail.activity records. Each activity type (call, email, meeting) maps to a corresponding Odoo activity_type_id. Activity date and duration preserve. Odoo's activity list on the partner form shows timeline history. We note gaps where folk CSV does not expose activity metadata beyond the contact level.

folk

Custom Field (per-group)

maps to

Odoo CRM

Custom Field (module-level)

lossy
Fully supported

folk per-group custom fields require special handling because the same field name may not exist across all Groups. We enumerate every Group's custom field schema during discovery, identify fields that appear in multiple Groups with consistent types, and create Odoo module-level custom fields (ir.model.fields with custom=True) for those. Fields that exist in only one Group are created as Odoo custom fields but may be left unmapped for contacts outside their originating Group. The customer reviews the consolidated field map before migration.

folk

AI Magic Fields

maps to

Odoo CRM

(none)

1:1
Not supported

Magic Fields are AI-generated values computed at query time from source data and the folk AI model. They are not stored as persistent records and cannot be exported. We do not migrate Magic Field values. Customers who rely on Magic Field outputs should regenerate them post-migration in Odoo using Odoo's built-in automation rules or a third-party AI enrichment tool of their choosing.

folk

Enrichment Credits

maps to

Odoo CRM

(none)

1:1
Not supported

Enrichment data is live-fetched by folk's AI engine and not persistently stored in an accessible format. The enriched field values are not available for export. We do not migrate enrichment credits or their outputs. Post-migration, customers can connect an Odoo-compatible enrichment service (Clearbit, Apollo, or FullContact) as a replacement for folk's enrichment layer.

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.

folk logo

folk gotchas

High

No public bulk API for automated migration

Medium

Per-group custom fields create schema fragmentation

Medium

Workspace-wide AI credit limits affect all seats

Low

Contact–company linking is not automatic

Low

Email campaign history not exported

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • folk has no public bulk API — CSV export is the only extraction path

    folk provides no publicly documented REST or GraphQL bulk API for programmatic record extraction. All migration work relies on multi-step CSV exports from each Group, which excludes attachment files, relationship graph data, and activity timeline history beyond the contact level. Email campaign performance data and Magic Field-generated values cannot be exported at all. We request CSV exports covering all Groups, validate field-by-field, and warn customers about data categories that will not transfer. Where Odoo supports it, we re-import via XML-RPC with field-level validation rather than Odoo's native CSV loader, which has lower throughput for complex schemas.

  • Per-group custom field schemas require full enumeration before migration

    Custom fields in folk are defined per-group, not globally. A Contact in the Leads Group may have a field that does not exist in the Clients Group. During discovery, we enumerate every Group's field schema, identify field name collisions across Groups, and build a consolidated Odoo custom field map before importing any data. Contacts that belong to multiple Groups may have conflicting field values that require conflict-resolution rules. Skipping this enumeration results in incomplete field migration or data mapped to the wrong Odoo custom field.

  • folk Groups do not map 1:1 to Odoo CRM pipelines

    folk Groups serve as both organizational containers and deal pipeline stages depending on how the workspace is configured. Odoo CRM uses a dedicated pipeline model with stages, leads, and opportunities. We ask customers to clarify during discovery whether each folk Group represents a tag (segment), a pipeline stage, or a hybrid. The mapping strategy is chosen during scoping: Groups as Odoo Tags, Groups as CRM stages, or Groups as Odoo Sales Teams with separate pipelines. Incorrect mapping at scoping produces a disorganized Odoo CRM that requires post-migration reorganization.

  • Contact-company linking is manual in folk and must be reconstructed

    folk contacts and companies do not auto-link; users establish relationships manually via a relationship field. When migrating, we preserve any manually established links but cannot infer missing links. Odoo CRM uses the res.partner parent_id field for company-person linking. We set parent_id on person-type Contacts pointing to their company-type Contact in Odoo where a folk relationship exists. Contacts without a folk relationship are migrated as standalone Contacts. Customers with strong account-based motions should review post-migration to establish any missing company links.

  • Odoo XML-RPC has lower batch throughput than bulk REST APIs

    Odoo's XML-RPC interface processes records sequentially with a lower effective throughput than REST bulk APIs used by platforms like HubSpot or Salesforce. Large migrations (over 50,000 records) require chunking and pagination logic in our migration scripts. We implement batch sizes of 50-100 records per XML-RPC call with retry logic and connection pooling to maintain throughput. Customers with very large folk databases should expect a longer migration execution window than they would see on a platform with a dedicated bulk REST endpoint.

Migration approach

Six steps for a successful folk to Odoo CRM data migration

  1. Discovery and Group schema enumeration

    We audit the source folk workspace across all Groups, enumerating each Group's custom field schema, pipeline view configuration, tag set, and owner assignments. We extract a full contact list per Group via CSV, noting which fields appear in which Groups and identifying conflicts. We pair this with Odoo edition and module selection: Starter ($24.90/user) covers CRM pipeline and lead management; Standard ($49.90/user) adds automated lead scoring and forecasting; Odoo Community (free, self-hosted) is an option if the customer wants on-premise deployment. The discovery output is a written migration scope, a consolidated field map, and a Group-to-Odoo-object mapping recommendation.

  2. Odoo schema provisioning and custom field creation

    We provision the Odoo CRM module with the required fields, tags, pipeline stages, and sales team structure before any data loads. Custom fields from folk are created as ir.model.fields with custom=True on the res.partner model. Pipeline stages are created in the correct sequence with probability values matching the source folk pipeline view. Tags are pre-created in Odoo to avoid on-the-fly creation during data load. The schema is validated in an Odoo test database before production deployment.

  3. CSV extraction, deduplication, and transformation

    We extract CSV files from each folk Group covering Contacts, Companies, Notes, Reminders, Tags, and Activities. We deduplicate by email address across Groups (keeping the most recently updated record), flag duplicates for customer review, and transform field values to match Odoo's expected data types (phone number formatting, date formats, picklist values). The folk person/company subtype is resolved: person-type contacts become res.partner with is_company=False; company-type contacts become res.partner with is_company=True.

  4. Contact-Company relationship resolution

    We process folk company-type Contacts first, creating them in Odoo as res.partner with is_company=True and capturing the new Odoo partner ID. We then process person-type Contacts, resolving any manually established folk relationships to Odoo parent_id references using the captured company partner IDs. Contacts without a folk relationship are migrated as standalone Contacts and flagged for customer review. This step is the primary source of post-migration data quality issues if skipped.

  5. Odoo XML-RPC import in dependency order

    We load records into Odoo in dependency order using XML-RPC with batch chunking of 50-100 records per call. Companies (is_company=True partners) load first. Person Contacts load second with parent_id resolved. Notes load as mail.message records on the res.partner thread. Tags are created and linked via crm.tag.rel. Activities load as mail.activity records. Each batch emits a row-count report and a field-level validation summary. Failed records are retried with corrected data; persistently failing records are logged for manual resolution.

  6. Cutover, validation, and automation rebuild handoff

    We freeze folk writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver a written inventory of folk Workflows, email campaign configurations, and automation logic for the customer's Odoo admin to rebuild using Odoo Studio or server actions. We support a one-week hypercare window where we resolve reconciliation issues. We do not rebuild folk automations as Odoo automated actions inside the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

folk logo

folk

Source

Strengths

  • One-click LinkedIn profile capture directly into a contact record with social handles and company data pre-filled.
  • Per-group custom fields allow different taxonomies per team or workflow without requiring schema-level admin access.
  • Clean, opinionated UI with a low learning curve — most teams reach proficiency within a single onboarding session.
  • Built-in email campaigns and sequences on Standard, with Gmail sender and email tracking available on both Standard and Premium.
  • Workspace-wide AI Magic Field credits included on all paid tiers, with a simpler credit model than Attio.

Weaknesses

  • No permanent free tier — only a 14-day trial with no free-forever option, which limits evaluation before commitment.
  • AI credit limits (2,000–5,000 Magic Field calls/month workspace-wide) constrain active outbound teams, especially on Standard.
  • No documented public API for bulk export — large-scale data extraction relies on CSV round-tripping, which drops attachments and relationship metadata.
  • Automation between contacts and companies is manual; account-based workflows require careful field setup to avoid duplication.
  • Reporting and analytics remain behind pipeline-first CRMs like Pipedrive on deal forecasting and cohort breakdowns.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

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 folk and Odoo CRM.

  • 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

    folk: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your folk to Odoo CRM 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 folk to Odoo CRM data migrations

Answers to the questions buyers ask most during folk to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between four and eight weeks for accounts under 10,000 Contacts, 5,000 Companies, and 20 Groups with no custom object dependencies. Migrations with 20+ Groups, per-group custom field conflicts requiring full schema enumeration, large activity histories (over 200,000 activity records), or multi-company Odoo configurations requiring separate database partitions move to ten to sixteen weeks because of discovery scope and Odoo XML-RPC batch sequencing. Odoo migration guides typically cite a few weeks to a few months for ERP-level migrations, and CRM-only migrations from folk fall on the shorter end of that range.

Adjacent paths

Related migrations to explore

Ready when you are

Move from folk.
Land in Odoo CRM, 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