CRM migration

Migrate from Property Shell to Twenty CRM

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

Property Shell logo

Property Shell

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

13 of 13

objects map 1:1 between Property Shell and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Property Shell is a purpose-built real estate CRM that stores Leads, Projects, Units, Contracts, and custom fields using a data model optimized for property development workflows — including settlement stages, unit types, developer deposits, and automated payment flags. Twenty CRM is a PostgreSQL-backed open-source CRM with a generic object model: People (contacts), Companies (accounts), Opportunities (deals), Notes, Tasks, and unlimited custom objects and fields with no field-name suffix convention. FlitStack AI maps Property Shell's Lead records to Twenty People, Projects to Companies, and Units either to custom Opportunity properties or a dedicated custom object depending on their cardinality. Property Shell's developer-name, settlement-date, and deposit-tracking fields migrate as custom fields in Twenty — __c suffixes are not used; fields appear with their configured display names. The migration runs via formatted CSV import into Twenty's /import endpoint, sequenced so Companies exist before People, and People before Opportunities, matching Twenty's import-order constraint. Workflows, lead nurturing journeys, automated email sequences, and contract management automation do not migrate — those are documented as Property Shell platform configuration and must be rebuilt in Twenty's workflow builder or a third-party automation layer. A 24–48 hour delta pickup window captures in-flight changes during cutover so the final state in Twenty reflects every deal moved since the migration timestamp.

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

Property Shell logo

Property Shell

What's pushing teams away

  • Limited publicly documented API or export mechanisms, making it difficult to extract data for reporting, backups, or migrations to another platform.
  • Smaller review base (29 verified reviews on Capterra) and thin community resources compared to established CRM platforms, making peer support harder to find.
  • As a niche platform targeting property developers in Australia and New Zealand, teams operating in other regions or industries may find the feature set too specialised for broader CRM needs.

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 Property Shell objects map to Twenty CRM

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

Property Shell

Lead

maps to

Twenty CRM

People

1:1
Fully supported

Property Shell Lead records map 1:1 to Twenty People. Standard fields including first name, last name, email address, phone number, and source campaign migrate as their direct Twenty equivalents. Mobile numbers map to the phone field if no separate mobile field exists. Owner assignment resolves by email match against Twenty workspace members — the owner email on each Property Shell Lead is matched to a confirmed Twenty user account, and unmatched owners are flagged before migration so no record lands without an assignee.

Property Shell

Project

maps to

Twenty CRM

Company

1:1
Fully supported

Property Shell Projects — representing a development site or property project — map to Twenty Companies. The project name becomes the Company displayName, address fields map to the address compound, and the development type maps as a custom select field on the Company record.

Property Shell

Unit

maps to

Twenty CRM

Opportunity (with custom unit fields)

1:1
Fully supported

Property Shell Unit records — representing an individual apartment, lot, or villa within a development — map to Twenty Opportunities with unit-specific properties (unit number, floor, bedrooms, car spaces) stored as custom fields on the Opportunity. The linked Project becomes the Opportunity's CompanyId. If Units are numerous (>500 per project), a dedicated custom object is recommended instead.

Property Shell

Contract

maps to

Twenty CRM

Custom Object: Contract

1:1
Fully supported

Property Shell contract records — including variation tracking and settlement status — have no native equivalent in Twenty. We create a Contract custom object in Twenty with fields for contract number, exchange date, settlement date, purchaser name (linked to People), and related Opportunity. This must be configured in Settings → Data Model before migration runs.

Property Shell

Lead Activity (call, meeting, note)

maps to

Twenty CRM

Task / Note

1:1
Fully supported

Property Shell engagement logs — calls, meetings, and notes — map to Twenty Tasks and Notes respectively. Call logs and meeting notes from Property Shell become Twenty Task or Note records on the linked People record. Original timestamps, owner assignments, and any attached file references are preserved during migration. The Task Type field on each Task is set to 'Call' or 'Meeting' based on the source activity kind detected in the Property Shell export.

Property Shell

Automated Deposit / Payment Record

maps to

Twenty CRM

Custom Object: PaymentRecord

1:1
Fully supported

Property Shell tracks deposit amounts, payment milestones, and receipt status as part of its contract management. These have no Twenty equivalent — we create a PaymentRecord custom object with fields for amount, currency, milestone type, status, and linked Opportunity/Contract. Payment status must be rebuilt in Twenty as a custom select field.

Property Shell

Pipeline Stage (Off-the-plan, Under Construction, Completed, Settled)

maps to

Twenty CRM

Opportunity Stage

1:1
Fully supported

Property Shell settlement stages map to Twenty Opportunity stage values. Each stage maps value-by-value: 'Off-the-plan' → 'Prospecting', 'Under Construction' → 'Qualification', 'Completed' → 'Proposal Sent', 'Settled' → 'Closed Won'. Stage transition timestamps are preserved as custom datetime fields for reporting continuity.

Property Shell

