CRM migration
Field-level mapping, validation, and rollback between Perfect Books and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Perfect Books
Source
Salesforce Sales Cloud
Destination
Compatibility
12 of 12
objects map 1:1 between Perfect Books and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
Perfect Books serves authors and small publishers as a lightweight catalog and royalty tracker, but its data model lacks the multi-object relationships and reporting depth that scaling publishing operations require. Salesforce Sales Cloud's Account-Contact-Opportunity architecture lets you model author relationships as Accounts with Contact records, publication rights as Opportunities with custom fields, and royalty schedules as custom objects with lookup relationships. We map Perfect Books contacts to Salesforce Contacts, author companies to Accounts, publication deals to Opportunities with custom fields for ISBN, format, and rights type, and royalty tracking to a custom Royalty_Schedule__c object. The migration carries all natively stored data — contacts, companies, deals, activities, custom fields — into Salesforce's record-type + field-level security model. Workflows, email templates, and automations built in Perfect Books do not transfer and must be rebuilt in Salesforce Flow. Our approach uses Salesforce Bulk API for high-volume record loads, with a 24–48 hour delta-pickup window capturing any in-flight changes during cutover.
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 Salesforce Sales Cloud, 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)
Salesforce Sales Cloud
Contact
1:1Perfect Books author contacts map directly to Salesforce Contacts. The contact's primary publisher (if applicable) becomes AccountId lookup. Pen name stored as a custom field; legal name maps to FirstName and LastName. Owner resolved by email match against Salesforce Users.
Perfect Books
Company (Publisher/Agency)
Salesforce Sales Cloud
Account
1:1Perfect Books publisher and literary agency records map directly to Salesforce Accounts using the Account object. Account Name field maps to Name; website URL maps to Website; billing address details map to BillingAddress composite fields. Industry field defaults to 'Publishing' classification unless explicitly specified in source data, ensuring proper categorization in Salesforce reports and dashboards.
Perfect Books
Deal (Book Sale/Royalty Agreement)
Salesforce Sales Cloud
Opportunity
1:1Perfect Books book deals transform into Salesforce Opportunities with custom fields for ISBN, format (print/ebook/audio), rights type (world English, translation, film), and royalty percentage. StageName maps from Perfect Books deal status: 'Active' → 'Negotiation', 'Signed' → 'Closed Won', 'Expired' → 'Closed Lost'.
Perfect Books
Royalty Schedule
Salesforce Sales Cloud
Royalty_Schedule__c (Custom Object)
1:1Perfect Books royalty schedules require a custom object in Salesforce because standard Opportunities do not store multi-row royalty breakdowns. We create Royalty_Schedule__c with lookup to Opportunity, fields for Author_Contact__c, Royalty_Type__c, Royalty_Percentage__c, and Advance_Amount__c. This is the highest-complexity object in the migration.
Perfect Books
Custom Field: ISBN
Salesforce Sales Cloud
ISBN__c (Custom Field on Opportunity)
1:1Perfect Books tracks ISBN at the title level as free-form text. We create ISBN__c as a Text field on the Opportunity object in Salesforce. ISBN-13 values are stored as strings to preserve hyphenation patterns; during migration, a transformation step applies ISBN-13 format validation using regex rules. Post-migration, a Salesforce validation rule enforces the correct ISBN-13 pattern on all new entries.
Perfect Books
Activity (Email/Call/Meeting with Author)
Salesforce Sales Cloud
Task / Event
1:1Perfect Books activities logged against contacts map to Salesforce Tasks for calls and emails, and Events for scheduled meetings. Original activity timestamps and record owners are preserved throughout the migration. The Task WhatId field links to the related Opportunity or Account record, maintaining the relationship context within Salesforce for activity reporting.
Perfect Books
Attachment (Manuscript/Contract)
Salesforce Sales Cloud
ContentDocument (Salesforce Files)
1:1Perfect Books file attachments including manuscripts, contracts, and cover art are re-uploaded to Salesforce Files. Files are linked to the parent record (Contact or Opportunity) via ContentDocumentLink. Salesforce default file size limit is 25MB per file; larger manuscripts exceeding this threshold are split into multiple files with a note referencing the complete set.
Perfect Books
Custom Field: Genre/Category
Salesforce Sales Cloud
Genre__c (Custom Picklist on Opportunity)
1:1Perfect Books genre tags migrate to Genre__c as a multi-select picklist on the Opportunity object. We deduplicate source genre values from Perfect Books before applying Salesforce picklist value mapping. Any unmapped genre values from the source system are preserved as text in a secondary custom field to prevent data loss during the transition.
Perfect Books
Custom Field: Format
Salesforce Sales Cloud
Format__c (Custom Picklist on Opportunity)
1:1Format information (print, ebook, audiobook, translation) maps to Format__c picklist field on Opportunity. Each distinct format may generate a separate Opportunity record per rights agreement depending on your business rules. During migration planning, your team specifies the split rule to determine whether multi-format deals become single or multiple Opportunity records.
Perfect Books
User/Owner
Salesforce Sales Cloud
User (OwnerId)
1:1Perfect Books user accounts are matched to Salesforce Users by email address lookup. Unmatched owners are flagged in a pre-migration report for team review. Records without matched owners are assigned to a designated fallback owner or held pending Salesforce user provisioning. This ownership resolution step is completed before data loads to prevent ownership gaps in the target system.
Perfect Books
Note
Salesforce Sales Cloud
Note
1:1Perfect Books notes migrate to Salesforce Notes rather than the legacy Note object. The body text content is preserved intact, and parent record links are maintained to ensure notes attach to the correct Contact, Account, or Opportunity. Rich-text formatting present in Perfect Books notes converts to plain text with line breaks preserved, ensuring readability in the target system.
Perfect Books
Custom Object: Rights
Salesforce Sales Cloud
Rights__c (Custom Object)
1:1If Perfect Books tracks foreign rights, subsidiary rights, or subsidiary rights separately, we create a Rights__c custom object with lookup to the parent Opportunity and fields for Territory__c, Language__c, Rights_Type__c, and Exclusivity__c. This is created only if source data contains rights-type fields.
| Perfect Books | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact (Author) | Contact1:1 | Fully supported | |
| Company (Publisher/Agency) | Account1:1 | Fully supported | |
| Deal (Book Sale/Royalty Agreement) | Opportunity1:1 | Fully supported | |
| Royalty Schedule | Royalty_Schedule__c (Custom Object)1:1 | Fully supported | |
| Custom Field: ISBN | ISBN__c (Custom Field on Opportunity)1:1 | Fully supported | |
| Activity (Email/Call/Meeting with Author) | Task / Event1:1 | Fully supported | |
| Attachment (Manuscript/Contract) | ContentDocument (Salesforce Files)1:1 | Fully supported | |
| Custom Field: Genre/Category | Genre__c (Custom Picklist on Opportunity)1:1 | Fully supported | |
| Custom Field: Format | Format__c (Custom Picklist on Opportunity)1:1 | Fully supported | |
| User/Owner | User (OwnerId)1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Custom Object: Rights | Rights__c (Custom Object)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
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Audit Perfect Books data and map to Salesforce schema
FlitStack AI extracts a full data export from Perfect Books including contacts, companies, deals, royalty schedules, activities, and attachments. We map the export fields to Salesforce standard and custom objects, create custom fields (__c) in your Salesforce org via API, and define the Royalty_Schedule__c object schema. The mapping document is shared with your team for sign-off before any data moves.
Resolve owners and provision Salesforce users
Perfect Books user accounts are matched to Salesforce Users by email address lookup during the pre-migration phase. Any Perfect Books owner without a corresponding Salesforce user account appears in a pre-migration report for your team to review and action. Your team either provisions the missing Salesforce user before the migration run begins, or designates a designated fallback owner for unresolved records. No record lands in Salesforce without a resolved OwnerId field to maintain proper ownership attribution.
Sequence the migration: Accounts → Contacts → Opportunities → Custom Objects → Activities
Salesforce enforces foreign-key dependency ordering that requires careful sequencing of the migration load order. Accounts must load before Contacts because Contact.AccountId creates a lookup dependency. Contacts must load before Opportunities because Opportunity Contact Roles and author lookups require Contact records to exist. Opportunities must load before Royalty_Schedule__c records because the custom royalty object contains an Opportunity lookup field. Attachments and notes are loaded last after their parent records exist in Salesforce to maintain proper ContentDocumentLink relationships.
Run a sample migration with field-level diff
A representative slice of typically 100–500 records spanning contacts, accounts, opportunities, royalty schedules, and a selection of activities migrates first as a validation checkpoint. We generate a comprehensive field-level diff report that compares source values from Perfect Books to Salesforce field values after migration. This report enables your team to verify ISBN formatting accuracy, royalty percentage precision, owner resolution correctness, and stage-name mapping fidelity before the full migration run commits to the production Salesforce org.
Execute full migration with delta-pickup and rollback available
The full migration loads all remaining records using Salesforce Bulk API 2.0 for high-volume efficiency. A delta-pickup window spanning 24–48 hours after the initial load captures any changes made in Perfect Books during the cutover period so Salesforce reflects the final state at go-live. A comprehensive audit log tracks every load operation with timestamps and record counts. If reconciliation fails or unexpected issues arise, a one-click rollback reverts the Salesforce org to its pre-migration state without manual intervention.
Platform deep dives
Perfect Books
Source
Strengths
Weaknesses
Salesforce Sales Cloud
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 Salesforce Sales Cloud.
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 Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Perfect Books to Salesforce Sales Cloud 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 Salesforce Sales Cloud
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.