CRM migration
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
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Perfect Books and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Twenty CRM
People
1:1Perfect 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)
Twenty CRM
People — custom fields
1:1Perfect 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
Twenty CRM
Company
1:1Perfect 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
Twenty CRM
Company — Website, industry
1:1Publisher 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
Twenty CRM
Opportunity
1:1Perfect 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
Twenty CRM
Opportunity — Stage
1:1Each 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)
Twenty CRM
Custom Object — Book (or Opportunity — custom fields)
1:1If 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
Twenty CRM
Note
1:1Perfect 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
Twenty CRM
Task
1:1Perfect 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)
Twenty CRM
People — Company relation (N:1)
1:1Perfect 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)
Twenty CRM
Custom fields on Company or Opportunity
1:1Any 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
Twenty CRM
Twenty Files (via URL attachment or custom URL field)
1:1Perfect 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.
| Perfect Books | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact / Author | People1:1 | Fully supported | |
| Contact custom fields (royalty_rate, contract_type) | People — custom fields1:1 | Fully supported | |
| Publisher / Imprint | Company1:1 | Fully supported | |
| Publisher website and industry | Company — Website, industry1:1 | Fully supported | |
| Book Deal / Rights Contract | Opportunity1:1 | Fully supported | |
| Deal stage | Opportunity — Stage1:1 | Fully supported | |
| Book metadata (title, ISBN, format, publication_date) | Custom Object — Book (or Opportunity — custom fields)1:1 | Fully supported | |
| Note / Annotation | Note1:1 | Fully supported | |
| Task / To-do | Task1:1 | Fully supported | |
| Author — Publisher relationship (N:N) | People — Company relation (N:1)1:1 | Fully supported | |
| Custom publisher fields (territory_rights, print_run_size, translation_rights) | Custom fields on Company or Opportunity1:1 | Fully supported | |
| Attachment / File | Twenty Files (via URL attachment or custom URL field)1:1 | Fully supported |
Gotchas + challenges
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 gotchas
Catalog website (perfectbooks.ca) is an Ottawa bookstore, not the Perfect Books legal accounting software
Three different software products carry similar branding
Trust account reconciliation conventions differ from non-legal accounting destinations
Time entry import requires rate-table reconciliation
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Perfect Books
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Perfect Books and Twenty CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Perfect Books: Not publicly documented.
Data volume sensitivity
Perfect Books doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Perfect Books to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Perfect Books
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.