Agent / Team Member

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Property Shell users and agent assignments resolve by email match against Twenty workspace members. User records are extracted from Property Shell ownership and assignment fields, then matched by email address to existing Twenty workspace members. Users without a matching Twenty account must be invited via Settings → Members and accept the invitation before migration runs, ensuring all owner lookups resolve correctly on import.

Property Shell

Attachment / File

maps to

Twenty CRM

File (linked to record)

1:1
Fully supported

Property Shell files attached to Leads, Projects, or Units are downloaded and re-uploaded as linked files in Twenty. File size limits depend on the hosting configuration — self-hosted Twenty has no platform-level size cap; Twenty Cloud has a 25MB per-file limit.

Property Shell

Campaign / Marketing Source

maps to

Twenty CRM

Custom Field on People

1:1
Fully supported

Property Shell tracks lead source campaigns (portal listings, display suite visits, referral programs). These store as a custom select field on Twenty People. Campaign-level performance data does not migrate — source attribution is preserved but campaign analytics must be rebuilt in Twenty's reporting module.

Property Shell

Lead Nurture Sequence

maps to

Twenty CRM

No Equivalent

1:1
Fully supported

Property Shell automated nurture journeys and email sequences do not have a structural equivalent in Twenty CRM. The sequence definitions (triggers, delays, email content) are exported as a JSON reference document for manual rebuild in Twenty's workflow engine or an external email tool.

Property Shell

Multi-agent Assignment

maps to

Twenty CRM

Relation Field / Junction

1:1
Fully supported

Property Shell allows multiple agents assigned to a single lead or unit. In Twenty, the primary agent maps to Opportunity assignee; secondary agents are added via a multi-select relation field on the Opportunity or a custom junction object if the relationship is many-to-many.

Property Shell

Property Type (Residential, Commercial, Industrial, Land)

maps to

Twenty CRM

Custom Select on Company or Opportunity

1:1
Fully supported

Property Shell development property types map as custom select fields in Twenty. The pick-list values are mapped one-by-one: 'Residential' → 'Residential', 'Commercial' → 'Commercial', 'Industrial' → 'Industrial', 'Land' → 'Land'. These can live on the Company record (for project-level typing) or on the Opportunity (for unit-level typing).

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.

Property Shell logo

Property Shell gotchas

High

No documented public API for data export

High

Highly customised per-customer schema requires pre-migration field audit

Medium

Interactive Maps are visualisation-layer only and cannot be migrated

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

  • Property Shell export format may require pre-migration data reformatting

    Property Shell does not expose a documented public API on all tiers — many migrations proceed via the platform's CSV export function. The column headers in Property Shell's export do not use standard CRM field names; they include property-development labels (unit_number, settlement_date, deposit_status, development_stage) that must be re-mapped to Twenty's expected import schema before loading. FlitStack AI audits the export file structure during the discovery phase and re-formats the CSV to match Twenty's column expectations, which adds a validation step not present in migrations from API-first CRMs. If Property Shell's export caps records per file, the dataset must be split and re-consolidated before import.

  • Unit-to-project N:N relationships need a junction object in Twenty

    Property Shell tracks units within a project using a native parent-child structure where each unit links to one development project. However, some Property Shell setups allow a unit to be cross-listed against multiple developments — for instance, a mixed-use development where the commercial component and residential component are tracked as separate projects. Twenty CRM's relation fields create a one-to-many link by default (one Opportunity per Company). For true many-to-many unit-to-project relationships, a junction object must be pre-created in Twenty Settings → Data Model before migration runs. FlitStack AI surfaces any cross-linked units during the discovery audit and models the junction object schema as part of the migration plan.

  • Settlement-stage pipeline model requires stage redefinition in Twenty

    Property Shell's pipeline stages are tied to the property development lifecycle — Off-the-plan, Exchange, Under Construction, Completed, Settled — rather than a conventional sales cycle. Twenty CRM's Opportunity stages are configurable but ship with default values (Prospecting, Qualification, etc.). Each Property Shell settlement stage must be mapped value-by-value to a Twenty Opportunity stage, and any custom probability or forecast category associated with each stage must be reapplied in Twenty's pipeline settings. The settlement-date field in Property Shell maps to Twenty's closeDate, but the stage logic (e.g., a unit auto-advancing to 'Settled' when a contract is signed) must be recreated as a workflow trigger in Twenty's automation engine.

  • Automated deposit and payment tracking has no native equivalent in Twenty

    Property Shell includes built-in automated deposit tracking, receipt generation, and payment milestone management as part of its contract management module. Twenty CRM has no native payment or deposit object — this functionality must be rebuilt as a custom object (PaymentRecord) with fields for amount, milestone type, receipt reference, and status, linked to the Opportunity or Contract record. If your team relies on Property Shell's automated payment reminders or instalment scheduling, those rules are Property Shell platform logic that cannot be exported. FlitStack AI creates the PaymentRecord custom object schema as part of the migration but does not rebuild the automation logic — that must be done in Twenty's workflow engine or an integrated payment tool post-migration.

  • Marketing automation sequences cannot migrate — must be rebuilt

    Property Shell's marketing automation features — lead nurture sequences, automated email drip campaigns, and lead-follow-up triggers — are stored as Property Shell platform configuration and have no structural equivalent in Twenty CRM. The sequence definitions, trigger conditions, delay logic, and email content are not exportable in a form that maps to Twenty's workflow engine. FlitStack AI exports the sequence logic as a reference document (step count, trigger type, delay duration, email subject lines) so your team has a rebuild brief for Twenty's workflow builder. This is disclosed honestly: no migration path exists for marketing automation logic regardless of which destination CRM you choose.

