CRM migration

Migrate from Agent Legend to Twenty CRM

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

Agent Legend logo

Agent Legend

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Agent Legend and Twenty CRM.

Complexity

BStandard

Timeline

24–72 hours of active migration time

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Agent Legend organizes its real estate CRM around Contacts, Companies, Deals, and Campaigns with an AI-powered lead scoring engine (Lily) that ranks prospects against 1,600+ third-party data points and 270 million U.S. adult profiles. The platform tracks outreach across email, SMS, and voice through campaign members, and integrates with 500+ tools including Zillow, Follow Up Boss, and Zapier. Twenty CRM uses a simpler object model: People for contacts, Companies for organizations, Opportunities for deals, plus Notes and Tasks for activity tracking. Custom objects are supported (up to 10 on Pro, unlimited on Organization). This migration carries everything Agent Legend stores natively — contacts, companies, deals, campaign membership, Lily lead scores, activities, and custom fields — into Twenty's object graph. The primary translation challenges are mapping Agent Legend's campaign and outreach data to Twenty's Activity model, preserving Lily lead scores as custom Number fields, and handling Agent Legend's N:N contact-to-company relationships within Twenty's relational structure. FlitStack sequences the migration so Companies load before People (required by the companyId foreign key), then Opportunities last, and surfaces your Agent Legend automation logic for manual rebuild in Twenty's no-code workflow builder. File attachments require separate re-upload since Agent Legend's CSV export does not include binary files.

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

Agent Legend logo

Agent Legend

What's pushing teams away

  • The per-contact pricing model ($0.40/contact) becomes expensive at scale as contact databases grow into the thousands, with no flat-rate unlimited tier available.
  • Lily AI features (lead scoring, data enrichment) are proprietary and do not export with contact records, meaning migration means losing the intelligence layer built over years.
  • Steep learning curve around campaign setup, Circle Prospecting configuration, and CRM integration workflows frustrates agents who expect faster time-to-value.
  • Limited multi-user collaboration features on lower tiers, with seat-based pricing creating friction for teams that need shared inbox or role-based access controls.
  • Customer support responsiveness is inconsistent, with some users reporting delayed responses when integration or billing issues arise.

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 Agent Legend objects map to Twenty CRM

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

Agent Legend

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Agent Legend Contact maps 1:1 to Twenty People. All standard contact fields (name, email, phone, address, job title) transfer directly. Owner assignment resolves by email match to a Twenty workspace member — unmatched owners are flagged before migration so the team can invite them or assign a fallback owner before records land.

Agent Legend

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Agent Legend Company maps to Twenty Company. Company name, domain, industry, employee count, and revenue fields transfer directly. Agent Legend parent-company hierarchies map to the Twenty Company relation field where available. Multiple company associations per contact are surfaced post-migration for manual linking.

Agent Legend

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Agent Legend Deals map to Twenty Opportunities. Deal name, amount, stage, and expected close date map to Opportunity fields. Deal stage values are mapped via value-mapping since Twenty's Opportunity stage pick-list is configurable. Deal owner resolves via email match to Twenty workspace member.

Agent Legend

Campaign

maps to

Twenty CRM

Custom Object (Campaign)

1:1
Fully supported

Agent Legend Campaign has no native equivalent in Twenty's standard object model. We create a Campaign custom object in Twenty during schema setup with fields for name, type, status, start date, and end date. Campaign metadata migrates as records in this custom object. This is the foundation for campaign-level reporting in Twenty.

Agent Legend

Campaign Member

maps to

Twenty CRM

Custom Junction Object (CampaignMember)

1:1
Fully supported

Campaign membership links a Contact to a Campaign with a status field. Twenty has no built-in membership tracking. We create a CampaignMember junction object that links People records to Campaign custom object records using email as the unique identifier. This preserves the many-to-many relationship from Agent Legend.

Agent Legend

Lily Lead Score

maps to

Twenty CRM

Custom Number field (Lead_Score__c) on People

1:1
Fully supported

Agent Legend's Lily AI lead score (integer 0–100) has no native equivalent in Twenty. We create a custom Number field called Lead_Score__c on the People object during schema setup. Lily scores populate during migration, and teams can use this field in Twenty's filter views, kanban grouping, and API exports. This preserves the prioritization signal built in Agent Legend.

Agent Legend

Activity (Email, SMS, Call log)

maps to

Twenty CRM

Task

1:1
Fully supported

Agent Legend logs outreach activities (email, SMS, call) on contact records with original timestamps and owners. We map these to Twenty Tasks with Task Type pick-list values (Email, Call, SMS) so the outreach history is searchable in Twenty. Each Task is linked to the People record via the relation field. Note that Twenty's activity tracking is manual by default — new outreach must be logged by users or via API.

