CRM migration

Migrate from FunnelMaker to Odoo CRM

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

FunnelMaker logo

FunnelMaker

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

58%

7 of 12

objects map 1:1 between FunnelMaker and Odoo CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from FunnelMaker to Odoo CRM is a structural migration driven by FunnelMaker's absence of a public API and Odoo CRM's open-source extensibility and per-user pricing model. FunnelMaker provides no REST endpoint for programmatic export, so we work with its in-product CSV export tools to extract Contacts, Companies, Opportunities, and Activities before transforming and loading via Odoo's XML-RPC External API. Odoo CRM's External API is available only on Custom pricing plans; Standard plan customers must upgrade to access write API. We reconstruct FunnelMaker's drag-and-drop pipelines as Odoo CRM team pipelines with matching stage values, preserve lead scores as a custom Float field on the Partner model, and document drip campaign and workflow sequences for manual rebuild in Odoo's Automations or a third-party marketing automation app. Call recordings and transcription text do not migrate from FunnelMaker's built-in voice features.

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

FunnelMaker logo

FunnelMaker

What's pushing teams away

  • FunnelMaker's marketing-first interface and dense feature set create a steep learning curve that overwhelms small teams expecting simple CRM basics.
  • Support tiers are differentiated and Next Level Support costs extra on the Ultimate plan, leaving some customers feeling nickel-and-dimed on service quality.
  • Lack of publicly documented API or developer portal means integrations and data portability require workarounds or vendor involvement.
  • International feature gaps and English-only product documentation limit adoption for teams operating in non-English markets.

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 FunnelMaker objects map to Odoo CRM

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

FunnelMaker

Contact

maps to

Odoo CRM

Partner (res.partner)

1:1
Fully supported

FunnelMaker Contact records map to Odoo res.partner with address-type roles (contact, invoice address, delivery address) preserved via partner_id and address_type fields. All standard fields (name, email, phone, website) map directly. FunnelMaker user-defined contact fields map to Odoo custom fields on res.partner. We set type=contact by default and preserve the FunnelMaker contact owner as a many2one to res.users via the assigned_user_id field.

FunnelMaker

Company

maps to

Odoo CRM

Company (res.partner with type=company)

1:1
Fully supported

FunnelMaker Company records map to Odoo res.partner with type=company and child_contact records for individual contacts linked as children. The company name maps to partner.name, industry to industry_id, and domain (website) to website. Custom company-level fields from FunnelMaker migrate to custom fields on the res.partner record.

FunnelMaker

Opportunity

maps to

Odoo CRM

CRM Lead (crm.lead)

1:1
Fully supported

FunnelMaker Opportunity records map to Odoo CRM Lead. FunnelMaker's pipeline stage maps to Odoo's stage_id with the pipeline mapped to a crm.team record. Expected revenue maps to Odoo planned_revenue; FunnelMaker's deal value maps to Odoo's amount_total if Products are present or stays as planned_revenue if standalone. Owner assignment resolves via email match to res.users.

FunnelMaker

Pipeline

maps to

Odoo CRM

CRM Team + Stage (crm.team, crm.stage)

lossy
Fully supported

FunnelMaker's drag-and-drop pipelines map to Odoo crm.team records, each with its own stage sequence. We preserve FunnelMaker stage names, probabilities, and sequence order in Odoo stage records. The FunnelMaker pipeline-to-stage relationship migrates as a many2one on the Lead record. If FunnelMaker had multiple pipelines, each becomes a separate crm.team in Odoo.

FunnelMaker

Activity (calls, emails, tasks, notes)

maps to

Odoo CRM

Mail Message / Note (mail.message, note.note)

1:1
Fully supported

FunnelMaker activity records (calls, emails, tasks, notes) map to Odoo mail.message records linked to the parent res.partner or crm.lead via model and res_id fields. Email content migrates as body HTML in mail.message; tasks migrate as mail.activity with activity_type_id resolved to Odoo's standard task types. Activity date and author preserve from FunnelMaker. Call duration and disposition migrate to custom fields on the mail.message record.

FunnelMaker

Lead Scoring

maps to

Odoo CRM

Custom Float field on Partner (x_lead_score)

lossy
Mapping required

FunnelMaker lead scores are calculated using customizable rules. We migrate the numeric score value as a custom Float field (x_lead_score) on res.partner. The scoring rule logic is documented in a written reference sheet so the customer's admin can rebuild the scoring rules using Odoo Automations or a third-party scoring app. Score values themselves migrate without recalculation.

FunnelMaker

Drip Campaign

maps to

Odoo CRM

Automation / Email Campaign (mailing.mailing)

lossy
Fully supported

FunnelMaker drip campaigns are email sequences tied to contact segments. We map campaign structure, step timing, and associated contact segments to Odoo Email Campaigns (mailing.mailing) with a written sequence map. Each drip step becomes a separate mailing record within the campaign. The Odoo Automations module (included in CRM) can replicate trigger conditions; we document the equivalent trigger logic for the admin to configure post-migration.

