CRM migration

Migrate from The Real Estate Platform (REP) to Twenty CRM

Field-level mapping, validation, and rollback between The Real Estate Platform (REP) and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

The Real Estate Platform (REP) logo

The Real Estate Platform (REP)

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between The Real Estate Platform (REP) and Twenty CRM.

Complexity

CModerate

Timeline

1–2 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

The Real Estate Platform (REP) is an enterprise real estate CRM built by Phoenix Software — it stores contacts, companies, deals, and marketing campaign data, with each customer instance white-labeled and configured independently. REP has no public API documentation and no self-service export UI — FlitStack accesses REP data through its authenticated export interface, extracting contacts, companies, deals, activity history, and any custom properties defined in that customer's REP instance. REP's flexible schema means every migration starts with an audit step to enumerate exactly which custom fields exist in your REP setup. Twenty CRM is an open-source CRM built on TypeScript, NestJS, React, and PostgreSQL. Its standard objects are People (contacts), Companies, Opportunities (deals), Notes, and Tasks. Twenty lacks a native real estate listing or property object — REP property references and listing IDs migrate as custom fields on Companies and Opportunities. Twenty's CSV import tool accepts up to 20,000 records per batch, with a required import order: Companies first, then People, then Opportunities, then custom objects. API access (REST and GraphQL) unlocks on the Pro plan at $9 per user per month. We extract REP data via REP's export interface, transform it against your REP instance's custom field schema, then load it into Twenty in the correct dependency order. Activity history (calls, emails, meetings, notes) maps to Twenty Tasks and Notes with original timestamps and linked record IDs preserved. FlitStack surfaces REP's workflow definitions, automation rules, and marketing templates as exported reference documents — those cannot migrate programmatically and must be rebuilt in Twenty's workflow builder or an external automation tool.

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

The Real Estate Platform (REP) logo

The Real Estate Platform (REP)

What's pushing teams away

  • Pricing is not publicly disclosed and follows a per-feature model, making it difficult to compare costs or predict expenses when scaling teams or adding modules.
  • Limited public documentation on the API and data export options creates dependency on the vendor for any data extraction or migration work.
  • Single-vendor lock-in risk increases as brokerage data, custom configurations, and integrations all accumulate within a proprietary white-labeled instance.

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 The Real Estate Platform (REP) objects map to Twenty CRM

Each row shows how a The Real Estate Platform (REP) 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.

The Real Estate Platform (REP)

Contact / Lead

maps to

Twenty CRM

People

1:1
Fully supported

REP contacts migrate as Twenty People records. All standard REP contact fields — first name, last name, email, phone, job title, address — map directly. REP custom contact properties become Twenty custom fields on the People object. Owner resolution happens by email match against Twenty workspace members.

The Real Estate Platform (REP)

Company

maps to

Twenty CRM

Companies

1:1
Fully supported

REP companies migrate as Twenty Companies records. REP company fields including name, domain, industry, employee count, and annual revenue map directly. REP parent-company hierarchies map to Twenty's relation field pointing to the parent Companies record. REP property associations on the company record become custom fields or relation fields.

The Real Estate Platform (REP)

Deal / Transaction

maps to

Twenty CRM

Opportunities

1:1
Fully supported

REP deals migrate as Twenty Opportunities. Deal name, amount, close date, and owner (by email match) map directly. REP deal stage names map to Twenty Opportunity stage values via value mapping. REP's transaction type and property reference fields become custom fields on the Opportunity record.

The Real Estate Platform (REP)

Call / Email / Meeting Activity

maps to

Twenty CRM

Tasks / Notes

1:1
Fully supported

REP call logs, emails, and meeting records migrate as Twenty Tasks with Type = 'Call', 'Email', or 'Meeting'. Original timestamps, owners, and the linked contact or deal record ID are preserved so activity history is searchable in Twenty from day one.

The Real Estate Platform (REP)

Note / Document

maps to

Twenty CRM

Notes

