CRM migration

Migrate from FunnelMaker to Twenty CRM

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

FunnelMaker logo

FunnelMaker

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

73%

8 of 11

objects map 1:1 between FunnelMaker and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from FunnelMaker to Twenty CRM is a structural migration from an all-in-one marketing-first platform to a clean, open-source CRM with a GraphQL API. FunnelMaker bundles marketing automation, built-in calling, and drip campaigns under a contact-tier pricing model with hard caps, while Twenty CRM charges no per-contact fees and exposes a GraphQL endpoint for data operations. The core migration challenge is FunnelMaker's lack of a documented public API: we extract via CSV from FunnelMaker's in-app export tools, normalize field types and date formats, enrich records with external IDs for lookup resolution in Twenty, and import through Twenty's /graphql endpoint. Workflows and drip campaigns do not migrate as automation logic; we deliver a written inventory of every active rule for the customer to rebuild in Twenty. Call recordings and transcription text from FunnelMaker's built-in click-to-dial feature do not migrate as binary files.

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

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How FunnelMaker objects map to Twenty CRM

Each row shows how a FunnelMaker object lands in Twenty 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

Twenty CRM

Person

1:1
Fully supported

FunnelMaker Contacts map directly to Twenty CRM Person records. Every standard contact field (name, email, phone, address) and all user-defined fields migrate as typed fields on the Person object. We use FunnelMaker's contact ID as an external ID (displayName or a custom field) so that related records (Activities, Opportunities) can resolve the Person reference via lookup during import. FunnelMaker's contact tier cap does not affect migration into Twenty, which has no per-contact limit.

FunnelMaker

Company

maps to

Twenty CRM

Company

1:1
Fully supported

FunnelMaker Company records map to Twenty CRM Company. Company-contact associations are preserved using the FunnelMaker contact-to-company link, resolved as a Company lookup on the Person record during import. All company-level custom fields migrate as custom fields on Twenty's Company object after the schema is pre-created via Twenty's /metadata API.

FunnelMaker

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

FunnelMaker Opportunity records map to Twenty CRM Opportunity with a direct 1:1 field mapping. Pipeline stage names from FunnelMaker become Opportunity stage values in Twenty. Closed-Lost and Closed-Won reason fields migrate as custom text fields if they exist in FunnelMaker. We resolve Opportunity owner to a Twenty User by email match and set the AccountId (Company lookup) before Opportunity import.

FunnelMaker

Pipeline

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

FunnelMaker drag-and-drop pipeline stages map to Twenty CRM Opportunity stage values. Each FunnelMaker pipeline becomes a separate set of stage values in Twenty's Opportunity pipeline. Stage probability percentages migrate as decimal values on each stage. We configure the pipeline stages in Twenty's workspace settings before Opportunities are imported.

FunnelMaker

Activity (call, email, task, note)

maps to

Twenty CRM

Task or Note

1:1
Fully supported

FunnelMaker Activity records (calls, emails, tasks, notes) map to Twenty CRM Task or Note depending on type. Call metadata (duration, timestamp, owner) migrates as Task records with a custom call-specific field set. Email activities migrate as Note records attached to the Person or Opportunity. Activity date ordering is preserved by setting the Task or Note createdAt timestamp to the original FunnelMaker activity timestamp. Full email content migrates as Note body text.

FunnelMaker

Drip Campaign

maps to

Twenty CRM

Workflow (documented, not migrated)

1:1
Fully supported

FunnelMaker drip campaigns are email sequences with time-based steps and contact-segment triggers. We map the campaign structure (step order, delay, email template reference, segment criteria) into a written document that describes each step and its recommended Twenty equivalent. The customer rebuilds drip campaigns in their chosen email marketing tool (e.g., Mailchimp, Klaviyo, or a custom sequence tool) after migration. Drip campaign logic does not transfer as automation code.

FunnelMaker

Workflow

maps to

Twenty CRM

Workflow (documented, not migrated)

1:1
Fully supported