FunnelMaker

Workflow

maps to

Odoo CRM

Automation (base.action.rule)

lossy
Fully supported

FunnelMaker workflow rules trigger CRM actions based on contact behavior. We document every active workflow during discovery as a written automation map covering trigger condition, filter criteria, time delay, and action type. Odoo's Automations module (CRM included) provides equivalent record-triggered and scheduled actions. We do not migrate workflow logic as code; the admin reviews the map and configures Odoo Automations manually using the documented equivalents.

FunnelMaker

Tag / Group

maps to

Odoo CRM

Tag (res.partner.category)

1:1
Fully supported

FunnelMaker Tags and Groups segment contacts into lists. We map tag names to res.partner.category records in Odoo and create tag_ids many2many relations on the res.partner record during migration. Group memberships with hierarchy (FunnelMaker Groups contain sub-Groups) flatten to a flat tag list in Odoo since Odoo does not natively support tag hierarchy.

FunnelMaker

Custom Object

maps to

Odoo CRM

Custom Model (ir.model) / Custom Fields

lossy
Fully supported

FunnelMaker unlimited custom objects map to Odoo custom fields on standard models (res.partner, crm.lead) when the custom object is contact-linked, or to a custom ir.model if it has standalone records. We inspect the FunnelMaker custom object schema during discovery, map field types to Odoo field types (char, float, integer, selection, many2one, etc.), and pre-create the Odoo schema before migration. Custom model ir.actions and views require Custom plan or Odoo Studio app.

FunnelMaker

Document / Signature Request

maps to

Odoo CRM

Attachment (ir.attachment) linked to document.model

1:1
Fully supported

FunnelMaker document signature requests and stored documents migrate as Odoo ir.attachment records linked to the parent res.partner or crm.lead record via res_model and res_id. Document metadata (filename, create date, create uid) preserve. File content migrates where accessible; binary files requiring FunnelMaker-specific viewer are documented with a reference link for manual retrieval.

FunnelMaker

Owner (User)

maps to

Odoo CRM

User (res.users)

1:1
Fully supported

FunnelMaker Owners (assigned to contacts, companies, opportunities) map to Odoo res.users by email match. We extract all distinct owner email addresses during scoping and match against the destination Odoo instance's user list. Any Owner without a matching Odoo user is held in a reconciliation queue for the admin to provision before record import. This is a required pre-condition before Opportunities can be imported with owner assignment.

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.

FunnelMaker logo

FunnelMaker gotchas

High

Contact tier limits are hard caps, not soft limits

High

No publicly documented API for direct export

Medium

Workflow and drip campaign migration requires manual sequencing

Medium

Built-in phone features do not export call recordings or transcription text

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

  • FunnelMaker has no public API; export relies on CSV and manual pulls

    FunnelMaker does not publish a REST API or developer documentation, so extraction depends entirely on in-product CSV downloads and manual data pulls. Complex custom objects, nested relationships (company-to-contact hierarchies), and activity histories require multiple export passes with manual reconciliation. We script CSV parsing and transformation pipelines to handle encoding issues, multi-value fields, and date format inconsistencies that arise from FunnelMaker's export format. This adds extraction time and requires the customer to grant us access to FunnelMaker's export interface during the discovery window.

  • Odoo External API requires Custom plan; Standard has no write API

    Odoo's XML-RPC External API is available only on the Custom pricing plan. If the customer is on Odoo Standard, we cannot write data via API and must use CSV import through Odoo's Settings > Import CSV interface, which has a lower record-per-upload limit and no support for relational field resolution (owner lookups, account lookups, custom object lookups). We confirm the Odoo plan during scoping. If the customer is on Standard, we recommend upgrading to Custom before migration begins to use the XML-RPC API for batched, relational data loads.

  • FunnelMaker contact tier limits are hard caps; Odoo has no equivalent

    FunnelMaker enforces contact limits as hard caps per pricing tier (1,000 to 50,000). If the customer's FunnelMaker plan is at its ceiling, FunnelMaker itself will block new contact creation and potentially new Opportunity creation until a plan upgrade. We flag the current tier and contact count during scoping so the customer resolves any plan mismatch before migration begins. Odoo has no contact cap, so migrating to a plan that accommodates current and projected contact volume is a migration benefit, not a technical constraint.

  • Workflows and drip campaigns do not migrate as automation code

    FunnelMaker workflow rules and drip campaign sequences are automation definitions tied to FunnelMaker-specific trigger types, delay units, and CRM action handlers. Odoo's Automations module can replicate equivalent logic but requires manual configuration. We document every active workflow and drip campaign during discovery with its trigger conditions, step sequence, and action types, and deliver a written automation map with recommended Odoo Automations equivalents. The customer's admin configures Odoo Automations post-migration using this map. This human-validation step adds to the migration timeline but ensures the automation logic is rebuilt correctly.

  • Call recordings and transcription text do not migrate

    FunnelMaker's built-in click-to-dial stores call recordings and transcriptions as binary media files in its voice infrastructure. These files are not included in FunnelMaker's CSV exports and cannot be retrieved via API (which does not exist). We migrate call metadata (timestamp, duration, owner, linked contact) as CRM activities in Odoo, but audio files and full transcription text are excluded due to file size, format variability, and compliance constraints. This is a documented data gap in the migration scope.

