CRM migration

Migrate from AllClients to Twenty CRM

Field-level mapping, validation, and rollback between AllClients and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

AllClients logo

AllClients

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between AllClients and Twenty CRM.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

AllClients stores contact data as a flat CSV export with Notes in a separate file, while Twenty CRM uses a relational data model where People and Companies are distinct objects linked by foreign keys. This structural difference means we cannot import AllClients contacts directly into Twenty without first establishing the Company-to-Person relationship that drives the CRM's pipeline views and activity attribution. We resolve that dependency during scoping, merge the Notes export into contact records, and preserve Tags as Twenty's native tag model. Workflow definitions and email marketing sequences do not migrate because AllClients does not expose execution state or cadence data via its export tools; we deliver a written map of every automation requiring rebuild in Twenty's workflow engine. The migration runs entirely over CSV because AllClients provides no bulk API endpoint, which constrains throughput on larger datasets but introduces no fundamental compatibility issue with Twenty's REST-based import pipeline.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

AllClients logo

AllClients

What's pushing teams away

  • Very low per-user ceiling — Premium caps at 2 users, and even Elite requires paid add-ons for additional seats, making the platform impractical as teams grow beyond a couple of people.
  • Add-on pricing stack accumulates quickly: contact count packs, email credit top-ups, SMS provider connection, and extra users can push a $24 base plan to $150+ monthly.
  • Limited third-party integrations beyond Gmail, Outlook, and Zapier — businesses with established tech stacks find AllClients difficult to connect to their existing tools.
  • The platform has not gained significant market traction (30k customers over 20 years is a small base), limiting the availability of community knowledge, plugins, and experienced consultants.
  • Advanced features like marketing automation, landing pages, and AI-powered features are gated behind the $48+ Premium tier, making the base tier feel underpowered for businesses ready to scale.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How AllClients objects map to Twenty CRM

Each row shows how a AllClients 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.

AllClients

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

AllClients Contact records map directly to Twenty Person records. We extract Contacts.csv from the Data Migration menu and import it via Twenty's REST API. The Person.CompanyId field is resolved by matching the AllClients contact's company name against Twenty Company records created in a prior pass. Any contacts whose company does not resolve are held for manual review rather than inserted without a link.

AllClients

Contact Notes

maps to

Twenty CRM

Comment

1:1
Mapping required

AllClients exports Notes as a separate Notes.csv file that is not joined to Contacts.csv. We run a join step using the contact's email address as the key to associate each note with its Person record in Twenty. If the email address changed between exports, we fall back to first and last name matching and flag unmatched notes in a reconciliation report. Notes migrate as Comment records on the Person object.

AllClients

Company

maps to

Twenty CRM

Company

1:1
Fully supported

AllClients Company property on the contact record maps to a separate Twenty Company object. We deduplicate company names during import using the domain as a secondary dedupe key. Company records are created before Person records so that the Person.CompanyId foreign key is satisfied at the time of Person insert. AllClients does not have a native Companies object; company data lives as a free-text property on each Contact row, so we deduplicate across all contacts to build the Company table.

AllClients

Custom Fields

maps to

Twenty CRM

Custom Fields

lossy
Mapping required

AllClients account-level custom fields map to Twenty custom fields defined in Settings → Data Model before migration. Each custom field definition is discovered during scoping, and the equivalent Twenty field is created with the matching type (text, number, date, select). Custom field values from the Contact CSV populate the corresponding Twenty custom field at import time.

AllClients

Tags

maps to

Twenty CRM

Tag

1:1
Fully supported

Tags applied to AllClients contacts are exported as comma-separated values within the contact record. We parse the tag string, create or match each tag in Twenty's Tag table, and create PersonTag records linking the Person to each Tag. Multi-value tag handling is direct since Twenty's tag model natively supports multiple tags per person.

AllClients

Groups / Workgroups

maps to

Twenty CRM

Workspace + Custom Field

1:1
Mapping required

AllClients Groups are logical contact collections with no independent export. We capture group membership by filtering contact exports by group and recreate each group as a custom multi-select picklist or a dedicated tag on the person record. For named groups with meaningful business context (e.g., VIP Clients, Referral Partners), we create a dedicated Workspace collection and document the membership list for manual enrollment or a post-migration bulk-tag script.

AllClients

Workflows

maps to

Twenty CRM

Workflow (rebuild required)

lossy
Mapping required

