CRM migration
Field-level mapping, validation, and rollback between FunnelMaker and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
FunnelMaker
Source
Twenty CRM
Destination
Compatibility
8 of 11
objects map 1:1 between FunnelMaker and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
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 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
Twenty CRM
Person
1:1FunnelMaker 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
Twenty CRM
Company
1:1FunnelMaker 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
Twenty CRM
Opportunity
1:1FunnelMaker 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
Twenty CRM
Opportunity Stage
lossyFunnelMaker 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)
Twenty CRM
Task or Note
1:1FunnelMaker 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
Twenty CRM
Workflow (documented, not migrated)
1:1FunnelMaker 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
Twenty CRM
Workflow (documented, not migrated)
1:1FunnelMaker 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
Twenty CRM
Custom Object
1:1FunnelMaker 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
Twenty CRM
Custom Number Field on Person
lossyFunnelMaker 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
Twenty CRM
Custom Select Field or List Membership
lossyFunnelMaker 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)
Twenty CRM
Note (document metadata)
1:1FunnelMaker 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.
| FunnelMaker | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline | Opportunity Stagelossy | Fully supported | |
| Activity (call, email, task, note) | Task or Note1:1 | Fully supported | |
| Drip Campaign | Workflow (documented, not migrated)1:1 | Fully supported | |
| Workflow | Workflow (documented, not migrated)1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Lead Scoring | Custom Number Field on Personlossy | Mapping required | |
| Tag and Group | Custom Select Field or List Membershiplossy | Fully supported | |
| Document (signature requests) | Note (document metadata)1:1 | 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.
FunnelMaker gotchas
Contact tier limits are hard caps, not soft limits
No publicly documented API for direct export
Workflow and drip campaign migration requires manual sequencing
Built-in phone features do not export call recordings or transcription text
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
FunnelMaker
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 FunnelMaker and Twenty CRM.
Object compatibility
2 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
FunnelMaker: Not publicly documented.
Data volume sensitivity
FunnelMaker 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 FunnelMaker to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave FunnelMaker
Other ways to arrive at Twenty CRM
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.