Agent Legend

Note / Attachment

maps to

Twenty CRM

Note

1:1
Fully supported

Agent Legend notes on contacts and companies migrate to Twenty's Note object. We map the note body directly. File attachments are not included in Agent Legend's CSV export — we document which records had attachments so the team can re-upload them post-migration. Large attachment volumes may require a separate file transfer step via API.

Agent Legend

Custom Field (any object)

maps to

Twenty CRM

Custom Field on corresponding object

1:1
Fully supported

Agent Legend custom fields on Contacts, Companies, Deals, or any custom object map to Twenty custom fields. We create matching custom fields in Twenty's data model before migration, matching field types (text, number, date, select, multi-select). Select and multi-select fields preserve the value list from Agent Legend. Teams should review custom field usage during scoping to decide which fields are worth migrating.

Agent Legend

User / Owner

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Agent Legend users and owners are matched to Twenty workspace members by email address. We run an email lookup against the Twenty workspace during migration. Unmatched owners are flagged in the migration report — the team either invites them to Twenty first or assigns their records to a fallback owner. No record lands without a valid Twenty owner assignment.

Agent Legend

Tag / Label

maps to

Twenty CRM

Custom select field on People

1:1
Fully supported

Agent Legend tags on contacts (e.g., 'Hot Lead', 'Investor', 'Past Client') have no native equivalent in Twenty. We map these to a custom select field (Contact_Tags__c) on the People object. Teams can consolidate overlapping tags or rename them during migration planning to reduce the pick-list size in Twenty.

Agent Legend

Pipeline (Deal Group)

maps to

Twenty CRM

Twenty pipeline view / Opportunity stage grouping

1:1
Fully supported

Agent Legend pipelines group deals by stage. Twenty uses Opportunity stage values and kanban grouping to represent pipeline views. We map each Agent Legend pipeline to a set of Opportunity stage values in Twenty. Stage probability and order are preserved as custom fields if the team uses them for forecasting. Pipeline configuration is rebuilt in Twenty's kanban UI post-migration.

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.

Agent Legend logo

Agent Legend gotchas

High

Lily AI scores do not export from Agent Legend

High

CRM integration tokens and OAuth connections do not transfer

Medium

Contact-level per-message pricing creates billing risk on high-volume imports

Medium

Custom fields are not fully documented in the public API

Low

Letter templates use proprietary merge tag syntax

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

  • Campaign model requires custom object creation before data can migrate

    Agent Legend has a dedicated Campaign object with Campaign Members tracking outreach type, status, and response data across email, SMS, and voice. Twenty has no native campaign equivalent — we create a Campaign custom object and a CampaignMember junction object during schema setup, but this must happen before records can land. Teams with multiple campaign types (e.g., Circle Prospecting, Email Blast, SMS Follow-up) need a separate custom object or a type field on the Campaign object to distinguish them. We deliver the custom object schema plan before migration runs so Twenty is ready.

  • Lily lead scores require custom field setup — they do not map to a native Twenty field

    Agent Legend's Lily AI generates a proprietary lead score (0–100 integer) for each contact using 1,600+ third-party data points. Twenty has no native lead scoring field. We create a custom Number field (Lead_Score__c) on the People object during schema setup and populate it during migration. Teams should verify that the custom field is created and visible in Twenty's field-level security before the migration run. The score values are preserved but the Lily enrichment logic itself is platform-locked and cannot be transferred — teams using Lily scores for routing or automation will need to rebuild those rules in Twenty's workflow builder.

  • Contact-to-company N:N relationships collapse to one primary company

    Agent Legend supports N:N contact-to-company associations natively — a single contact can be linked to multiple companies with roles like 'Agent' or 'Lender'. Twenty People records have a single companyId lookup field. We migrate one primary company per contact (most recently modified by default, or by your specified rule) and surface the additional associations in a migration report so the team can manually link secondary companies post-import. If Agent Legend role labels are used to distinguish the relationship type, we map them as a custom select field (Relationship_Type__c) on the People record.

  • Outreach activity history migrates but new activities require manual logging

    Agent Legend automatically logs outreach activities (emails, SMS, calls) against contact records with original timestamps and owners. We map this history to Twenty Tasks linked to the People record. However, Twenty's activity tracking is manual by default — users create Tasks to log new outreach, or the team uses the REST/GraphQL API to automate logging. Agent Legend's SMS and email outreach integrations do not transfer; they must be rebuilt using Twenty's workflow builder or a third-party integration like Zapier. Teams using Agent Legend's mass texting or email sequences should plan 4–8 hours of workflow setup to restore automated activity logging in Twenty.

  • File attachments are not exported via Agent Legend CSV

    Agent Legend does not include file attachments (documents, images, signed forms) in its CSV export. Documents stored in Agent Legend must be re-uploaded manually after migration or transferred via API if the Agent Legend API supports file retrieval. We document which records had attachments so the team can identify them in Twenty post-import. For teams with high-volume file attachment histories (e.g., signed contracts, property images linked to deals), we recommend a separate file migration step using a cloud storage tool or a custom API script. This is a known limitation of Agent Legend's export mechanism and cannot be worked around through FlitStack's migration tooling.