AllClients Workflow definitions are exported as inactive configuration templates. We document the trigger, conditions, actions, delays, and enrollment criteria for each active workflow and deliver a written inventory with recommended equivalents in Twenty's Settings → Workflows. Execution state and historical run data do not export; contacts already enrolled in AllClients workflows will not carry over their enrollment status.

AllClients

Email Templates

maps to

Twenty CRM

Not migrated

lossy
Fully supported

AllClients email templates are HTML blobs stored under Email Marketing. Twenty has no native email template library. We export email templates as HTML files and deliver them as an asset package for the customer to import into their chosen email platform (Klaviyo, Mailchimp, Postmark). No native email template migration occurs because the destination platform does not store them.

AllClients

Campaigns

maps to

Twenty CRM

Not migrated

lossy
Mapping required

AllClients Campaigns represent scheduled email sends linked to contact segments. Campaign history (send dates, open rates) is metadata rather than a discrete data object with a schema. We document campaign names and linked contact segments in a written handoff so the customer can recreate segments and schedule sends in their chosen email platform post-migration.

AllClients

Tasks / Follow-up Reminders

maps to

Twenty CRM

Task

1:1
Mapping required

AllClients tasks attached to contact records are exported as part of the contact export or as a separate task list. We import task titles, due dates, completion status, and assigned owner to Twenty Task records linked to the Person. Task assignment resolves by matching the AllClients user email to a Twenty workspace member.

AllClients

Users / Owners

maps to

Twenty CRM

WorkspaceMember

1:1
Mapping required

AllClients users are extracted from the user list (typically 1-2 on base plans). We map each user by email to the corresponding workspace member in Twenty. If a Twenty workspace member does not exist for a given user, we hold the OwnerId reference in a reconciliation queue for the customer's admin to provision the account before record import resumes.

AllClients

File Attachments

maps to

Twenty CRM

Attachment

1:1
Mapping required

Contact file attachments are downloaded from AllClients storage and re-uploaded as Twenty attachments linked to the Person record. Large binary files are chunked to avoid timeout during download. Attachment file names and upload timestamps are preserved where available from the AllClients export metadata.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

AllClients logo

AllClients gotchas

High

Contact count limits enforced as hard caps per tier

Medium

Notes export separately from main contact CSV

Medium

Workflows migrate as inactive templates only

Low

API rate limits are undefined and enforced at vendor discretion

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Notes export requires manual join to Contacts

    AllClients provides two distinct export functions: one for contact record fields and one for Contact Notes. The notes export produces a separate Notes.csv file that does not include the AllClients internal contact ID. We run a join step using the contact's email address as the key to associate each note with its Person record in Twenty. If a contact's email changed between exports, the join produces duplicates or misses associations. We flag these for manual review before committing the Comment records. This step adds a processing pass not present in most CRM-to-CRM migrations and must be accounted for in scoping.

  • No bulk API constrains throughput

    AllClients provides no bulk API. All data extraction relies on CSV export from the Data Migration menu. For large datasets above 10,000 contacts, the CSV export and re-import process requires batched handling and careful validation to avoid duplicates. Twenty's REST API handles the import side without throughput issues, but the source-side extraction is limited by browser-export speed and the size of the resulting CSV files. We chunk large exports and validate row counts at each stage.

  • Company name is a free-text property with no dedupe guarantee

    AllClients does not have a native Companies object. Company data exists as a free-text property on each Contact record. When multiple contacts reference the same company with slightly different spellings (e.g., Acme Corp vs. Acme Corporation vs. ACME), we deduplicate using the domain name as a secondary key where available. For contacts without a domain, we apply a fuzzy match threshold and flag uncertain merges for customer approval before creating the Company record.

  • Workflows migrate as inactive templates only

    AllClients does not expose workflow execution state, historical run data, or enrollment status via its export tools. We capture workflow definitions (triggers, conditions, actions, delays) as an inactive template inventory. Contacts already enrolled in active AllClients workflows will not carry over their enrollment status. We notify customers of this gap and recommend re-enrolling high-priority contacts post-migration or using the workflow inventory document to configure equivalent automation in Twenty's workflow engine.

  • Twenty's /metadata API has known issues in multiworkspace mode

    The Twenty REST API endpoint /rest/metadata/objects is documented to return HTTP 500 errors when IS_MULTIWORKSPACE_ENABLED is set to true in self-hosted deployments. During migration scoping, we confirm whether the destination Twenty instance runs in multiworkspace mode. If it does, we bypass metadata discovery via that endpoint and use Twenty's schema export feature or direct field-level API calls to enumerate available objects and fields. Standard single-workspace instances are unaffected.

Migration approach

