CRM migration
Field-level mapping, validation, and rollback between Weave and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Weave
Source
Twenty CRM
Destination
Compatibility
18 of 18
objects map 1:1 between Weave and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Weave organizes patient-facing practices around contacts, locations, communication threads, and appointments. Its data model blends CRM records with real-time VoIP call logging, SMS history, and appointment reminders — optimized for front-desk workflows in dental, veterinary, and medical settings. Twenty CRM provides People (contacts), Companies (accounts), Opportunities (deals), Notes, and Tasks as standard objects, with custom objects and fields available on paid tiers. FlitStack AI extracts Weave records via API (contacts, companies, communications, appointments, tasks) and loads them into Twenty via CSV import or GraphQL API — handling relationship resolution (person-to-company links via companyId), call-log flattening into Tasks with metadata, and appointment-to-Note conversion. Weave custom properties migrate as custom fields on the matching Twenty object. Workflows, sequences, and automations built in Weave do not transfer — Weave's automation model has no equivalent in Twenty's workflow builder. We deliver a field-level diff before the full run, capture in-flight changes during a 24–48 hour delta window, and generate an audit log so you can trace every record to its source.
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 Weave 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.
Weave
Contact (Patient)
Twenty CRM
People
1:1Weave Contact records migrate as Twenty People objects. Each patient's primary company (practice or location) resolves to a companyId link pointing to the corresponding Company record. For patients without a linked location, FlitStack creates a standalone People record with either a placeholder company or a custom 'Unassigned' flag to preserve data integrity and ensure relationship consistency in Twenty's schema.
Weave
Contact Name (First + Last)
Twenty CRM
People.name
1:1Weave stores first name and last name as separate contact properties. These two fields concatenate to populate the Twenty People name field. For contacts that lack a name in Weave, FlitStack preserves the original source identifier (such as an internal Weave ID) in a custom 'Source_Name__c' field on the People record to maintain traceability.
Weave
Contact Email
Twenty CRM
People.email
1:1The primary email address from each Weave Contact maps directly to the Twenty People email field. When a Weave contact has multiple email addresses on file, the primary email populates the standard email field while additional addresses are stored in a custom multi-value field called 'Additional_Emails__c' using a semicolon-separated format.
Weave
Contact Phone
Twenty CRM
People.phone
1:1Weave's primary phone field maps to the Twenty People.phone standard field. Mobile phone, home phone, and work phone stored as separate contact properties in Weave migrate to custom text fields on the People record (Mobile_Phone__c, Home_Phone__c, and Work_Phone__c respectively) to preserve all available contact numbers.
Weave
Contact Address
Twenty CRM
People.address + custom fields
1:1Weave stores address components (street, city, state, postal code, and country) as separate sub-fields on the contact record. These consolidate into a single formatted address string in Twenty's People.address field while maintaining individual custom fields for city, state, and postal code to enable precise filtering, segmentation, and geographic reporting.
Weave
Contact Communication Preferences
Twenty CRM
Custom fields on People
1:1Weave tracks SMS opt-in, email opt-in, and call preferences as per-contact settings. Since Twenty has no native equivalent for these preference fields, FlitStack migrates each preference as a custom boolean field on the People record: SMS_Opt_In__c, Email_Opt_In__c, and Call_Permission__c, preserving the original consent status from Weave.
Weave
Location (Practice)
Twenty CRM
Company
1:1Weave Locations representing practices, clinics, or offices map directly as Twenty Companies. Each Weave location name becomes a Company.name value. For multi-location practices in Weave that maintain separate contact lists and scheduling queues, FlitStack generates separate Company records linked by a custom 'Practice_Group__c' field to represent the parent organization.
Weave
Location Address
Twenty CRM
Company.address + address fields
1:1Location address fields (street, city, state, postal code, country) from Weave map to Twenty Company address fields following the same transformation pattern applied to contact addresses. The consolidated address string populates the standard Company.address field while individual sub-fields (city, state, postal_code) are preserved as custom fields for reporting and geographic segmentation.
Weave
Contact–Location Association
Twenty CRM
People.companyId
1:1Weave's patient-to-location association (identifying which clinic or practice a patient belongs to) maps to People.companyId pointing to the corresponding Twenty Company record. When a patient has multiple associated locations in Weave, secondary location links are stored as a custom 'Additional_Locations__c' multi-select field on the People record.
Weave
Communication (SMS / Call / Email)
Twenty CRM
Task
1:1Weave communication threads (SMS messages, VoIP calls, emails) transform into Twenty Tasks. Each Task captures the interaction direction (inbound/outbound), communication type (call/sms/email), call duration stored in a custom Duration_Seconds__c field, the original timestamp, and the original Weave thread ID. The task body stores a truncated transcript or summary for quick reference.
Weave
Appointment
Twenty CRM
Note + Task
1:1Weave appointments transform into a Note linked to People and Company records plus a companion Task. The Note contains appointment type, duration, and clinical notes while the Task carries the appointment date as dueDate and the assigned provider in the assignee field. Weave reminder sequences do not migrate — those must be rebuilt using Twenty's workflow builder on Pro or Organization tiers.
Weave
Appointment Reminder
Twenty CRM
Not migrated
1:1Weave's automated SMS and email appointment reminders built on Weave's automation engine have no equivalent in Twenty's workflow model. These workflows cannot be exported and must be rebuilt from scratch using Twenty's workflow builder (available on Pro and Organization Cloud tiers) or via an external scheduling integration. FlitStack exports reminder configurations as a JSON reference document for your Twenty admin to use during the rebuild.
Weave
Task / To-Do
Twenty CRM
Task
1:1Weave tasks and front-desk action items map directly to Twenty Tasks. Task status (completed/incomplete), due date, assignee, and description fields carry over directly from Weave. The completed flag preserves the original completion state so your team can review historical task data in Twenty without needing to re-create the work history.
Weave
Custom Property (Contact)
Twenty CRM
Custom field on People
1:1Weave custom contact properties migrate as custom fields on the Twenty People object. Field type mapping follows these rules: text properties become TEXT fields, numeric properties become NUMBER fields, date properties become DATE fields, and picklist properties become SELECT or multi-select fields depending on Weave's configuration. All custom fields must be pre-created in Twenty Settings before import.
Weave
Custom Property (Location)
Twenty CRM
Custom field on Company
1:1Weave custom location properties such as tax ID, NPI number, scheduling rules, and clinic-specific attributes migrate as custom fields on the Twenty Company object. The same type-mapping rules applied to People custom fields (text, number, date, picklist) apply here, ensuring data types remain consistent across both object types during migration.
Weave
Billing / Payment Record
Twenty CRM
Custom Object or Note
1:1Weave's integrated billing and payment records have no direct equivalent in Twenty's standard data model. FlitStack migrates billing summaries (most recent payment amount, date, and status) as Note records attached to the relevant People or Company record. Full payment history, invoice records, and outstanding balances require a custom object setup in Twenty available on Pro and Organization tiers.
Weave
Owner / Assigned User
Twenty CRM
People.companyId + custom owner field
1:1Weave owner assignments identifying which staff member owns a contact or location resolve via email match to Twenty workspace members. Unmatched owners are flagged in a pre-migration report for manual assignment. Original ownership metadata is preserved in a custom 'Source_Owner__c' field on each record, storing the Weave owner email for audit and reference purposes.
Weave
HIPAA Compliance Flag
Twenty CRM
Custom field on People
1:1Weave's HIPAA compliance infrastructure including audit logs and secure messaging has no native equivalent in Twenty's general-purpose CRM model. FlitStack preserves a HIPAA_Flag__c custom boolean field on People records and a 'Compliance_Notes__c' field for storing audit trail references from Weave's export. The compliance framework itself must be addressed at the deployment level.
| Weave | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact (Patient) | People1:1 | Fully supported | |
| Contact Name (First + Last) | People.name1:1 | Fully supported | |
| Contact Email | People.email1:1 | Fully supported | |
| Contact Phone | People.phone1:1 | Fully supported | |
| Contact Address | People.address + custom fields1:1 | Fully supported | |
| Contact Communication Preferences | Custom fields on People1:1 | Fully supported | |
| Location (Practice) | Company1:1 | Fully supported | |
| Location Address | Company.address + address fields1:1 | Fully supported | |
| Contact–Location Association | People.companyId1:1 | Fully supported | |
| Communication (SMS / Call / Email) | Task1:1 | Fully supported | |
| Appointment | Note + Task1:1 | Fully supported | |
| Appointment Reminder | Not migrated1:1 | Fully supported | |
| Task / To-Do | Task1:1 | Fully supported | |
| Custom Property (Contact) | Custom field on People1:1 | Fully supported | |
| Custom Property (Location) | Custom field on Company1:1 | Fully supported | |
| Billing / Payment Record | Custom Object or Note1:1 | Fully supported | |
| Owner / Assigned User | People.companyId + custom owner field1:1 | Fully supported | |
| HIPAA Compliance Flag | Custom field on People1: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.
Weave gotchas
Pricing hides setup, hardware, and addon costs
SMS and voicemail retention limits
Limited public API documentation
VoIP call records tied to phone service
Consolidated pricing tiers obscure feature availability
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
Extract Weave data via paginated API
FlitStack AI authenticates against the Weave API and extracts all standard and custom record types: contacts (patients), locations (practices), communications (SMS, calls, emails), appointments, and tasks. We pull in 10,000 records per API page, handling Weave's rate limits with exponential back-off. Each record is tagged with its Weave ID, owner email, location ID, and original create/update timestamps. The extraction generates a manifest showing record counts per object and flags any records that exceed the field-length limits of Twenty's schema.
Map Weave objects to Twenty schema and pre-create custom fields
Before data loads, we map each Weave object to its Twenty equivalent and create any missing custom fields in Twenty's Settings → Data Model. Custom properties from Weave (contact fields, location fields) are created as custom fields on the matching Twenty object with the appropriate type. Multi-location Weave setups are flagged for the location-mapping decision (flattened vs. junction). All custom fields must exist before CSV import — Twenty's import creates records, not fields. This step includes a custom field manifest reviewed by your Twenty admin before proceeding.
Run sample migration with field-level diff
A representative slice of 100–500 records migrates first — covering contacts across different locations, a sample of communication history, and appointment records. We generate a field-level diff comparing the Weave source values against the loaded Twenty records. This diff is reviewed by your team to verify that location mapping, owner resolution, communication type encoding, and appointment conversion meet expectations before the full run commits. Any mapping adjustments are made before the production migration.
Execute full migration with delta-pickup window
The full dataset loads into Twenty in batches of 20,000 records per CSV import, following the Twenty import order: Companies (locations) first, then People (contacts), then Tasks (communications, appointments, to-dos). During the cutover window, your team continues working in Weave. After the initial full load, FlitStack AI runs a delta extraction capturing any Weave records created or modified in the previous 24–48 hours and loads them into Twenty as a final batch. The audit log records every operation for traceability. One-click rollback is available if reconciliation reveals data integrity issues.
Deliver migration manifest, field mapping doc, and sequence reference export
After migration completes, FlitStack AI delivers: a record-count manifest showing all objects migrated and any records skipped or flagged; a field mapping document with every Weave field → Twenty field mapping including transformation notes; a Weave sequence definition export (JSON) for your Twenty admin to use as a rebuild reference; and a list of unmapped Weave features (reminders, automations, billing records) with recommendations for rebuilding in Twenty or via an external integration. Your team reviews the deliverables and confirms readiness for go-live.
Platform deep dives
Weave
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 Weave 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
Weave: Not publicly documented.
Data volume sensitivity
Weave 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 Weave to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Weave 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 Weave
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.