FunnelMaker Workflows are automation rules with trigger conditions, conditional branching, time delays, and action types that have no direct equivalent in Twenty CRM's workflow model. We document every active Workflow during discovery, listing the trigger, each condition branch, the resulting action, and the records affected. The customer reviews this document and rebuilds workflows using Twenty's available automation capabilities or a third-party tool.

FunnelMaker

Custom Object

maps to

Twenty CRM

Custom Object

1:1
Fully supported

FunnelMaker custom objects (unlimited on all tiers) migrate to Twenty CRM custom objects of matching API name. We pre-create the destination custom object schema via Twenty's /metadata API, including all custom fields with correct types (text, number, date, boolean, select, multi-select, relation), before importing any records. Lookup relationships between custom objects and standard objects (Person, Company, Opportunity) are resolved at import time using the external IDs we assigned during the FunnelMaker export phase.

FunnelMaker

Lead Scoring

maps to

Twenty CRM

Custom Number Field on Person

lossy
Mapping required

FunnelMaker lead score values migrate as a custom numeric field on the Twenty CRM Person object (e.g., lead_score__c). The scoring rule logic is documented separately as a reference for the customer to rebuild in Twenty or a third-party scoring tool. Score history (historical score changes over time) does not migrate because FunnelMaker stores it as a calculated value rather than discrete records.

FunnelMaker

Tag and Group

maps to

Twenty CRM

Custom Select Field or List Membership

lossy
Fully supported

FunnelMaker tags and group memberships are mapped to either a multi-select custom field on Person (for organizational tags like 'enterprise', 'SMB') or a list/segment membership in Twenty's data model depending on how the customer uses them. We document the tag distribution during scoping so the customer decides whether tags become filterable fields or separate list records.

FunnelMaker

Document (signature requests)

maps to

Twenty CRM

Note (document metadata)

1:1
Fully supported

FunnelMaker document signature requests and stored files migrate as Note records with document metadata (filename, upload date, signing status) in the Note body. The actual file content (PDF, contract) does not migrate unless the customer provides a file URL or storage link. We preserve the relationship between the document and its parent Person or Opportunity using Twenty's Note linking.

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

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • FunnelMaker has no public API — export relies on in-app CSV only

    FunnelMaker does not publish a REST API or developer documentation for programmatic data export. All migration extraction uses in-app CSV downloads per object type (Contacts, Companies, Opportunities, Activities). Complex records with multi-line custom fields may require field-by-field reconciliation by the customer before export. We work with FunnelMaker's in-app export tools and, where available, Zapier or Make connectors to pull data, but any Zapier-routed export inherits Zapier's free-tier record limits and polling intervals. Large datasets may require multiple export batches.

  • Twenty CRM requires custom fields to exist before CSV import

    Twenty CRM's CSV import creates records but not fields. All custom fields referenced in a CSV import must be pre-created in Settings → Data Model before the import runs. We inspect FunnelMaker's custom field schema during discovery, create the equivalent fields in Twenty via the /metadata API, configure field types (text, number, date, select, relation), set required/unique flags, and verify the GraphQL schema updates before any CSV is loaded. This pre-creation step adds a schema deployment phase that is not required for platforms with auto-schema on import.

  • Twenty CRM users must be invited before Owner lookups resolve

    Twenty CRM requires that any User referenced as an Owner on a Person, Company, or Opportunity record must exist in the workspace before the import. If a FunnelMaker Owner email does not have a matching invited Twenty User, the OwnerId lookup fails and the record imports without an owner assignment. We extract every distinct Owner from FunnelMaker records during scoping, match by email against Twenty's User list, and place unmatched owners in a reconciliation queue for the customer to provision before the relevant import phase runs.

  • Workflows and drip campaigns do not migrate as automation logic

    FunnelMaker workflows and drip campaigns are automation rules with trigger conditions, conditional branches, time delays, and CRM actions. Twenty CRM has no native equivalent to FunnelMaker's visual workflow builder. We document every active workflow and drip campaign as a written step-by-step description with trigger, conditions, actions, and affected records. The customer rebuilds these in their chosen automation tool post-migration. This documentation step adds human review time and requires a stakeholder sign-off on the rebuilt sequence before go-live.

  • Call recordings and transcriptions are binary media files not included in export

    FunnelMaker's built-in click-to-dial feature stores call recordings and transcription text as binary media files in its voice infrastructure. These files are not accessible via FunnelMaker's CSV export and are not included in standard data downloads. We migrate call metadata (call duration, timestamp, owner, linked contact) as Twenty CRM Task records with a custom call-duration field. The audio files and full transcription text do not migrate due to file size, format variability, and compliance constraints.