Migration approach

Six steps for a successful FunnelMaker to Odoo CRM data migration

  1. Discovery and export scaffolding

    We audit the FunnelMaker account across plan tier, contact count, pipeline count, custom field definitions, custom object schemas, active workflows, drip campaigns, and activity volume. Because FunnelMaker has no API, we provision an export scaffolding environment using its in-app CSV export tools and document every export pass required. We simultaneously confirm the Odoo plan (Standard or Custom) to determine whether XML-RPC API write access is available. The discovery output is a written migration scope, an export pass list, and an Odoo plan recommendation if Custom is not yet active.

  2. Schema design and custom field provisioning in Odoo

    We design the Odoo destination schema. This includes creating custom fields on res.partner (for FunnelMaker contact fields), crm.lead (for opportunity fields), and res.partner.category (for tags). If FunnelMaker has standalone custom objects, we create corresponding custom ir.model records in Odoo on the Custom plan or document the configuration for Standard plan. We create crm.team records for each FunnelMaker pipeline, with stage records preserving FunnelMaker stage names and probabilities. All schema work deploys to a Sandbox environment first for validation before production migration begins.

  3. CSV extraction and transformation

    We extract FunnelMaker data via in-product CSV exports in dependency order: Contacts first (with company associations), then Companies, Opportunities, Activities, Tags, and Custom Object records. Each CSV pass is validated for encoding consistency, multi-value field parsing (tags, custom checkboxes), date format normalization, and owner email resolution. We transform field values to match Odoo's expected formats (phone number formatting, email lowercase normalization, date strings to Odoo's datetime format) before staging for API write-in.

  4. Sandbox migration and reconciliation

    We run a full migration into an Odoo Sandbox using production-like data volume. The customer's Odoo admin reconciles record counts across all object types, spot-checks 25-50 records per object against FunnelMaker source data, and validates that contact-company associations and opportunity-company links resolved correctly. Pipeline stage mapping and lead score preservation are validated at this stage. Any mapping corrections are made in the transformation layer before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: res.users (Owner mapping validated), res.partner companies (type=company, from FunnelMaker Company records), res.partner contacts (linked to company parent), crm.lead opportunities (with team_id, stage_id, and user_id resolved), mail.message activities (linked to partner or lead via model and res_id), res.partner.category tags (created and linked via tag_ids), and custom object records (last, because they often have many2one lookups to partner or lead). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze FunnelMaker write access during cutover and run a final delta migration of any records modified during the migration window. We then enable Odoo CRM as the system of record. We deliver the Workflow and Drip Campaign inventory document to the customer's admin team with Odoo Automations equivalents documented step-by-step. We support a one-week hypercare window for reconciliation issues raised by the sales team. Rebuilding FunnelMaker workflows as Odoo Automations is outside the standard migration scope and is handled as a separate admin task or engagement.

Platform deep dives

Context on both ends of the pair

FunnelMaker logo

FunnelMaker

Source

Strengths

  • Unlimited users and emails across all pricing tiers eliminates per-seat and per-message billing surprises.
  • Bundled marketing automation, workflows, landing pages, and CRM in a single platform reduces third-party tool sprawl.
  • Built-in click-to-dial, call transcription, and voicemail drop reduce reliance on separate VoIP integrations.
  • Contact-based pricing with seven tiers up to 50,000 contacts accommodates growing SMBs without forcing large jumps.
  • Drag-and-drop pipeline and customizable lead scoring let sales teams model their own process.

Weaknesses

  • No publicly documented API or developer portal limits programmatic data export and integration flexibility.
  • Marketing-first interface with hundreds of tools creates a steep learning curve for teams expecting simple CRM basics.
  • Next Level Support costs extra even on the highest Ultimate plan, creating two-tier support quality.
  • Contact limits act as hard caps rather than soft limits, forcing plan upgrades when scaling beyond the contracted count.
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 FunnelMaker 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

    FunnelMaker: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your FunnelMaker 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 six weeks for accounts under 25,000 Contacts and 5,000 Opportunities with no standalone custom objects and a straightforward pipeline structure. Migrations with multiple FunnelMaker pipelines, custom objects, large activity histories (over 200,000 activity records), or Odoo Standard-to-Custom plan upgrades move to ten to sixteen weeks because of CSV extraction overhead, Odoo's XML-RPC batch chunking at 1 call/sec sustained, and the workflow-sequence documentation scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from FunnelMaker.
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