CRM migration
Field-level mapping, validation, and rollback between Merlin and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Merlin
Source
Twenty CRM
Destination
Compatibility
6 of 10
objects map 1:1 between Merlin and Twenty CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Merlin is an AI assistant extension, not a CRM, which makes this migration structurally different from most CRM-to-CRM moves. Merlin stores conversation threads, uploaded documents (PDF, PPT, Word), and generated outputs in user-scoped storage with no public API. We guide customers through the manual export of their Merlin content, perform document-level entity extraction to surface person and company names, and map the extracted entities into Twenty's People, Companies, and Custom Objects. Conversation history migrates as Note records or file attachments depending on length. User account metadata (email, plan tier) maps to Twenty Members. Because Twenty is a self-hosted open-source CRM with a TypeScript data model and a custom object builder in Settings, the destination schema must be provisioned before import. Workflows, automations, and sequences do not exist in Merlin and therefore do not migrate; any automation logic discovered in document artifacts is inventoried for manual rebuild in Twenty.
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 Merlin 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.
Merlin
Uploaded Documents
Twenty CRM
Attachments on Companies or People
lossyPDF, PPT, and Word files uploaded in Merlin Document Chat migrate as file attachments in Twenty. We preserve file binary content, original filename, and upload timestamp. Each attachment is linked to a parent Company or People record that we create during entity extraction. Free-tier Merlin documents (capped at 10 pages) are flagged separately so customers understand if truncation occurred during the original upload. Pro-tier unlimited-length uploads migrate in full.
Merlin
Document Entity: Person
Twenty CRM
People
1:manyMerlin Document Chat does not store contacts natively. We perform document-level parsing on all uploaded PDFs, presentations, and Word files to extract person names, email addresses, job titles, and phone numbers. Each extracted entity becomes a Twenty People record. Multiple mentions of the same person across documents deduplicate by email or fuzzy name match and consolidate into a single People record with a source_documents field listing each source file.
Merlin
Document Entity: Company
Twenty CRM
Companies
1:manyCompany names and domains extracted from Merlin uploaded documents map to Twenty Companies. We extract company domain from email addresses found in documents, match against known company name patterns, and create a Companies record per unique organization. The Twenty Companies domain field is populated where extractable from document content.
Merlin
Conversation Thread
Twenty CRM
Note
1:1Merlin chat sessions migrate as Twenty Note records. Each session becomes a Note with the conversation transcript as body text, the session start timestamp as ActivityDate, and a link to the most relevant Company or People record via ContentDocumentLink. Sessions exceeding Twenty's Note body limit split into sequential Notes with part numbering. Model attribution metadata (which AI model responded per turn) is not exported from Merlin and is flagged as permanently unavailable.
Merlin
Document Chat Q&A Pairs
Twenty CRM
Note
1:1Merlin Document Chat Q&A pairs (the question asked against a specific uploaded file and the AI-generated answer) migrate as Twenty Notes with a tag indicating the source file. We preserve the question text, answer text, and source document reference. This allows sales reps to review the document analysis that informed past decisions without re-uploading the file to Twenty.
Merlin
User Account
Twenty CRM
Members
1:1Merlin account metadata (email, plan tier, usage quota) from account settings maps to Twenty Members. The Merlin Owner assignment for conversations is not a first-class concept, so owner attribution on Notes relies on session export timestamps matched against the account holder's email. Teams with multiple Merlin users require separate account exports and individual Member provisioning in Twenty before migration.
Merlin
Image Generation Output
Twenty CRM
Attachments on Companies or People
1:1Merlin image generation outputs migrate as file attachments in Twenty. We preserve the PNG or image binary, creation timestamp, and prompt text as a description field. Image attachments link to the relevant Company or People record if the prompt context allows association; otherwise they attach to a general Workspace or Opportunity record.
Merlin
Document Entity: Custom
Twenty CRM
Custom Object
lossyMerlin has no custom property schema. Any structured data that appears consistently across uploaded documents (e.g., project codes, contract values, product SKUs) is identified during entity extraction and mapped to a Twenty Custom Object created in Settings before migration. We document the field names, data types, and source documents for each custom entity so the customer's admin can configure the schema in Twenty's Data Model section.
Merlin
Pipeline Stage
Twenty CRM
Not applicable
1:1Merlin has no pipeline, deal, or opportunity objects. We do not migrate pipeline stages because none exist in the source. If the customer has deal context embedded in Merlin documents, we extract deal-related entities (deal name, value, stage name, expected close date) as Custom Object records in Twenty rather than native Opportunity records.
Merlin
Tags
Twenty CRM
Not applicable
1:1Merlin does not expose a tagging or labeling system accessible via export. We cannot migrate structured tag metadata. Any labels visible in Merlin's UI are documented as a manual reference for the customer to recreate in Twenty's tagging or topic features post-migration.
| Merlin | Twenty CRM | Compatibility | |
|---|---|---|---|
| Uploaded Documents | Attachments on Companies or Peoplelossy | Mapping required | |
| Document Entity: Person | People1:many | Fully supported | |
| Document Entity: Company | Companies1:many | Fully supported | |
| Conversation Thread | Note1:1 | Fully supported | |
| Document Chat Q&A Pairs | Note1:1 | Fully supported | |
| User Account | Members1:1 | Fully supported | |
| Image Generation Output | Attachments on Companies or People1:1 | Fully supported | |
| Document Entity: Custom | Custom Objectlossy | Fully supported | |
| Pipeline Stage | Not applicable1:1 | Fully supported | |
| Tags | Not applicable1:1 | Not 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.
Merlin gotchas
No public API for automated export
Document upload limit differences by tier are migration-critical
Conversation metadata is not exported
No contacts or CRM objects means context must be rebuilt
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
Manual export scoping and session capture
We guide the customer through a structured Merlin export process: dashboard conversation export (JSON), document folder download (PDF, PPT, Word files), and account settings capture (email, plan tier, usage). We provide a pre-export checklist that includes confirming account tier (Free or Pro), identifying all session threads, and ensuring all files to be migrated are still accessible in the Merlin UI. This step cannot be automated and must be completed before account closure.
Document parsing and entity extraction
We run all exported documents through a parsing pipeline to extract person names, company names, email addresses, phone numbers, job titles, and any recurring custom entities (project codes, contract values, SKUs). Entities are deduplicated across documents using email as the primary key for people and domain for companies. We produce a confidence score per entity and flag low-confidence extractions for customer review.
Twenty workspace provisioning
We configure the destination Twenty workspace before any data import. This includes creating any Custom Objects in Settings, adding custom fields to the standard People and Companies objects, configuring field types and required constraints, and inviting all team Members. If the customer self-hosts Twenty, we coordinate schema deployment on their infrastructure. This step mirrors Twenty's documented requirement that fields must exist before import.
Entity import and deduplication
We import the extracted People and Companies entities into Twenty via CSV. Person records map to Twenty People with email, name, job title, phone, and address fields. Company records map to Twenty Companies with name, domain, industry, and address fields. We run a pre-import duplicate check against any existing Twenty records using email and domain as dedupe keys. Document attachments upload separately and link to the parent Company or People record via ContentDocumentLink.
Conversation history migration as Notes
Merlin conversation threads migrate as Twenty Note records, one Note per session. Thread text exceeding Twenty's Note body limit splits into sequential Notes with a part indicator. Each Note receives a ContentDocumentLink to the most relevant Company or People record based on session context. Document Chat Q&A pairs migrate as Notes with a tag referencing the source file. Image generation outputs attach as file blobs with prompt text as description.
Cutover, validation, and inventory handoff
We freeze writes on the Merlin source, run a final delta capture of any new conversations or documents since the initial export, and apply the delta to Twenty. We deliver a row-count reconciliation report (People imported, Companies imported, Notes created, attachments uploaded) and a written inventory of any extracted custom entities that require schema configuration in Twenty's Data Model. The customer's admin rebuilds any workflow or sequence logic documented from conversation context.
Platform deep dives
Merlin
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Merlin and Twenty CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
Merlin: Not publicly documented.
Data volume sensitivity
Merlin 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 Merlin to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Merlin 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 Merlin
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.