How to Migrate From HubSpot to Twenty CRM
Step by step HubSpot to Twenty CRM migration: what exports cleanly, what does not, import order and CSV limits, email reconnect, real cost math for a 20 seat team, and when staying on HubSpot is right.

Moving a sales team off HubSpot onto Twenty CRM takes one to two weeks of focused work, and the data side is easier than most teams expect. HubSpot exports companies, contacts and deals cleanly to CSV, Twenty imports them in a defined order, and the two things that genuinely need planning are your activity history and your automations. This guide walks the full path: audit, export, workspace prep, import, email reconnect, and the cost math, with the limits stated plainly.
What actually moves and what does not
Twenty's own migration guide reduces any CRM to five object types: Accounts become Companies, Contacts become People, Deals become Opportunities, Activities become Tasks or Notes, and custom objects map to custom objects. For a standard HubSpot sales setup the mapping is close to one to one.
What moves cleanly:
- Companies with domains, addresses, industry and employee counts.
- Contacts with emails, phones, job titles and their company links.
- Deals with amounts, stages, close dates and owner references.
- Custom fields, recreated in Twenty first, then filled by import.
- Custom objects, rebuilt in the data model, then imported last.
What does not move, and needs a decision:
- Email and call history. HubSpot's standard record export gives you current property values and associations, not the activity timeline. Activities come out through individual contact exports, certain activity reports, or the engagements API, per HubSpot's export documentation. Most teams skip bulk activity migration and rebuild timelines by reconnecting mailboxes in Twenty instead.
- Workflows, sequences and playbooks. These are logic, not data. Twenty's documentation is blunt: views, workflows and permissions must be recreated manually after migration.
- Reports and dashboards. Same story. Recreate the handful people actually open.
- Marketing assets. Landing pages, forms, email templates and lists live in Marketing Hub and have no Twenty equivalent. If marketing runs on HubSpot, that is a separate project.
Step one: audit before you export
Migration is the cheapest data cleanup you will ever get. Twenty's guide suggests keeping active contacts and companies, open deals, notes that matter and custom fields people actually use, and leaving behind contacts with no activity in two or more years, duplicates, test records and unused fields.
Two checks worth doing inside HubSpot before anything leaves:
- Duplicate companies by domain. Sort by company domain, merge or delete. Twenty uses the domain as the default unique key for companies, so duplicates in HubSpot become import conflicts in Twenty.
- Owner hygiene. Twenty maps owner references to workspace members, and its docs tell you to invite every team member before importing, because relations to users who do not exist yet cannot be mapped.
Step two: export your HubSpot data
In HubSpot, go to CRM, then Companies, Contacts and Deals in turn, open the All records view, and export each object as CSV. You need export permissions on your HubSpot user. Two habits save pain later:
- Export every property you might want, not just the default view columns. Re-exporting later means another round of cleaning.
- Keep one untouched copy of each raw export. Do all cleaning on a working copy.
- Export associations with the records. When you export contacts, include the associated company, because that column is how you rebuild the relation on import. Match people to companies by domain rather than by company name wherever possible: names drift between systems, domains do not.
HubSpot's export documentation confirms the important limit: record exports carry current values and associations only. Calls, notes and emails need the engagements API or per-contact exports. If your compliance setup requires the full activity archive, budget for an API export script. Otherwise plan to rebuild history through mailbox sync in step five, and keep the old portal read-only for a while.
Step three: prepare the Twenty workspace
Order matters here, and this is where failed imports are actually lost.
- Create fields first. Twenty's CSV import creates records, not fields. Every custom field must exist under Settings, then Data Model, before you upload anything, with the right type, select options and unique or required flags.
- Invite the whole team. Settings, then Members. Everyone must accept their invitation before import, so owner columns resolve to real users.
- Build pipelines. Recreate deal stages to match your HubSpot pipeline names, or decide the new stage names now and translate during data cleaning.
- Decide cloud or self-host. Twenty Cloud Pro is $9 per user per month billed yearly, and the Organization tier at $19 adds SSO and row-level permissions. Self-hosting is free under the AGPLv3 license, with a small set of enterprise-marked files under commercial terms, and runs on Docker Compose. The project is actively developed: over 58,000 stars on GitHub, with release v2.45.0 shipped in early October 2026. Setup, backups and updates are covered in our guide to self-hosting Twenty CRM.
Step four: import in dependency order
The import rules come straight from Twenty's data migration documentation:
- 10,000 records per CSV file. Split bigger exports into chunks, or use the API, which has no volume limit. Cloud API rate limits are 50 calls per minute on Pro and 100 on Organization, so a very large dataset is a script that runs for hours, not minutes.
- One object type per file, as CSV, XLSX or XLS.
- Import order: Companies, then People, then Opportunities, then custom objects last. The one side of a one-to-many relation must exist before you can reference it.
- Relations resolve through unique fields: record id, email for people and workspace members, domain for companies, or any field you marked unique in the data model.
- Deleted records still count. Soft-deleted records are included in uniqueness checks, and importing a row with the same unique value restores the deleted record. Empty the trash before a clean re-import.
A procedure that survives contact with real data:
- Import a 50-row sample of each object into a test workspace. Check field types, date formats, currencies and select values.
- Fix the mapping document, not just the data. You will rerun this.
- Run the full import in dependency order, checking record counts after each file against the HubSpot export row counts.
- Spot-check twenty records per object against their HubSpot counterparts, side by side.
- Only then hand the workspace to the team.
Once the records are in, an AI agent can backfill gaps the export left behind, such as industries, employee counts and company descriptions. We covered that workflow in AI agent for CRM enrichment.
Step five: reconnect email and calendar
This is how the activity timeline comes back. Each user connects their Google or Microsoft account under Settings, then Accounts, chooses which folders to sync and what teammates can see, and Twenty starts importing. Per Twenty's calendar and email docs, email sync runs at roughly 400 messages per minute because of Gmail API rate limiting, so a 10,000-message mailbox takes about 25 minutes. Calendar sync finishes in minutes.
Emails auto-link to the people and companies you imported, which is why mailbox sync goes after the data import, not before. Worth knowing:
- Unlimited mailboxes per user, each with its own visibility and folder settings.
- Aliases that forward to another mailbox cannot be connected separately. They sync through the main mailbox.
- Sync is not history migration. Twenty imports what is in the mailbox. Email older than your retention, or stored only inside HubSpot, stays behind unless you exported it through the engagements API.
- If you self-host, sync runs through background jobs in the worker container; the self-hosting guide linked above covers that setup.
The cost math for a 20 seat team
Worked example, annual billing, prices from the vendor pages in October 2026. We published the full comparison in Twenty CRM vs HubSpot: real cost for a 20-person sales team; the short version:
HubSpot repriced Sales Hub downward in 2026, so older comparisons overstate the gap. Per its pricing page, billed annually:
- Sales Hub Professional: $57 per seat per month, down from $95 earlier in the year. Twenty seats cost $1,140 per month, or $13,680 per year. Monthly billing costs more.
- Add Marketing Hub Professional at $800 per month, which includes 3 core seats and 2,000 marketing contacts with extra seats at $45, plus a $3,000 one-time onboarding fee, and year one lands around $26,300.
- Sales Hub Enterprise at $98 per seat would put the same team at $23,520 per year for sales alone.
Twenty side:
- Cloud Pro: $9 per user per month. Twenty seats cost $180 per month, or $2,160 per year.
- Self-hosted: the license is free; you pay for a VPS, backups and maintenance time. We broke down server sizing in Self-Hosting Your Business Stack: Server Sizes and Real Costs.
The gap, roughly $11,500 per year for sales alone and around $24,000 with Marketing Hub in the picture, is what funds the migration project plus the first year of someone managing the stack. HubSpot's price cut narrowed the difference, but it did not close it. The pattern holds across the whole SaaS stack, as we covered in the real cost of replacing SaaS with an open source stack.
When you should not migrate
Honest cases where staying on HubSpot is the right call:
- Marketing runs the company. If lead capture, nurture, attribution and landing pages all live in HubSpot, Twenty replaces only the sales CRM, and you keep paying for Marketing Hub anyway.
- You depend on sales automation depth. Twenty has workflows, but HubSpot's sequences, playbooks and reporting are more mature. If reps live inside sequences every day, test Twenty's equivalent with real deals before committing.
- Nobody will own the system. Self-hosting without a named owner for updates and backups is how CRMs die. Assign an owner or pay for managed hosting.
- Heavy marketplace reliance. Native integrations for CPQ, telephony or commission software are HubSpot's strong suit. Twenty connects through its API, webhooks and MCP server, or through workflow automation with n8n or Make, which covers most cases but is still glue you maintain.
Common mistakes that break CRM migrations
- Importing before fields exist. The import creates records, not fields. Unmapped columns are skipped, quietly.
- Importing people before companies. Relation references fail. The order is companies, people, opportunities, custom objects.
- Forgetting soft-deleted records. Uniqueness checks include the trash, and a re-import can resurrect or collide with deleted rows.
- Skipping the sample import. Fifty rows in a test workspace catch broken date formats and select values before 50,000 rows do.
- Cancelling HubSpot on cutover day. Keep the old portal read-only for at least a month. Someone always needs one field nobody mapped.
- Recreating every workflow. Rebuild the five automations people rely on. The other forty were not earning their keep.
- Migrating marketing and sales in one project. Sequence them: sales data first, marketing platform decision second.
Frequently asked questions
Can I migrate my HubSpot email history to Twenty? Not through the standard export. HubSpot record exports carry current property values; emails, calls and notes require the engagements API or per-contact exports. Most teams reconnect mailboxes in Twenty and let sync rebuild timelines on top of the imported contacts instead.
How long does a HubSpot to Twenty migration take? For a team of 10 to 30 with reasonably clean data, one to two weeks: two or three days for audit and export, a few days for workspace setup and test imports, then a cutover week with parallel running. API-scale datasets add time.
What is the CSV import limit in Twenty? 10,000 records per file, one object type per file. The API has no volume limit but is rate limited to 50 or 100 calls per minute on cloud plans, depending on tier.
Is Twenty really free? Self-hosted Twenty is free under the AGPLv3 license, with a small number of enterprise-marked files under commercial terms. Twenty Cloud starts at $9 per user per month billed yearly.
Does Twenty replace HubSpot Marketing Hub? No. Twenty is a sales CRM with workflows. Newsletters and marketing automation need a separate tool, which is a deliberate trade: you swap an all-in-one suite for a composable stack.
Should we run both systems in parallel? Yes. Cut the team over, keep HubSpot read-only for at least 30 days, verify nothing is missing, then cancel. One extra month of subscription buys a clean exit.
Where to go from here
If the cost math works and the limits above are acceptable, the migration itself is a contained project: a careful export, a disciplined import and a week of parallel running. It is the same playbook we apply when we deploy and manage Twenty for teams as part of our managed open source stack. Start with the audit. It tells you within a day whether your migration is a weekend job or a month.
Related reading
About AI Agents Plus Editorial
AI automation expert and thought leader in business transformation through artificial intelligence.