1:1
Fully supported

REP notes migrate as Twenty Notes attached to the relevant People, Companies, or Opportunities record. Note body text and original create timestamps are preserved. Rich-text formatting is converted to Twenty's note format during the transform step. Any attachments referenced in the REP note are flagged for manual re-upload since Twenty Notes do not support inline file attachments.

The Real Estate Platform (REP)

Attachment / File

maps to

Twenty CRM

Files (re-uploaded)

1:1
Fully supported

REP file attachments are downloaded and re-uploaded to Twenty. Files are linked to the parent record they were attached to in REP. Maximum file size limits on the destination apply. We flag any REP files exceeding Twenty's upload size threshold before migration so you can decide on a case-by-case basis.

The Real Estate Platform (REP)

Agent / Team Member

maps to

Twenty CRM

Workspace Members

1:1
Fully supported

REP agents and office staff map to Twenty Workspace Members by email address. FlitStack resolves REP owner IDs to Twenty user emails for a clean owner assignment on migrated records. Unresolved owners are flagged before migration commits so your team can either invite them to Twenty or reassign their records.

The Real Estate Platform (REP)

Team / Office

maps to

Twenty CRM

Custom relation field on People

1:1
Fully supported

REP team and office structures have no direct equivalent in Twenty's flat workspace model. We map team membership as a custom select or relation field on the People record. If REP teams are used for permission scoping, Twenty's object-level permissions can be configured post-migration.

The Real Estate Platform (REP)

Campaign / Marketing List

maps to

Twenty CRM

Custom Campaign object

1:1
Fully supported

Twenty has no native campaign object. REP campaigns and marketing list memberships are preserved as a custom Campaign object with a CampaignMember relation to People. We create this object during the Twenty schema setup phase before data migration begins. After migration, campaign-related reporting views and filters must be configured manually in Twenty since the CRM does not automatically surface custom object data in standard reports.

The Real Estate Platform (REP)

REP Custom Properties

maps to

Twenty CRM

Custom fields (various objects)

1:1
Fully supported

REP's strength — and its migration complexity — is that every customer instance has a unique set of custom fields. FlitStack audits your REP instance's actual schema first, then creates matching custom fields in Twenty across People, Companies, and Opportunities before the migration run. No REP custom property is dropped without a documented mapping decision.

The Real Estate Platform (REP)

Lead Source / UTM Reference

maps to

Twenty CRM

Custom field on People

1:1
Fully supported

REP stores lead source and UTM attribution as contact properties. Twenty has no native lead source field. We create a custom select field (Lead_Source__c) on the People object and populate it from REP's source property value, preserving attribution data for post-migration reporting.

The Real Estate Platform (REP)

Property / Listing Reference

maps to

Twenty CRM

Custom fields on Companies or Opportunities

1:1
Fully supported

REP tracks listing IDs, property addresses, and listing status as core REP fields on deals and companies. Since Twenty lacks a real estate property object, these values migrate as custom text fields (Property_ID__c, Listing_Status__c) on the relevant Companies or Opportunities record, linked to the deal that references that property.

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.

The Real Estate Platform (REP) logo

The Real Estate Platform (REP) gotchas

High

White-label customization creates non-portable schema

Medium

Marketing campaign drip state does not transfer

Medium

Mobile app offline data is not exportable

Low