Six steps for a successful AllClients to Twenty CRM data migration

  1. Discovery and scoping

    We extract AllClients Contacts.csv, Notes.csv, and the user list from the Data Migration menu. We inventory all custom field definitions by inspecting the Contact CSV headers and cross-referencing with the UpdateCustomFields API. We count distinct company names across all contact rows and assess tag variety. We capture the active workflow list (names, triggers, and action sequences) from the Workflows section. We confirm the target Twenty instance configuration (self-hosted vs. Cloud, single vs. multiworkspace) and enumerate the existing schema. The discovery output is a written scope document covering record counts, field mapping matrix, join logic for Notes, company dedupe strategy, and the workflow inventory.

  2. Notes join and data cleansing

    We run the Notes-to-Contact join using email address as the primary key. Contacts with unmatched notes (email changed or notes orphaned) are written to a reconciliation report for customer review. We apply company name normalization across all contact rows (trim whitespace, standardize legal entity suffixes like Inc., LLC, Corp.) to build a deduplicated Company table. We flag duplicate contacts (identical email) and either merge or flag per customer instruction. Custom field values are validated for type consistency (dates in ISO format, numbers numeric, select values within expected range).

  3. Schema preparation in Twenty

    We create any custom objects and fields in Twenty via Settings → Data Model before data import. Custom fields from AllClients are mapped to their Twenty equivalents with matching types. If the destination Twenty instance is self-hosted, we verify multiworkspace status and adjust metadata discovery accordingly. Company records are created first using the deduplicated company table, with the domain name used as a secondary dedupe key where available. This establishes the Company table that Person records will reference.

  4. Person import with company resolution

    We import AllClients contacts as Twenty Person records, resolving Person.CompanyId by matching the normalized company name from each contact row against the Company table created in the prior step. OwnerId resolves via email match against Twenty workspace members. Tags are parsed from the contact field and PersonTag records are created. Any contacts whose company does not resolve are held with a placeholder company or flagged for manual company creation. Each import batch emits a row-count reconciliation report.

  5. Notes and activity import

    Comment records are created by joining the cleaned Notes data to Person records by the resolved Person ID. Tasks are imported as Twenty Task records linked to the owning Person. File attachments are downloaded from AllClients storage and re-uploaded to Twenty. Groups from AllClients are recreated as tags or custom fields on the Person records per the customer's chosen grouping strategy documented during scoping.

  6. Cutover, validation, and handoff

    We freeze writes to AllClients during the cutover window, run a final delta pass for any records modified during migration, and confirm the final row counts in Twenty. We deliver the workflow and automation inventory document with recommended Twenty equivalents for each AllClients workflow. We do not rebuild AllClients workflows as Twenty automations inside the migration scope. We support a five-business-day post-cutover window to resolve data discrepancies identified by the customer's team. Admin training on Twenty's Settings workflow builder is outside scope and can be arranged separately.

Platform deep dives

Context on both ends of the pair

AllClients logo

AllClients

Source

Strengths

  • Integrated CRM and email marketing in a single subscription without requiring separate tools
  • Simple CSV-based export and import process gives customers direct access to their data
  • White Label program for agencies and consultants who want to rebrand the platform for their clients
  • Low-cost entry tier makes it viable for independent consultants and very small businesses
  • Responsive US-based support cited positively in user reviews

Weaknesses

  • Aggressive per-seat and per-contact pricing caps that drive add-on costs as teams grow
  • No documented bulk API — all migration relies on CSV export/import, limiting throughput for large datasets
  • Workflow engine is opaque and cannot export execution state or historical run data
  • Small market footprint means limited community resources, third-party plugins, and developer ecosystem
  • Landing pages, forms, and some automation features are gated behind higher tiers with no API access
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across AllClients and Twenty CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    AllClients: Not publicly documented — platform reserves the right to limit usage at discretion.

  • Data volume sensitivity

    B

    AllClients doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your AllClients to Twenty CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about AllClients to Twenty CRM data migrations

Answers to the questions buyers ask most during AllClients to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your AllClients to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most AllClients to Twenty migrations complete in two to three weeks for datasets under 10,000 Contacts with no complex custom field schemas. Migrations with large Notes exports requiring join processing, extensive company name normalization, or multiple AllClients Groups to recreate as collections move to four to six weeks. The timeline depends on the data quality of the source AllClients export and the customer's availability to approve the Notes reconciliation and company merge decisions during scoping.

Adjacent paths

Related migrations to explore

Ready when you are

Move from AllClients.
Land in Twenty CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day