CRM migration

Migrate from Perfectview to Twenty CRM

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

Perfectview logo

Perfectview

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between Perfectview and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from PerfectView to Twenty CRM requires a structural data-model transformation, not a flat record copy. PerfectView stores company and contact data inside a single Relation object, while Twenty CRM uses separate Company and Person objects with a direct API-accessible schema. We split every Relation into a Company and one or more Person records during the transform phase, using the role, address-type, and function fields to determine the correct placement. Activity records (calls, emails, meetings, tasks) migrate as Timeline entries against the resolved Person or Company. Documents migrate as file attachments. Workflows, automations, and reminder rules cannot be exported from PerfectView and are documented separately for your admin to rebuild in Twenty's workflow builder. The rebrand of PerfectView to Tribe CRM adds urgency for teams wanting to exit before any forced platform transition.

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

Perfectview logo

Perfectview

What's pushing teams away

  • PerfectView lacks presence on major review platforms, making competitive comparison and peer validation difficult for prospective buyers.
  • The product rebranding to Tribe CRM creates uncertainty about roadmap continuity and whether existing customers will be forced onto a new platform.
  • No public API documentation or developer portal means technical teams cannot independently evaluate integration capabilities before purchase.
  • Limited reporting depth compared to global CRM platforms makes it harder for data-driven sales teams to extract actionable pipeline insights.

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

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

Perfectview

Relation

maps to

Twenty CRM

Company + Person (split required)

1:many
Fully supported

PerfectView's Relation object is the primary carrier of both company and contact data. We split each Relation into one Company record (using the organisation name and business address) and one or more Person records (using the individual name, email, phone, and role fields). The split logic examines the Relation type, address type flags, and function fields to determine whether each field belongs in Company or Person. We validate split output against a sample of 50 live records before bulk migration runs. The original Relation ID is preserved in a custom field relation_original_id__c on both output records for cross-reference.

Perfectview

Activities

maps to

Twenty CRM

Timeline (Tasks, Events, Notes)

1:1
Fully supported

PerfectView Activities (calls, emails, meetings, tasks) map to Twenty's Timeline entries. We resolve the Activity type: calls become Tasks with TaskSubtype=Call, meetings become Events with start and end timestamps, task-type Activities become Tasks, and note-type Activities become Notes. Each Timeline entry is linked to the resolved Person or Company via the standard lookup. ActivityDate is preserved as the original timestamp. Owner resolution uses email-based matching against Twenty workspace members.

Perfectview

Leads

maps to

Twenty CRM

Person (with pipeline stage)

1:1
Mapping required

PerfectView Lead records (or Relations with Lead lifecycle stage) migrate as Person records in Twenty CRM with a custom pipeline stage field added to capture the original lead status. Lead source, lead score (if stored as a custom field), and owner assignment migrate to equivalent custom fields on Person. If Twenty's workspace-level pipeline is enabled, leads map to the relevant pipeline stage value.

Perfectview

Cases

maps to

Twenty CRM

Custom Object (Case) or Opportunity

1:1
Fully supported

PerfectView Cases (complaint management and support ticketing) migrate as Twenty custom objects named Case. We create the Case object via Twenty's /metadata API during the schema design phase, including custom fields for status, priority, assignee, and linked Relation. Conversation history migrates as Timeline entries on the Case custom object. If the customer prefers a simpler model, Cases can map to Opportunities with a Case Record Type.

Perfectview

Documents

maps to

Twenty CRM

File Attachments (Company / Person)

1:1
Mapping required

PerfectView documents migrate as file attachments on the relevant Company or Person record in Twenty. We retrieve documents via the PerfectView API where enabled, falling back to the built-in bulk export function for bulk downloads. Document metadata (filename, upload date, uploader) is preserved as file metadata. Large documents (>10MB) may require chunked upload handling via Twenty's file API.

Perfectview

Quotes

maps to

Twenty CRM

Opportunity (with line items)

1:1
Fully supported

