CRM migration
Field-level mapping, validation, and rollback between Perfect Books and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Perfect Books
Source
Freshsales
Destination
Compatibility
9 of 10
objects map 1:1 between Perfect Books and Freshsales.
Complexity
BStandard
Timeline
24–48 hours
Overview
Perfect Books and Freshsales model CRM data differently at the object level. Perfect Books stores contacts with embedded company data in a single contact record. Freshsales separates Leads and Contacts from Accounts (the company object) and uses a lookup relationship via AccountId. This structural difference is the core migration challenge: every Perfect Books contact with inline company data must resolve to both a Freshsales Contact record and a Freshsales Account record before the relationship can establish correctly. We map all standard Perfect Books fields (name, email, phone, address, deal name, amount, stage, close date, owner) directly to their Freshsales counterparts. Any Perfect Books custom fields require Freshsales custom field creation before migration — we deliver a pre-migration setup plan listing every custom field to create with type, label, and pick-list values. Workflows, automation rules, and sequences do not migrate; we export your workflow definitions as a rebuild reference for your Freshsales admin. The migration uses Freshsales' REST API with batched record commits, scoped read access on Perfect Books so your team keeps working, and a 48-hour delta window capturing in-flight changes at 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 Freshsales, 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
Freshsales
Contact (Freshsales)
1:1Direct map for standard contact fields. Perfect Books contacts without a company affiliation land directly as Freshsales Contacts. For contacts with inline Perfect Books company data, an Account record is created first and the Contact is linked via AccountId. This ensures every contact with embedded company information resolves to both a Contact and an Account in Freshsales, maintaining the relationship integrity of the original data.
Perfect Books
Contact
Freshsales
Lead (Freshsales)
1:manyPerfect Books contacts at the 'Prospect' or 'Unqualified' lifecycle stage route to Freshsales Leads. Contacts marked as 'Customer' or 'Active' route to Freshsales Contacts. The split is based on the Perfect Books contact status field value at migration time. This ensures unqualified prospects enter Freshsales as Leads for further nurturing, while established customers become Contacts with full account history.
Perfect Books
Company (inline on Contact)
Freshsales
Account (Freshsales)
1:1Perfect Books stores company name, domain, industry, and employee count directly on the contact record. These extract into a Freshsales Account record linked to the Contact by AccountId. Deduplication logic groups contacts sharing the same company name into a single Account.
Perfect Books
Deal
Freshsales
Opportunity (Freshsales)
1:1Perfect Books deals map to Freshsales Opportunities. The deal name becomes Opportunity Name, amount maps to Amount, close date maps to CloseDate, and owner resolves by email match to Freshsales users. Pipeline and stage values map via the value-mapping table defined per pipeline.
Perfect Books
Pipeline
Freshsales
Sales Pipeline (Freshsales)
1:1Perfect Books pipelines map 1:1 to Freshsales sales pipelines. Each pipeline retains its stage sequence and stage names. Stage order is preserved; stage probability values are mapped from Perfect Books' stage configuration. This one-to-one mapping ensures pipeline visibility and reporting continuity carry over without requiring pipeline reconstruction in Freshsales.
Perfect Books
Pipeline Stage
Freshsales
Stage (Freshsales Opportunity)
1:1Perfect Books stage names map value-by-value to Freshsales stage names. Where Perfect Books uses a stage-entered timestamp, that date is stored in a custom datetime field (Stage_Entered_Date__c) on the Opportunity for reporting continuity. This preserves historical stage timing data that would otherwise be lost during migration.
Perfect Books
Custom Field (any object)
Freshsales
Custom Field (Freshsales)
1:1Every Perfect Books custom property requires a corresponding Freshsales custom field to be created before migration. We deliver a pre-migration setup plan specifying field label, type (text, number, picklist, date, datetime), and any pick-list values to pre-populate. This ensures all custom data has a destination field ready before the migration run begins.
Perfect Books
Activity (Call, Email, Meeting, Note)
Freshsales
Task / Event / Note (Freshsales)
1:1Perfect Books call logs map to Freshsales Tasks with Type='Call'; emails map to Tasks with Type='Email'; meetings map to Events with start and end times preserved; notes map to Freshsales Notes with original timestamps and parent-record links retained. All activity history maintains its chronological context in the destination system.
Perfect Books
Attachment / File
Freshsales
Attachment (Freshsales)
1:1Perfect Books file attachments on contacts, companies, or deals are downloaded and re-uploaded to Freshsales as attachments linked to the corresponding record. File size limits per Freshsales apply; files exceeding the limit are flagged for manual handling. This preserves document context alongside related CRM records.
Perfect Books
User / Owner
Freshsales
User (Freshsales)
1:1Perfect Books owner IDs are resolved by email match against Freshsales users. Unmatched owners are flagged before migration — the team either creates Freshsales user accounts for them or assigns their records to a fallback owner. No record lands without a valid Freshsales OwnerId.
| Perfect Books | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Contact (Freshsales)1:1 | Fully supported | |
| Contact | Lead (Freshsales)1:many | Fully supported | |
| Company (inline on Contact) | Account (Freshsales)1:1 | Fully supported | |
| Deal | Opportunity (Freshsales)1:1 | Fully supported | |
| Pipeline | Sales Pipeline (Freshsales)1:1 | Fully supported | |
| Pipeline Stage | Stage (Freshsales Opportunity)1:1 | Fully supported | |
| Custom Field (any object) | Custom Field (Freshsales)1:1 | Fully supported | |
| Activity (Call, Email, Meeting, Note) | Task / Event / Note (Freshsales)1:1 | Fully supported | |
| Attachment / File | Attachment (Freshsales)1:1 | Fully supported | |
| User / Owner | User (Freshsales)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
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Analyze Perfect Books data model and identify field mapping
We read every exported object and field from Perfect Books — contacts, companies, deals, activities, and any custom properties. We compare the source schema against Freshsales' standard field names and identify every field that requires a custom field to be created in Freshsales before migration. The output is a field mapping spreadsheet and a pre-migration setup checklist specifying every custom field to create with type, label, and pick-list values.
Create Freshsales custom fields from the pre-migration checklist
Your Freshsales admin (or our team acting as admin) creates the custom fields identified in step 1. Once created, we verify the field identifiers match the mapping spreadsheet and confirm that pick-list values are pre-populated exactly as they appear in Perfect Books. No data moves until this step is complete and verified. This verification pass ensures the destination schema is ready to receive all custom field values without silent drops or mapping mismatches.
Resolve owners and validate user accounts in Freshsales
Perfect Books owner IDs are matched to Freshsales users by email address. Any Perfect Books owner whose email does not correspond to an existing Freshsales user account is flagged for your team to address. Your team either creates a Freshsales user for that person or designates a fallback owner before the migration run. No record commits without a resolved OwnerId, ensuring every migrated record has an assigned owner in Freshsales.
Run a sample migration with field-level diff
A representative slice of records — typically 100–500 covering contacts across different lifecycle stages, accounts, deals in multiple pipelines, and a sample of activities — migrates first. We generate a field-level diff report comparing source values to destination values so you can verify lifecycle stage mapping, deal stage routing, company-to-account resolution, and owner assignment before the full run commits. This validation step catches mapping errors early.
Execute full migration with delta-pickup window and audit log
The full migration runs against Freshsales using batched API commits with retry logic. A 48-hour delta-pickup window runs in parallel, capturing any records created or modified in Perfect Books during the cutover period. Every operation is logged in an audit trail. One-click rollback is available if reconciliation identifies data integrity issues. Post-migration, we deliver a reconciliation report showing record counts by object, any records that failed to migrate, and the reason for each failure.
Platform deep dives
Perfect Books
Source
Strengths
Weaknesses
Freshsales
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 Freshsales.
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 Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Perfect Books to Freshsales 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 Freshsales
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.