CRM migration
Field-level mapping, validation, and rollback between AddressTwo and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
AddressTwo
Source
Twenty CRM
Destination
Compatibility
11 of 12
objects map 1:1 between AddressTwo and Twenty CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from AddressTwo to Twenty CRM is a platform upgrade from a flat-rate small-business CRM to a self-hostable open-source alternative built as a modern replacement for Salesforce. AddressTwo stores company information as fields on the Contact record rather than as a separate object; we extract those fields during migration and reconstruct Organizations in Twenty, then resolve the Contact-to-Person lookup relationship. The AddressTwo v2.0 API is not self-service — an approved key must be obtained by emailing support — which determines whether we extract via API or via a support-assisted CSV export. Activity history (calls, emails, tasks) migrates as timeline entries on the corresponding Person record in Twenty. Workflows, automations, and mass-email campaign logic do not migrate as code; we deliver a written inventory of every automation requiring rebuild in Twenty's workflow builder. We do not provide post-migration admin support or training as standard scope.
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 AddressTwo 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.
AddressTwo
Contact
Twenty CRM
Person
1:1AddressTwo Contacts map directly to Twenty CRM Persons. Every Contact field (name, email, phone, address, company, tags, custom properties) maps to the corresponding Person field. We run a de-duplication pass before import to catch any duplicate Contact records created by the BCC email sync feature known to generate double entries.
AddressTwo
Company (field on Contact)
Twenty CRM
Organization
1:manyAddressTwo stores company information as fields on the Contact record rather than as a separate object. We extract the company name, website, and address fields from every Contact, build a distinct Organization record for each unique company name, and resolve the Person-to-Organization lookup relationship at migration time. Contacts without a company name receive no Organization link.
AddressTwo
Deal
Twenty CRM
Opportunity
1:1AddressTwo Deals map to Twenty CRM Opportunities. We preserve the deal name, amount, stage, close date, owner assignment, and any associated Contact. Pipeline information from AddressTwo maps to Opportunity stage configuration in Twenty. We flag any pipeline custom field values that lack a direct Twenty stage equivalent for customer review.
AddressTwo
Activity (call)
Twenty CRM
Activity (event)
1:1AddressTwo call activities map to Twenty Activities with type = CALL. The timestamp, duration, notes, and owner migrate to the corresponding Person record's activity timeline. We set the activity type to CALL so it renders in the correct timeline section in Twenty's UI.
AddressTwo
Activity (meeting)
Twenty CRM
Activity (event)
1:1AddressTwo meeting activities map to Twenty Activities with type = MEETING. Subject, date, location (if present), and notes migrate directly. Owner assignment resolves via the Owner-to-User email mapping table.
AddressTwo
Activity (email)
Twenty CRM
Activity (event)
1:1AddressTwo email activities from the BCC-auto-populated thread map to Twenty Activities with type = EMAIL. The subject, body text, and timestamp migrate to the Person's activity timeline. Note that the flattened conversation thread stores as a single activity entry per imported email rather than a threaded view.
AddressTwo
Activity (task)
Twenty CRM
Activity (task)
1:1AddressTwo task activities map to Twenty Activities with type = TASK. Status (completed, pending), subject, due date, and notes migrate directly. Open tasks inherit the original due date; completed tasks preserve completion status.
AddressTwo
Note
Twenty CRM
Comment
1:1AddressTwo free-text notes attached to a Contact migrate as Comments on the corresponding Person record in Twenty. Note body migrates verbatim as the comment text. Notes are not structured objects so they carry no field-level mapping beyond the text body.
AddressTwo
Tag/Label
Twenty CRM
Tag
1:1AddressTwo contact tags migrate as Tags in Twenty CRM. Tags are stored as a flat array on each Person record. The tag names pass through verbatim; no transformation is applied. Tags used for segmentation map to Twenty's tag system with no loss of labeling information.
AddressTwo
Mass Email Campaign Membership
Twenty CRM
Target (with campaign label)
1:1AddressTwo campaign membership — which Contacts were sent a given mass email — migrates as a tag on the Person record with the campaign name as the tag value. Campaign-level analytics (open rates, click rates, bounce counts) are not exported from AddressTwo and cannot be migrated; we flag this gap in the delivery report.
AddressTwo
Custom Field (Contact)
Twenty CRM
Custom Field (Person)
1:1AddressTwo custom fields on Contacts (such as birthday, spouse, referred_by, lead_source) map to Twenty CRM custom fields on the Person object. We create the custom field in Twenty before migration, match the field type (text, date, number, checkbox), and migrate values directly. Any custom field without a clear Twenty equivalent is flagged for customer review.
AddressTwo
Custom Field (Deal)
Twenty CRM
Custom Field (Opportunity)
1:1AddressTwo custom fields on Deals migrate to Twenty CRM custom fields on the Opportunity object. The same field-type matching logic applies. We flag any Deal custom fields that reference AddressTwo-specific objects (such as the QuickBooks invoice reference, which AddressTwo does not natively integrate) for customer review.
| AddressTwo | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company (field on Contact) | Organization1:many | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Activity (call) | Activity (event)1:1 | Fully supported | |
| Activity (meeting) | Activity (event)1:1 | Fully supported | |
| Activity (email) | Activity (event)1:1 | Fully supported | |
| Activity (task) | Activity (task)1:1 | Fully supported | |
| Note | Comment1:1 | Fully supported | |
| Tag/Label | Tag1:1 | Fully supported | |
| Mass Email Campaign Membership | Target (with campaign label)1:1 | Fully supported | |
| Custom Field (Contact) | Custom Field (Person)1:1 | Fully supported | |
| Custom Field (Deal) | Custom Field (Opportunity)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.
AddressTwo gotchas
API requires approved key obtained via email to support
No self-service data export or bulk download
Duplicate contact creation during email sync
QuickBooks integration does not exist
No formally documented API rate limits
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
Data export and scoping
We contact AddressTwo support on the customer's behalf to request an API key and a full account data export. We audit the export scope — confirming which objects (Contacts, Deals, Activities, Notes) are included and which custom fields are present — and compare against what we can retrieve programmatically if the API key is granted. We run a row-count reconciliation across all objects and identify any gaps (typically missing activity history or attachments). The scoping output is a written data inventory and a recommendation on extraction method (API or CSV-assisted).
Twenty workspace preparation
We configure the Twenty CRM destination workspace before any data arrives. This includes creating all required custom fields on Person and Opportunity objects, setting up Organization records if any exist in the initial workspace, configuring Opportunity pipeline stages to match AddressTwo's stage names, and verifying timezone and currency settings. If the customer is self-hosting Twenty, we confirm the self-hosted instance is provisioned and the API endpoint is accessible before migration scripts are written.
Company data extraction and Organization reconstruction
We extract the company name, website, and address fields from every AddressTwo Contact record and build a deduplicated Organization list. Each unique company name becomes one Organization record in Twenty. We then link each Person record to the corresponding Organization via the Person's companyId field. This step runs as a pre-import transform so that Organization records exist before Person records are loaded, satisfying the foreign key constraint. We validate the Organization count against the customer's expected count and reconcile any Contacts with no company name (which receive no Organization link).
De-duplication pass and data quality
Before importing Contact records into Twenty, we run a fuzzy de-duplication pass on the exported Contact dataset. We match on email address as the primary key and on company name as a secondary signal to catch any duplicate records that originated from AddressTwo's BCC sync behavior. We also flag Contacts with missing required fields (no email, no name) for customer review and correction before import. This step prevents duplicate Person records from entering Twenty and avoids broken Organization linkages.
Production migration in dependency order
We run production migration in record-dependency order: Organizations (from the extracted company list), Persons (with OrganizationId resolved), Opportunities (with PersonId and OwnerId resolved), and Activities (as timeline entries on each Person). Custom fields migrate last after the base object schema is validated. Each phase emits a row-count reconciliation report and we run a spot-check of 25-50 records against the AddressTwo source before advancing to the next phase. Owner resolution happens via email mapping; any Owner without a matching Twenty user is held in a reconciliation queue for the customer's admin to provision before record import resumes.
Cutover, delta sync, and delivery handoff
We freeze AddressTwo writes during the cutover window, run a final delta migration of any records modified during the migration, and verify the row counts match between AddressTwo source and Twenty destination across all objects. We deliver the full migration report including record counts, mapping decisions, any unmapped fields flagged for customer review, and the written automation inventory for the customer's admin to rebuild in Twenty's workflow builder. We support a 48-hour hypercare window for reconciliation issues raised by the customer's team.
Platform deep dives
AddressTwo
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 AddressTwo and Twenty CRM.
Object compatibility
3 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
AddressTwo: Not publicly documented.
Data volume sensitivity
AddressTwo 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 AddressTwo to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your AddressTwo 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 AddressTwo
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.