CRM migration

Migrate from Perfect Books to Twenty CRM

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

Perfect Books logo

Perfect Books

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Perfect Books and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Perfect Books and Twenty CRM share the same core CRM objects — contacts, companies, deals — but Perfect Books was built for book publishers and adds publisher-specific fields (royalty tracking, ISBN metadata, imprint assignments, author contract status) that require custom object and custom field mapping in Twenty. Twenty's import engine operates CSV-first with an enforced load order: Companies must exist before People (linked via companyId), and Opportunities must exist before any custom object that references them. FlitStack AI extracts your Perfect Books data via API or CSV export, deduplicates records, resolves owner assignments by email match against Twenty workspace members, and executes the migration in that strict sequence. Activity history (notes, tasks, meeting logs) migrates as Twenty Notes and Tasks linked to the target record. Any automations, workflow rules, or custom reporting logic in Perfect Books do not transfer — those require manual rebuild in Twenty's workflow builder or API-based automation layer. The migration engine FlitStack uses is a combination of Twenty's REST API (up to 200 calls per minute on Organization tier) and bulk CSV import for high-volume record loads, with field-level validation before final commit.

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

Perfect Books logo

Perfect Books

What's pushing teams away

  • Multiple unrelated entities share the 'Perfect Books' name — confusion with Perfect Books bookstore (Ottawa), Perfect Practice (US legal), and Perfect Law (US legal) creates friction in vendor discovery and procurement.
  • Limited public review footprint — minimal G2/Capterra reviews and a Capterra Canada page that 404s make independent benchmarking difficult.
  • Pricing is not published publicly — every prospect must engage UK sales, slowing comparison against transparent SaaS legal-accounting alternatives.
  • Small market footprint relative to Clio, MyCase, and PracticePanther limits the developer ecosystem, third-party plugins, and community knowledge base.
  • Concentrated UK-region focus reduces fit for non-UK firms needing local tax regimes, currencies, or compliance workflows outside the platform's design assumptions.

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

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

Perfect Books

Contact / Author

maps to

Twenty CRM

People

1:1
Fully supported

Perfect Books contacts (authors, editors, buyers) map directly to Twenty's People object. Email is the unique identifier for People imports. Each contact must have a workspace member matched by email if you want to assign owner records in Twenty. During extraction, FlitStack de-duplicates contacts by email and flags any duplicates for review before final import.

Perfect Books

Contact custom fields (royalty_rate, contract_type)

maps to

Twenty CRM

People — custom fields

1:1
Fully supported

Perfect Books author-specific fields like royalty_rate and contract_type have no native Twenty equivalent. These migrate as custom fields on People — created in Settings → Data Model before import. Select-type fields (contract_type) map to Twenty's select field type with the same pick-list values preserved.

Perfect Books

Publisher / Imprint

maps to

Twenty CRM

Company

1:1
Fully supported

Perfect Books publishing houses and imprints map to Twenty's Company object. The imprint name maps to Company.name. For multi-imprint publishers with parent-child relationships, Perfect Books' parent_imprint_id maps to Twenty's Company.parentId — the parent company must be imported first per Twenty's import order rules.

Perfect Books

Publisher website and industry

maps to

Twenty CRM

Company — Website, industry

1:1
Fully supported

Publisher website domain from Perfect Books maps to Company.website in Twenty. Publisher industry classification maps to the industry select field using value mapping where Perfect Books taxonomy differs from Twenty's default pick-list. If an industry value does not match any Twenty pick-list option, FlitStack maps it to the 'Other' option and records the original value in a custom field for later review and adjustment.

Perfect Books

Book Deal / Rights Contract

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Perfect Books deal records (book deals, rights agreements, royalty contracts) map to Twenty Opportunities. The publishing lifecycle stage (Proposal, Under Review, Contracted, Published, Rights Sold) maps to Twenty pipeline stages — value mapping applied per stage name. Deal monetary value (advance, royalty percentage) maps to Opportunity.amount; closeDate maps from expected_publication_date or contract_expiry_date.

Perfect Books

Deal stage

maps to

Twenty CRM

Opportunity — Stage

1:1
Fully supported

Each Perfect Books deal stage maps to a specific Twenty pipeline stage via value-by-value mapping. Stage names that don't have an exact Twenty equivalent (e.g., 'Rights Review', 'Contract Negotiation') are mapped to the closest stage and flagged for admin confirmation before migration commits.

Perfect Books

Book metadata (title, ISBN, format, publication_date)

maps to

Twenty CRM

Custom Object — Book (or Opportunity — custom fields)

1:1
Fully supported

If Perfect Books stores book as a separate entity related to deals, a Book custom object is created in Twenty with fields: title (text), isbn (text), format (select: hardcover/paperback/ebook/audio), publication_date (date). The Opportunity is linked to the Book custom object via a relation field. For simpler setups, these fields are added as custom fields on Opportunity.