Syndication channel configurations do not export

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

  • REP's per-tenant custom field schema requires mandatory pre-migration audit

    The Real Estate Platform (REP) does not expose a public schema API. Each REP customer instance has a unique set of custom contact properties, custom company fields, and custom deal fields configured by Phoenix Software during onboarding. There is no standard REP field schema that applies across all REP tenants. Before FlitStack can create matching custom fields in Twenty and begin field mapping, we must run a REP schema audit that enumerates every custom property present in your specific REP instance. This audit step adds 1–3 days to the project timeline and must complete before the Twenty schema setup phase begins. Skipping this step risks silent data loss on any REP custom fields not pre-created in Twenty.

  • Twenty's CSV import enforces a strict dependency order that REP does not follow

    Twenty's built-in import tool requires records to be uploaded in a specific order: Companies first, then People, then Opportunities, then custom objects with relations last. This ordering constraint exists because Twenty's foreign keys — companyId on People, and peopleId and companyId on Opportunities — must reference records that already exist in the database. REP has no equivalent constraint; companies, contacts, and deals can be exported in any order. FlitStack sequences the migration so that all REP Companies are migrated and committed before REP People are processed, and all People are committed before any Opportunities are migrated. This sequencing adds a coordination step for teams with circular references (contacts linked to deals that reference companies that reference those contacts) — such cases are flagged and resolved manually before the migration run.

  • REP marketing campaigns have no native equivalent in Twenty — a custom object must be pre-created

    The Real Estate Platform (REP) includes a marketing campaign object that tracks which contacts are members of which campaigns, with campaign-level metrics. Twenty CRM has no native campaign object on any plan — not even as a paid add-on. If your REP instance stores campaign membership data that you need to preserve for reporting, FlitStack creates a custom Campaign object in Twenty during the schema setup phase, with a CampaignMember relation to the People object. However, Twenty's workflow builder and reporting tools are not aware of this custom object by default — your team may need to manually configure campaign-related views and filters post-migration. This is a structural gap between REP's feature set and Twenty's current object model that requires explicit acknowledgment before migration begins.

  • Twenty's import tool caps CSV files at 20,000 records per batch

    Twenty's CSV import function (Command Menu → Import records) supports a maximum of 20,000 records per import file. REP instances with large data volumes — particularly real estate teams with thousands of historical transactions, contacts accumulated over years, or bulk activity logs from automated campaigns — exceed this limit. FlitStack handles this by splitting large REP record sets into 20,000-record batches before loading into Twenty, and managing the dependency ordering across batches. For REP instances exceeding 50,000 total records, we recommend using Twenty's REST or GraphQL API for the bulk load instead of CSV, which FlitStack can execute directly. The API approach bypasses the 20,000-record batch limit and allows higher throughput for large REP migrations.

  • REP's transaction and property data requires a custom object or custom field design decision

    REP natively models real estate listings, property records, and transaction-linked deals as core REP objects — property IDs, listing status, listing price, and transaction type are standard REP fields stored on deals and companies. Twenty has no native real estate property or listing object. REP property references must be stored as custom fields on Companies or Opportunities, or as a separate custom Property object with a relation to Opportunities. The correct design depends on how your REP instance uses property data: if each deal is tied to one property, custom fields on Opportunities is sufficient; if deals can span multiple properties, a custom Property object with a one-to-many relation from Opportunities is more accurate. FlitStack documents this design decision during the REP schema audit and presents both options with a recommendation before the Twenty schema is configured.

Migration approach

