CRM migration
Field-level mapping, validation, and rollback between My Practice Now and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
My Practice Now
Source
Twenty CRM
Destination
Compatibility
10 of 10
objects map 1:1 between My Practice Now and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
My Practice Now stores client records, appointment schedules, invoicing data, and client notes in a single unified structure optimized for small professional practices. Twenty CRM uses a relational data model built around People, Companies, Opportunities, Notes, and Tasks objects with support for unlimited custom objects and fields via the Metadata API. FlitStack AI extracts My Practice Now client records and maps them directly to Twenty's People object, company records to Companies, appointment history to Tasks, invoice data to custom Opportunity fields, and client notes to Twenty's Notes object. Custom fields defined in My Practice Now migrate as custom fields on the corresponding Twenty objects. Workflow automations, email templates, and scheduling rules do not transfer — we export configuration definitions for manual rebuild in Twenty's workflow builder. The migration uses Twenty's Core API (REST or GraphQL) for record creation and Metadata API for custom field provisioning before data loads begin. All migrations include a validation pass to confirm field-level integrity before switching user access.
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 My Practice Now 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.
My Practice Now
Client
Twenty CRM
People
1:1My Practice Now's Client record maps directly to Twenty's People object. The Client's primary contact fields (name, email, phone, address) transfer as corresponding People fields. Primary company association becomes the companyId relation in Twenty. All contact details retain their original formatting and timezone information to preserve communication history.
My Practice Now
Client Company
Twenty CRM
Companies
1:1When a My Practice Now client includes organizational affiliation data, that organization record creates a Twenty Companies entry. The company record holds industry, size, and location data that Twenty's Companies object supports natively. Industry classification uses standard codes, while size categories map to Twenty's built-in employee range options.
My Practice Now
Appointment
Twenty CRM
Tasks
1:1My Practice Now appointments become Twenty Tasks with the original appointment date preserved as the due date, appointment duration stored in a custom number field, and the client name linked via the Tasks' relation field. Status maps from scheduled/completed/cancelled to the corresponding Task status values.
My Practice Now
Invoice
Twenty CRM
Opportunities
1:1Invoice records from My Practice Now translate to Twenty Opportunities. The invoice amount becomes the Opportunity amount, invoice date becomes the expected close date, and invoice status (paid/pending/overdue) maps to custom picklist values on the Opportunity record. The mapping preserves original invoice identifiers for audit trails.
My Practice Now
Client Note
Twenty CRM
Notes
1:1Notes attached to My Practice Now client records migrate as Twenty Notes linked to the corresponding People record. Original note timestamps and author information preserve for audit continuity. Rich-text formatting in My Practice Now notes converts to plain text in Twenty.
My Practice Now
Custom Field (Client)
Twenty CRM
Custom Field (People)
1:1Custom fields defined on My Practice Now client records require pre-creation in Twenty via the Metadata API before migration. Field types map to Twenty equivalents: text fields become STRING, pick-lists become SELECT, dates become DATE. The Metadata API endpoint POST /rest/metadata/objects/{objectName}/fields creates each field.
My Practice Now
Custom Field (Appointment)
Twenty CRM
Custom Field (Task)
1:1Appointment-specific custom fields such as appointment type, location, or practitioner notes migrate as custom fields on Twenty Tasks. These require provisioning via the Metadata API using POST /rest/metadata/objects/tasks/fields before the appointment-to-task translation runs. Field definitions include type, label, and optional picklist values for consistent data capture.
My Practice Now
Service/Product
Twenty CRM
Custom Object
1:1If My Practice Now tracks services or products separately, these map to a Twenty custom object (e.g., Services). The custom object definition is created via POST /rest/metadata/objects with the appropriate field schema before records load. Each field is defined with type, required flag, and display label for user-friendly UI rendering.
My Practice Now
Client Owner
Twenty CRM
WorkspaceMember
1:1My Practice Now user assignments on client records resolve by email match against Twenty WorkspaceMembers. Unmatched owners flag for admin review before migration — records can assign to a fallback WorkspaceMember or the owner can be invited to Twenty first.
My Practice Now
Attachment/File
Twenty CRM
Files (via URL)
1:1My Practice Now file attachments on client records do not transfer as native files. We preserve attachment URLs and file names in a custom text field on the People record so your team can re-upload files to Twenty's storage or an external system post-migration.
| My Practice Now | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client | People1:1 | Fully supported | |
| Client Company | Companies1:1 | Fully supported | |
| Appointment | Tasks1:1 | Fully supported | |
| Invoice | Opportunities1:1 | Fully supported | |
| Client Note | Notes1:1 | Fully supported | |
| Custom Field (Client) | Custom Field (People)1:1 | Fully supported | |
| Custom Field (Appointment) | Custom Field (Task)1:1 | Fully supported | |
| Service/Product | Custom Object1:1 | Fully supported | |
| Client Owner | WorkspaceMember1:1 | Fully supported | |
| Attachment/File | Files (via URL)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.
My Practice Now gotchas
Research data is sparse and often misattributed
Thinkific export scope determines what we can migrate
Content files require separate media migration
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
Audit My Practice Now data and provision Twenty schema
We extract a full data inventory from My Practice Now including all client records, appointment history, invoice data, and custom field definitions. Against this inventory, we provision the corresponding Twenty objects and custom fields via the Metadata API before any data loads. This includes creating any custom Opportunity stages needed for invoice data, custom fields on People and Tasks, and custom objects for service or product records.
Resolve owner and user mappings by email
My Practice Now practitioner and client owner assignments resolve by email match against Twenty WorkspaceMembers. We generate a pre-flight owner resolution report listing matched users and any unmatched owners. Your team either invites unmatched users to Twenty first or assigns records to a fallback WorkspaceMember. No record migrates without a valid Twenty owner assignment. This step ensures traceability of data ownership throughout the migration process and supports compliance with audit requirements.
Run sample migration with field-level diff
A representative slice of 100–500 records migrates first — covering clients, appointments, invoices, and notes. We generate a field-level diff between source values and destination fields so you can verify appointment-to-Task translation, invoice-to-Opportunity mapping, and owner resolution before the full run commits. This sample run surfaces any custom field gaps or mapping errors before they affect your full dataset. The diff report is delivered in CSV format for straightforward review.
Execute full migration with delta-pickup window
Full record migration loads into Twenty using the Core API (REST or GraphQL) for record creation. A delta-pickup window of 24–48 hours captures any records created or modified in My Practice Now during the cutover period. Audit logs record every operation, and a one-click rollback reverts the Twenty workspace to its pre-migration state if reconciliation reveals data integrity issues. Post-migration, we perform a final validation against source totals to confirm completeness.
Platform deep dives
My Practice Now
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 My Practice Now 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
My Practice Now: Not publicly documented at the individual storefront level; Thinkific generally applies org-level rate limits.
Data volume sensitivity
My Practice Now 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 My Practice Now to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your My Practice Now 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 My Practice Now
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.