Perfect Books

Note / Annotation

maps to

Twenty CRM

Note

1:1
Fully supported

Perfect Books annotations and editorial notes migrate as Twenty Notes. The note body maps to Note.body, the linked contact or publisher maps to Note.targetObject (Twenty supports attaching Notes to People, Companies, and Opportunities). Original timestamps are preserved as Note.createdAt. All notes are validated for length and stripped of any unsupported formatting before insertion to prevent import errors.

Perfect Books

Task / To-do

maps to

Twenty CRM

Task

1:1
Fully supported

Perfect Books tasks (follow-up reminders, manuscript review tasks, royalty payment reminders) map to Twenty Tasks. Task.dueDate maps from the source due date. Assignee is resolved by email match to a Twenty workspace member. Completed status maps to Task.completedAt. If a due date falls in the past, FlitStack flags the task for manual review and can optionally set it to the current date to avoid overdue anomalies.

Perfect Books

Author — Publisher relationship (N:N)

maps to

Twenty CRM

People — Company relation (N:1)

1:1
Fully supported

Perfect Books allows an author (contact) to be associated with multiple publishers simultaneously. Twenty supports a single primary company per contact via companyId. The primary publisher (most recent or highest-value contract) is assigned as companyId; additional publisher associations are preserved as a custom relation field or custom object (AuthorPublishers) if the team needs full N:N visibility.

Perfect Books

Custom publisher fields (territory_rights, print_run_size, translation_rights)

maps to

Twenty CRM

Custom fields on Company or Opportunity

1:1
Fully supported

Any Perfect Books custom fields tracking publishing-specific metadata (territory rights, translation rights, print run size, discount schedule) require pre-creation in Twenty's Data Model. Field type is matched (text, number, date, select) and pick-list values are carried over verbatim. We flag any field that uses a data type not natively supported by Twenty (e.g., complex formula fields) for admin decision before migration.

Perfect Books

Attachment / File

maps to

Twenty CRM

Twenty Files (via URL attachment or custom URL field)

1:1
Fully supported

Perfect Books may store contract PDFs, manuscript files, and cover images as attachments. Twenty's cloud version does not have a native attachment storage system equivalent to Salesforce Files. We migrate file attachment URLs as a custom URL field on the related record (Contact or Opportunity) and advise teams to host files in a separate document store (S3, Google Drive) 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.

Perfect Books logo

Perfect Books gotchas

High

Catalog website (perfectbooks.ca) is an Ottawa bookstore, not the Perfect Books legal accounting software

High

Three different software products carry similar branding

Medium

Trust account reconciliation conventions differ from non-legal accounting destinations

Medium

Time entry import requires rate-table reconciliation

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

  • Twenty's import order enforces foreign-key constraints — companies must load before people

    Twenty's CSV import engine requires that the 'one' side of every relationship exists before the 'many' side is imported. This means Companies must be imported first (so companyId resolves on People), then People (so personId resolves on Opportunities), then Opportunities, then any custom objects with relations last. Perfect Books deal records that reference both an author and a publisher require both the People record and the Company record to already exist in Twenty. FlitStack sequences the migration in exactly this order and flags any orphaned references before each phase runs.

  • Custom fields must be pre-created in Twenty's Data Model before CSV import

    Unlike some CRM platforms that create custom fields on-the-fly during import, Twenty requires all custom fields to exist in Settings → Data Model before a CSV import can populate them. Fields that don't exist in the schema are silently skipped during import. For Perfect Books migrations with multiple publisher-specific custom fields (royalty_rate, contract_type, territory_rights, book_format), FlitStack delivers a field-creation checklist as part of the pre-migration setup plan, so the Twenty workspace is ready before any data moves.

  • N:N author-to-publisher relationships collapse to 1:N in Twenty

    Perfect Books supports an author being contractually linked to multiple publishers simultaneously. Twenty's People object has a single primary companyId field, so only one publisher can be the primary relationship per contact. Any additional publisher links from Perfect Books are preserved as a custom AuthorPublisher junction object or as a custom multi-select field on the People record — your team chooses the approach during the migration planning call. The primary publisher is assigned by most-recently-modified contract date or by your specified rule.

  • Twenty has no native attachment storage — file attachments migrate as URL fields

    Perfect Books may store author contracts, manuscript PDFs, and cover art as file attachments on deal or contact records. Twenty's current cloud version does not have a native Salesforce Files-equivalent attachment storage system. FlitStack migrates file attachment URLs as a custom URL field on the relevant record and recommends establishing a document hosting strategy (Twenty's API can serve as the index; the files live in S3, Google Drive, or Dropbox). File content itself is not downloaded and re-uploaded in this migration.

  • Perfect Books automations do not migrate — workflow rebuild is a manual post-migration step

    Any automated rules in Perfect Books — royalty threshold alerts, contract renewal reminders, manuscript status change notifications — are configuration data that does not export via CSV or API. Twenty's workflow builder is the rebuild target. FlitStack exports your Perfect Books workflow definitions as a reference document (screenshots of rule conditions and actions) so your Twenty admin can rebuild equivalent automations. Budget 1–3 days of admin time for this step depending on the number of active rules.

