CRM migration
Field-level mapping, validation, and rollback between Act! and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Act!
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Act! and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Twenty CRM is the open-source destination of choice for Act! tenants who want a modern UI with self-hosting flexibility — particularly Act! Premium Desktop users replacing one on-premise system with another. Twenty's data model is intentionally flexible: standard objects (Person, Company, Opportunity) ship out of the box but every object's schema is editable per workspace via the metadata API. This makes Act! Custom Table migration cleaner than most destinations because Twenty's Custom Objects are first-class with full UI editing support (unlike HighLevel's API-only Custom Objects or Nutshell's lack of Custom Objects entirely). The interesting work is in deployment-mode planning: Twenty Cloud handles SaaS users; self-hosted Twenty requires the customer's team to manage Postgres + Node + Redis, which is a meaningful engineering commitment. We support both paths during migration.
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 Act! 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.
Act!
Contact
Twenty CRM
Person
1:1Act! Contacts map to Twenty People. Email primary identifier.
Act!
Company
Twenty CRM
Company
1:1Act! Companies map to Twenty Companies with Person → Company association.
Act!
Opportunity
Twenty CRM
Opportunity
1:1Act! Opportunities map to Twenty Opportunities with stage and amount preserved.
Act!
Opportunity Product
Twenty CRM
Custom Object: OpportunityProduct or serialized note
lossyTwenty doesn't ship a standard OpportunityProduct object. We create a Custom Object linked to Opportunity via foreign key, or serialize products as a JSON note depending on customer requirements.
Act!
Activity (Meeting / Call / Task)
Twenty CRM
Task or custom Activity object
1:1Twenty has a Task object; richer activity classification (Meeting vs Call vs Task) uses a Type field or a separate Custom Object per type if needed.
Act!
History
Twenty CRM
Note or closed Task
1:1Completed History items map to Notes or closed Tasks with original timestamps preserved via the createdAt field on insert.
Act!
Note
Twenty CRM
Note
1:1Act! Notes attach to Person/Company/Opportunity with author and timestamp preserved.
Act!
Group (Static)
Twenty CRM
View Filter or custom Tag object
lossyTwenty's segmentation uses View Filters (saved query criteria) or a custom Tag object linked to People/Companies. Decision during scoping based on use pattern.
Act!
Custom Table
Twenty CRM
Custom Object
lossyTwenty's first-class Custom Objects accept Act! Custom Table schemas cleanly. Deployed via the metadata API before record load.
Act!
Document
Twenty CRM
Attachment
1:1Documents upload as Twenty Attachments linked to parent records. Storage configuration depends on Twenty deployment (Cloud handles storage; self-hosted requires S3 or local filesystem config).
| Act! | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Opportunity Product | Custom Object: OpportunityProduct or serialized notelossy | Fully supported | |
| Activity (Meeting / Call / Task) | Task or custom Activity object1:1 | Fully supported | |
| History | Note or closed Task1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Group (Static) | View Filter or custom Tag objectlossy | Fully supported | |
| Custom Table | Custom Objectlossy | Fully supported | |
| Document | Attachment1: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.
Act! gotchas
Act! Premium Desktop and Cloud use different export paths and cannot share a single migration script
Act! Custom Tables (v18+) have no standardized schema across customers
Activity Series (recurring activities) explode into thousands of occurrences
Act! Marketing Automation campaign history is in a separate database
Act! contact layouts can hide fields without dropping them from the schema
Document attachments in Act! Desktop are file-system pointers, not blobs
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 + deployment mode
Confirm Act! deployment, decide Twenty Cloud vs self-hosted. For self-hosted: capture infra requirements and assist with initial setup.
Twenty pre-flight
Deploy Custom Objects for Custom Tables via metadata API, configure Opportunity stages enum, design View Filters for Group equivalents, set up attachment storage.
Sample + customer review
200 People, 50 Companies, 30 Opportunities, 100 Tasks. Customer reviews on Cloud or self-hosted instance.
Full extraction + Document download
Bulk Act! extraction. Documents prepared for attachment upload.
Full load via REST + GraphQL APIs
Companies → People → Opportunities → Tasks → Notes → Attachments → Custom Object records. Field-level diff.
Cutover + decommission
Delta sync. Reps switch to Twenty. Act! read-only for safety.
Platform deep dives
Act!
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Act! and Twenty CRM.
Object compatibility
1 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
Act!: Not publicly documented for Cloud; Desktop is limited only by the customer's SQL Server and IIS capacity.
Data volume sensitivity
Act! 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 Act! to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Act! 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 Act!
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.