Migration approach

Six steps for a successful FunnelMaker to Twenty CRM data migration

  1. Discovery and export preparation

    We audit the FunnelMaker account across all tiers, listing every object type (Contacts, Companies, Opportunities, Activities, Custom Objects), custom field schema, active workflows, drip campaigns, tag taxonomy, and lead scoring rules. Because FunnelMaker has no public API, we map out the CSV export path for each object: which fields are available in the export, which require in-app manual selection, and which will need Zapier or Make connectors to pull at volume. We flag any FunnelMaker contact tier ceilings that the customer is approaching and confirm the target Twenty CRM workspace (self-hosted or cloud) and edition.

  2. Schema pre-creation in Twenty CRM

    We create all required Twenty CRM objects and fields before any data import. This includes pre-creating custom fields on Person, Company, and Opportunity (via Settings → Data Model and the /metadata API), defining Opportunity pipeline stages that match FunnelMaker's pipeline stages, creating any custom objects, and configuring lookup relationships. We also invite all required users to the Twenty workspace and verify their acceptance before Owner lookups are resolved. This step is critical because Twenty's CSV import will reject or orphan any record with a missing required lookup.

  3. FunnelMaker data extraction and normalization

    We extract data from FunnelMaker using the in-app CSV export per object type, supplemented by Zapier or Make connectors for activity data at volume. Each CSV is normalized: date formats are standardized to ISO 8601, phone numbers are cleaned to E.164 format, multi-select or comma-separated fields are split into individual rows or mapped to Twenty's select field format, and every record receives an external ID (using FunnelMaker's internal record ID) for cross-platform lookup resolution. We flag duplicate records, outdated contacts (no activity in 2+ years), and test data for the customer's review before import.

  4. Sandbox staging and reconciliation

    We run a full migration into Twenty's staging or sandbox environment using production-like data volume. The FunnelMaker data is imported in dependency order: Companies first (resolved as Company records with their displayName as the dedupe key), then Persons (with CompanyId resolved via external ID lookup), then Opportunities (with AccountId and OwnerId resolved), then Activities (Tasks and Notes linked to Person and Opportunity), and finally custom objects. The customer's admin reviews a random sample of 25-50 records per object type, spot-checking field values against the source FunnelMaker records, and signs off on the staging migration before production.

  5. Workflow and drip campaign documentation

    We document every active FunnelMaker workflow and drip campaign as a written step-by-step inventory. Each entry includes the workflow name, trigger type (contact property change, date-based, event-based), condition branches, time delays, resulting actions (field update, email send, task creation), and the records affected. We map each step to a recommended Twenty-compatible automation approach or a third-party tool (e.g., Zapier, Make, or a dedicated email sequencing platform). The customer reviews and approves the documentation before go-live.

  6. Production cutover and validation

    We freeze FunnelMaker write access during cutover, run a final delta export of any records modified during the migration window, and import the delta into Twenty CRM. We run a final reconciliation pass: record counts per object, spot checks of mapped fields, and verification that all Owner and Company lookups resolved correctly. We deliver the workflow and drip campaign documentation to the customer's admin team and support a one-week hypercare window for reconciliation issues. We do not rebuild FunnelMaker workflows as Twenty automations as part of the migration scope; that is a separate rebuild 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.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

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 Twenty 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 Twenty 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 Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 10,000 People and 2,000 Opportunities with no custom objects typically complete in three to five weeks. Migrations with multiple custom objects, large activity histories (over 200,000 activity records), complex lookup hierarchies, or wide drip campaign inventories move to eight to twelve weeks because of the manual CSV export work, schema pre-creation phase, and workflow documentation scope.

Adjacent paths

Related migrations to explore

Ready when you are

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