PerfectView Quotes migrate as Twenty CRM Opportunities with line item data stored as custom fields or a linked OpportunityLineItem-equivalent custom object. We create the custom line item schema during schema design, then import Quote header fields (quote number, total, status, validity date) to the Opportunity and line items to the linked custom object. Quote PDFs migrate as file attachments on the Opportunity.

Perfectview

Invoices

maps to

Twenty CRM

Custom Object (Invoice)

lossy
Mapping required

PerfectView Invoice records migrate as a custom Invoice object in Twenty CRM, created via /metadata API. Invoice fields (number, date, amount, status, payment terms) map to custom fields on the Invoice object. Invoices are linked to the parent Company record via a lookup. Note that invoice numbers may require renumbering in Twenty because PerfectView uses its own sequential numbering scheme that may conflict with any existing Twenty numbering.

Perfectview

Custom Fields

maps to

Twenty CRM

Custom Fields on standard and custom objects

lossy
Mapping required

PerfectView custom fields on Relations and standard objects are discovered during the discovery phase by inspecting a sample export. We create equivalent custom fields in Twenty via the /metadata API before migration, handling field type mapping (text to text, date to date, numeric to number). Multi-select values in PerfectView map to multi-select picklist or text fields in Twenty depending on cardinality.

Perfectview

Custom Objects

maps to

Twenty CRM

Custom Objects (via /metadata API)

1:1
Fully supported

PerfectView custom object schemas are documented during discovery and replicated as custom objects in Twenty CRM using the /metadata API. Each custom object receives its defined fields, lookup relationships, and validation rules. Custom object records migrate after standard objects so that all parent lookups are resolved. The Twenty GitHub issue tracker shows the /metadata endpoint as the correct mechanism for custom object management.

Perfectview

Users / Owners

maps to

Twenty CRM

Workspace Members

1:1
Fully supported

PerfectView user records and owner assignments migrate as Twenty workspace members. We match PerfectView owners by email against the Twenty workspace. Any owner without a matching workspace member is held in a reconciliation queue for the customer's admin to provision before record import resumes. Owner-to-record links are preserved in the mapping file and reassigned to the matching workspace member.

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.

Perfectview logo

Perfectview gotchas

High

Relations object conflates Companies and Contacts

Medium

Bulk export function caps at 1000 records per operation

Medium

Workflows and automations cannot be exported

Low

API rate limits are not publicly documented

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

  • Relation splitting logic must be validated before bulk migration

    PerfectView's Relation object combines company and contact data without a clean type field distinguishing a company record from an individual contact. The split into Twenty's separate Company and Person objects depends on parsing address types, role fields, and organisation flags within each Relation. We validate split output against a 50-record sample from live data before any bulk migration runs. If the sample shows ambiguity (a Relation with both organisation data and individual name but no clear type), we escalate to the customer for clarification. Skipping this validation produces duplicate or orphaned records in Twenty where the Company and Person are mis-assigned.

  • PerfectView bulk export caps at 1,000 records per operation

    The PerfectView built-in export function limits each export pass to 1,000 Relations. For databases with thousands of records, this requires multiple export passes using date-range or alphabetical filters to avoid overlap. We automate this chunking via the API where available, or via scripted UI export with filter-based pagination. Boundary records (the last record of one chunk and the first of the next) require deduplication to avoid creating duplicate records during the Relation split.

  • Workflows and automations cannot be exported from PerfectView

    PerfectView does not expose workflow rules, trigger conditions, or automated sequences through any export mechanism. Every automation rule must be documented manually during the discovery phase from screenshots or configuration notes provided by the customer's admin, then rebuilt from scratch in Twenty's workflow builder (which supports filter conditions from v1.4.0). For teams with more than five active workflows, this rebuild effort can add two to five hours per workflow and should be scoped separately from the data migration.

  • API rate limits are not publicly documented

    PerfectView exposes an API that can be activated in account settings, but the platform does not publish rate limits, quota thresholds, or per-endpoint restrictions. We discover actual limits through a pre-migration load test using a trial account. If rate limits are restrictive, we fall back to the bulk export function as the primary data source and use the API only for delta verification and record-level reads. This fallback plan is documented before migration begins.