Six steps for a successful The Real Estate Platform (REP) to Twenty CRM data migration

  1. Audit REP schema and export data

    FlitStack connects to your REP instance via your authenticated export credentials and enumerates every custom field present in your REP setup — including custom contact properties, custom company fields, and custom deal fields. We export all standard and custom REP objects: People, Companies, Deals, Activity history (calls, emails, meetings, notes), Attachments, Campaigns, and CampaignMembers. We also document REP's automation rules and workflow definitions as exported reference JSON for your team to use when rebuilding in Twenty. This step establishes the exact scope of custom fields requiring Twenty custom field creation.

  2. Design and create Twenty schema

    Before any data is loaded, FlitStack creates the matching custom fields in your Twenty workspace based on the REP schema audit. We create custom fields on People (lead source, REP lead status, REP contact custom properties), on Companies (property reference, REP company custom fields), and on Opportunities (priority, transaction type, property ID, REP deal custom fields). If REP campaign membership needs to be preserved, we create a custom Campaign object with a CampaignMember relation to People. We also map REP deal stages to Twenty Opportunity stages and configure stage probability values. The Twenty schema setup plan is delivered to your admin for review before FlitStack commits any changes.

  3. Migrate accounts and people in dependency order

    FlitStack executes the migration in Twenty's required import order. Companies are migrated first and committed to Twenty — these records must exist before People can reference them via companyId. People are migrated second, with REP contact fields mapped to Twenty People fields and REP custom contact properties mapped to the custom fields created in Step 2. Email addresses are used to pre-resolve REP owner IDs against Twenty workspace members — unmatched owners are flagged in a pre-migration report so your team can invite them to Twenty or reassign their records before the final migration run.

  4. Migrate opportunities, activities, and remaining objects

    With Companies and People committed, FlitStack migrates REP deals as Twenty Opportunities, mapping deal stage names to Twenty Opportunity stage values, preserving the original close date, amount, and REP transaction type. Activity records (calls, emails, meetings, notes) are migrated as Twenty Tasks and Notes, each linked to its parent People, Companies, or Opportunities record with original timestamps and owner IDs preserved. Campaign membership data is loaded into the custom Campaign object. For REP instances exceeding 20,000 records, FlitStack uses Twenty's GraphQL API for the bulk load rather than CSV.

  5. Run sample migration with field-level diff and delta pickup

    A representative slice — typically 100–500 records spanning People, Companies, Opportunities, and a sample of activity records — migrates first. FlitStack generates a field-level diff report comparing source REP values against the destination Twenty values so you can verify that custom field mapping, stage mapping, owner resolution, and date preservation are all correct before the full run commits. After full migration, a delta-pickup window captures any REP records created or modified during the cutover period so Twenty reflects your REP system's final state at go-live.

  6. Validate, deliver, and hand off rebuild references

    FlitStack delivers a final reconciliation report showing record counts by object, any records that could not be migrated with reasons, and a mapping audit trail. We deliver the exported REP workflow definitions and automation rules as reference JSON for your Twenty admin to use when rebuilding automations in Twenty's workflow builder or an external tool. FlitStack does not migrate workflows, sequences, email templates, or REP reports — those are rebuilt manually using the reference documentation we provide. One-click rollback is available if reconciliation identifies issues within 48 hours of the full migration run.

Platform deep dives

Context on both ends of the pair

The Real Estate Platform (REP) logo

The Real Estate Platform (REP)

Source

Strengths

  • White-label deployment aligns the entire platform with brokerage branding and local market configurations.
  • Multi-currency and multi-lingual support handles global brokerage operations without separate instances.
  • Integrated lead, listing, and transaction management reduces data silos across brokerage operations.
  • Hierarchical structure maps naturally to real-world brokerage org charts of regions, offices, and agents.

Weaknesses

  • No public pricing transparency makes cost planning and vendor comparison difficult.
  • Limited external API documentation restricts third-party integrations and self-service migration tooling.
  • Each instance is uniquely configured, making schema discovery and migration mapping project-specific and time-intensive.
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?

Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across The Real Estate Platform (REP) and Twenty CRM.

  • Object compatibility

    C

    4 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

    The Real Estate Platform (REP): Not publicly documented.

  • Data volume sensitivity

    B

    The Real Estate Platform (REP) doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your The Real Estate Platform (REP) 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 The Real Estate Platform (REP) to Twenty CRM data migrations

Answers to the questions buyers ask most during The Real Estate Platform (REP) to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your The Real Estate Platform (REP) to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most REP-to-Twenty migrations complete in 1–2 weeks for under 10,000 total records. REP instances with 10,000–50,000 records or extensive custom field schemas extend to 3–6 weeks. The REP schema audit step — required because REP has no public schema API and every customer instance is configured independently — adds 1–3 days before Twenty schema setup begins. The largest variable is the number of REP custom fields requiring custom field creation in Twenty.

Adjacent paths

Related migrations to explore

Ready when you are

Move from The Real Estate Platform (REP).
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