Migration approach

Six steps for a successful Perfect Books to Twenty CRM data migration

  1. Extract Perfect Books data via CSV export and API read access

    FlitStack connects to Perfect Books using scoped read-only API access (or CSV export if the API is not available on your plan). We export all standard objects (contacts, companies, deals, tasks, notes) and any custom fields present in your Perfect Books schema. A pre-extraction data audit identifies duplicate records, stale contacts (no activity in 24+ months), and orphaned relationships so only active, relevant data enters the migration pipeline. This audit step typically takes 1–3 days depending on record volume.

  2. Design the Twenty CRM schema and pre-create custom fields

    Before any data loads, FlitStack delivers a schema setup plan for your Twenty workspace: a list of all custom fields to create (with field type, pick-list values, and required/unique settings), any custom objects needed (e.g., Book for ISBN metadata), and the recommended pipeline stage configuration. Your Twenty admin creates these fields in Settings → Data Model. Once the schema is confirmed ready, we run a field-level validation pass against a sample of 50–100 records to catch mapping errors before the full migration commits.

  3. Sequence and execute the migration in Twenty's required import order

    The migration runs in four sequenced phases: (1) Companies first so parentId resolves and companyId is available for People; (2) People second with email-matched companyId assignments; (3) Opportunities third with resolved companyId, personId, and stage value mapping; (4) Custom objects last with their relation fields pointing to the already-migrated parent records. Owner assignment across all objects is resolved by email match against Twenty workspace members. Any unmatched owners are flagged with a fallback assignee assignment for your review before final commit.

  4. Run a sample migration with field-level diff and reconciliation check

    A representative slice of records — typically 200–500 across contacts, companies, deals, and tasks — migrates first against the live Twenty workspace. FlitStack generates a field-level diff report comparing source values against the destination values for every mapped field. You verify that contract types, royalty rates, deal stages, and relationship links resolve correctly. Custom field creation and value mapping are validated at this stage. No records are permanently committed until you sign off on the diff report.

  5. Cut over with delta-pickup window and audit log

    After sample sign-off, the full migration runs. A delta-pickup window of 24–48 hours captures any records created or modified in Perfect Books during the cutover — your team keeps working in Perfect Books throughout. An audit log records every create, update, and relationship link operation. If reconciliation reveals missing records or incorrect mappings, one-click rollback reverts the Twenty workspace to its pre-migration state. After rollback verification, the migration re-runs with the corrected mapping logic before final go-live.

  6. Deliver workflow export reference and post-migration support

    FlitStack exports all Perfect Books workflow rule definitions as a structured reference document for your Twenty admin. This includes rule names, trigger conditions, action lists, and any conditional branching logic — the blueprint for rebuilding automations in Twenty's workflow builder. Post-migration support includes a 30-minute reconciliation call to validate record counts, relationship integrity, and custom field completeness against the source export. Any records that failed to migrate due to validation errors are flagged in a remediation report with correction instructions.

Platform deep dives

Context on both ends of the pair

Perfect Books logo

Perfect Books

Source

Strengths

  • Legal-vertical specialism with time recording, billing, and trust accounting designed for law firm workflows.
  • Remote/hybrid-friendly access for distributed practice staff and external bookkeepers.
  • Companion Perfect Case product provides integrated case management plus accounting from a single vendor.
  • Established UK legal market presence with domain familiarity for established firms.
  • Time recording built into the core platform without separate add-on cost.

Weaknesses

  • Name confusion with multiple unrelated Perfect-branded products complicates procurement and vendor discovery.
  • Limited public review presence on G2 and Capterra makes vendor due diligence harder.
  • Pricing is not publicly published; every quote requires UK sales engagement.
  • Smaller market footprint than Clio, MyCase, and PracticePanther limits third-party integrations and community support.
  • UK-region focus reduces fit for firms outside the UK with different tax, trust-account, and compliance requirements.
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. 2 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 Perfect Books and Twenty CRM.

  • Object compatibility

    B

    2 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

    Perfect Books: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Perfect Books to Twenty CRM migrations complete in 48–72 hours for setups under 10,000 records. Larger migrations with 50,000+ records, multiple custom objects (Book, AuthorPublisher), and complex imprint hierarchies extend to 5–10 days. The longest single step is schema setup in Twenty — creating all custom fields in Settings → Data Model before import — which your admin completes in parallel with FlitStack's pre-migration audit. The delta-pickup window adds 24–48 hours on top of the core migration runtime.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Perfect Books.
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