Migration approach

Six steps for a successful Agent Legend to Twenty CRM data migration

  1. Audit Agent Legend data and build Twenty schema plan

    We export a full data snapshot from Agent Legend covering Contacts, Companies, Deals, Campaigns, Campaign Members, Activities, Notes, and custom fields. We audit record counts, identify custom field usage, and map Agent Legend's campaign types to Twenty custom object schemas. The output is a Twenty schema setup plan: which custom objects to create (Campaign, CampaignMember), which custom fields to add (Lead_Score__c, Lifecycle_Stage__c, Original_Create_Date__c), and the field types for each. Your Twenty admin creates the schema before migration runs.

  2. Resolve owners and invite users to Twenty

    Agent Legend owner IDs are matched to Twenty workspace members by email. We run an email lookup against the Twenty workspace and flag any owner without a matching user account. Your team either invites those users to Twenty first or designates a fallback owner. No record migrates without a valid Twenty owner — this prevents orphaned records in the target system.

  3. Migrate in dependency order: Companies → People → Opportunities → Campaigns → Activities

    Twenty's foreign key model requires Companies to exist before People can link via companyId, and People to exist before Opportunities can reference them. We sequence the migration so the relational graph resolves correctly: Companies first, then People with companyId lookups resolved, then Opportunities with contact and company links, then Campaign and CampaignMember custom object records, then Tasks for activity history. This prevents import errors and broken relationship links in Twenty.

  4. Run sample migration with field-level diff before full run

    A representative slice migrates first — typically 100–500 records spanning contacts across multiple companies, a few deals, campaign members, and activity logs. We generate a field-level diff between source and destination so you can verify Lily score mapping, campaign type mapping, company resolution, and owner assignment before the full run commits. Any field mapping errors are corrected in the transformation logic before the production migration runs.

  5. Execute full migration with delta-pickup and audit log

    The full migration loads all records into Twenty using the validated field mapping. A delta-pickup window (typically 24–48 hours) captures any records created or modified in Agent Legend during the cutover window — your team keeps working in Agent Legend while the migration runs. An audit log records every operation (created, updated, linked, skipped) so the team can reconcile record counts after go-live. If reconciliation reveals gaps, one-click rollback reverts the Twenty workspace to its pre-migration state so the team can re-run cleanly.

Platform deep dives

Context on both ends of the pair

Agent Legend logo

Agent Legend

Source

Strengths

  • Lily AI lead scoring provides actionable prioritization without requiring technical setup or third-party data pipelines.
  • Circle Prospecting automates recurring geographic outreach, saving agents an estimated 19.7 hours per month on manual database sorting.
  • Native integrations with Follow Up Boss, Lofty, and 500+ lead sources reduce duplicate data entry across the real estate agent stack.
  • Predictable per-contact pricing with annual billing option that waives the $499 setup fee for qualifying teams.
  • Campaign response rates of 28–55% significantly exceed industry averages of 2–6%, validating the AI-driven targeting approach.

Weaknesses

  • Per-contact pricing scales poorly at high volume with no unlimited tier, making the platform expensive for large databases.
  • AI intelligence (Lily scores, enrichment data) does not export, meaning years of lead prioritization data are lost on migration.
  • Limited public API documentation and unclear rate limiting create challenges for custom automation and migration tooling.
  • Single-seat Starter tier restricts team collaboration, pushing teams toward higher tiers for shared access.
  • Customer support responsiveness is inconsistent according to third-party reviews, which complicates issue resolution during migration.
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. 1 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 Agent Legend and Twenty CRM.

  • Object compatibility

    B

    1 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

    Agent Legend: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Agent Legend 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 Agent Legend to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Agent Legend to Twenty migrations complete in 24–72 hours of active migration time for under 25,000 records. Larger setups with 25,000–100,000+ records, multiple campaign types, or extensive Lily lead-score data extend to 3–7 days. The longest planning step is Twenty schema setup — creating Campaign and CampaignMember custom objects and custom fields like Lead_Score__c before data can land. Timeline also depends on how quickly your team reviews the sample migration diff and resolves any owner-matching gaps.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Agent Legend.
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