Migration approach

Six steps for a successful Perfectview to Twenty CRM data migration

  1. Discovery and export strategy

    We audit the PerfectView portal for record volumes across Relations, Activities, Cases, Documents, Quotes, and any custom objects. We assess whether the API is available in the account and run a load test to discover actual rate limits. We review the Relation data in a sample export to identify the split criteria used for the Company-Person separation. We also collect screenshots or documentation of all active workflows for the rebuild inventory. The discovery output is a written migration scope, export plan (API or bulk export with chunking), and Relation split validation sample.

  2. Schema design in Twenty CRM

    We design the destination schema in Twenty CRM. This includes creating the Case custom object and any invoice or custom objects via Twenty's /metadata GraphQL API, adding custom fields to Person and Company for any PerfectView fields that have no direct equivalent, and setting up pipeline stages if Twenty's pipeline feature is enabled. We deploy schema changes to a Twenty staging workspace before any production data moves. The Relation split rule is formalised as a transform specification during this phase.

  3. Relation split validation

    We run the Relation split logic against a 50-record sample of live PerfectView data. The customer's admin reviews the split output and confirms whether Company and Person placement is correct. Any Relation that cannot be unambiguously split is escalated for manual resolution. This step prevents bulk migration errors and is a prerequisite for the production migration. Validation sign-off is required in writing before we proceed.

  4. Sandbox migration and reconciliation

    We run a full migration into a Twenty staging workspace using production-like data volume. The customer reconciles record counts, spot-checks 25-50 random records against the PerfectView source, and reviews the Activity timeline on three sample Person records. Any mapping corrections are made before production migration begins. Owner reconciliation happens here: any PerfectView owner without a matching Twenty workspace member is flagged for the admin to provision.

  5. Production migration in dependency order

    We run production migration in record-dependency order: workspace members (provisioned, validated), Companies (from Relation split), Persons (from Relation split, linked to Companies), Activities (Tasks, Events, Notes via Twenty REST API), Cases (custom object), Documents (file attachments), Quotes and Invoices (custom objects), then any remaining custom objects with resolved lookups. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and workflow rebuild handoff

    We freeze writes to PerfectView during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver the workflow inventory document listing every active PerfectView automation with its trigger, conditions, and recommended Twenty workflow equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild PerfectView workflows in Twenty inside the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

Perfectview logo

Perfectview

Source

Strengths

  • All-in-one CRM covering sales, marketing, support, and billing without requiring third-party integrations for core functions.
  • Netherlands-hosted data with ISO certification and explicit GDPR tooling appeals to EU-regulated industries.
  • Predictable flat pricing model with a permanent discount for the first five users reduces billing surprises.
  • Free helpdesk support is included in all plans with direct access to the PerfectView team in Den Bosch.

Weaknesses

  • Product has been rebranded to Tribe CRM with unclear migration path for existing PerfectView customers.
  • No public API documentation or developer portal limits technical transparency and pre-sales evaluation.
  • Absence from major review platforms (G2, Capterra) means no independent validation of user satisfaction or feature claims.
  • Limited advanced reporting and analytics compared to global CRM competitors makes pipeline intelligence harder to extract.
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. 5 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 Perfectview and Twenty CRM.

  • Object compatibility

    C

    5 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

    Perfectview: Not publicly documented in summary form..

  • Data volume sensitivity

    A

    Perfectview exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 15,000 Relations with no custom objects. Migrations with custom objects, large Activity histories (over 200,000 engagement records), or complex document archives move to eight to twelve weeks because of the Relation split validation, custom object schema creation via Twenty's /metadata API, and parent-record lookup resolution. The Relation split validation step alone typically adds one to two weeks because it requires customer sign-off on a data sample before bulk migration proceeds.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Perfectview.
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