Migration approach

Six steps for a successful Property Shell to Twenty CRM data migration

  1. Audit Property Shell data export and model mapping plan

    FlitStack AI retrieves the Property Shell CSV export and inspects the column headers, record counts per object (Leads, Projects, Units, Contracts), and any custom field definitions visible in the export. We compare the exported schema against Twenty's standard object fields and identify every field that requires a custom field to be created in Twenty Settings → Data Model before import. We also flag any cross-linked units (many-to-many relationships) that need a junction object, and any missing email addresses on owner records that block owner resolution.

  2. Create custom objects and fields in Twenty

    Before any data moves, FlitStack AI generates a custom object setup plan for Twenty. This includes the Contract custom object (with fields for contract number, exchange date, settlement date, variation status), the PaymentRecord custom object (with amount, milestone, receipt reference, status), and custom fields on People (source__c, budget__c), Company (propertyType__c, developmentStage__c, launchDate__c), and Opportunity (unitType__c, bedrooms__c, bathrooms__c, carSpaces__c, floorLevel__c, areaSqm__c, depositAmount__c). The Twenty workspace admin creates these in Settings → Data Model following our field specification. All custom fields must exist before the CSV import step runs.

  3. Invite and resolve workspace members

    FlitStack AI extracts owner and agent assignments from Property Shell records by email address. Before migration runs, all Property Shell users who own records must be invited to the Twenty workspace via Settings → Members and accept the invitation. Owner resolution maps Property Shell owner emails to Twenty workspace member IDs — any owner without a matching Twenty account is flagged and assigned to a fallback user so no record lands without an assignee. This step prevents orphaned records that cannot be queried by owner in Twenty after migration.

  4. Run a sample migration with field-level diff

    A representative slice migrates first — typically 100–500 records spanning Leads, a Project with its Units, and a few Contracts. We import into Twenty and generate a field-level diff report comparing source values against destination field values for every mapped column. You verify that settlement stages map correctly to Opportunity stages, deposit amounts land in the depositAmount__c custom field, unit types appear as select options in Twenty, and owner assignments resolve by email. Any mapping errors are corrected in the transformation script before the full run commits.

  5. Full migration with delta-pickup cutover

    The full dataset runs: Companies first, then People (linked to Companies via companyId), then Opportunities (linked to Company and People), then Contract records (linked to People and Opportunities), then Tasks, Notes, and Files. A delta-pickup window of 24–48 hours after the initial load captures any records modified or created in Property Shell during the cutover. FlitStack AI logs every operation in an audit trail, and one-click rollback is available if reconciliation fails. After rollback window closes, your team is live on Twenty CRM.

Platform deep dives

Context on both ends of the pair

Property Shell logo

Property Shell

Source

Strengths

  • Purpose-built for property development projects with native concepts for lots, stages, releases, and settlements.
  • Real-time interactive mapping for display suites and project websites showing stock status and lot availability.
  • AI-powered lead scoring and automated nurture journeys from first enquiry through to settlement.
  • Comprehensive contract management with variation and upgrade tracking across the settlement lifecycle.
  • Integrates development, marketing, sales, and finance team collaboration within a single platform.

Weaknesses

  • No publicly documented API or developer portal — export and migration rely on ad-hoc data extraction.
  • Small review cohort and limited third-party community resources for troubleshooting or peer support.
  • Interactive Map geometry and visual stock statuses are UI-layer data not exposed for migration or backup.
  • Highly custom implementations per customer mean no standard schema — every migration requires a full field audit.
  • Platform is primarily oriented to the Australian property development market, limiting applicability for teams in other regions.
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. 3 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 Property Shell and Twenty CRM.

  • Object compatibility

    B

    3 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

    Property Shell: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Property Shell 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 Property Shell to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Property Shell to Twenty migrations complete in 2–5 days of clock time. Under 30,000 total records (Leads, Projects, Units, Contracts) with fewer than 50 custom fields typically run within 48 hours. Complex setups with multi-phase development projects and hundreds of unit records across multiple projects, or those requiring a Contract or PaymentRecord custom object, extend to 5–7 days. The longest planning step is custom field creation in Twenty's Settings → Data Model — that must complete before the CSV import can run.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Property Shell.
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