CRM migration
Field-level mapping, validation, and rollback between Handyman and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
Handyman
Source
Nutshell
Destination
Compatibility
11 of 11
objects map 1:1 between Handyman and Nutshell.
Complexity
BStandard
Timeline
48–72 hours
Overview
Handyman stores job-centric data: customers with addresses and phone numbers, jobs with service types and assigned technicians, estimates with line items, invoices with payment status. Nutshell is a sales CRM that organizes data around People, Companies, Leads, and Deals — it has no native work-order or job-management object. The migration translates Handyman job records into Nutshell Deals with custom fields for service type, job status, technician, and payment data. Estimates migrate as custom fields on Deals, preserving the quoted amount and approval status. Technicians resolve to Nutshell Users by email match; unmatched technicians are stored in a fallback custom field for audit continuity. All record timestamps and owner assignments are retained through custom datetime fields. We use Nutshell's JSON-RPC API to write records with custom field payloads. Because Nutshell lacks bulk endpoints, large datasets require staged migration with batch sequencing and rate‑limit compliance. Workflows, scheduling rules, and service‑area configurations are job‑management logic without a direct CRM equivalent; they must be rebuilt manually or documented for your Nutshell admin. Job notes, attachments, and internal comments attach as Nutshell Notes and Files linked to Deals, preserving historical context. The migration plan includes a pre‑flight phase that configures all custom pick‑list values and validates field mapping before any data moves.
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 Handyman object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Handyman
Customer
Nutshell
Person
1:1Handyman customers with name, email, phone, and address map directly to Nutshell People records. The contact email and phone populate standard Nutshell fields, while mobile and numbers transfer to the appropriate phone slots. Physical addresses map to Nutshell’s structured address fields, preserving street, city, state, and postal code. For customers with multiple locations, each address can be stored as a separate address line on the Person record, retaining location history.
Handyman
Company (business customer)
Nutshell
Company
1:1When Handyman customers are businesses (commercial clients), they map to Nutshell Company records. Company name, website, industry, and address fields transfer, while phone numbers populate the Company phone. If the business has multiple contacts in Handyman, each contact becomes a separate Person record linked to the same Company via Nutshell’s person‑company relationship. Revenue or size can be stored in custom fields on the Company record for segmentation and reporting.
Handyman
Job
Nutshell
Deal
1:1Each Handyman job becomes a Nutshell Deal. The job name maps to Deal Name, the estimated or final job amount maps to Deal Amount, and the job's close or completion date maps to Close Date. Service type, status, and technician data live in custom fields since Nutshell has no native job object.
Handyman
Job Status
Nutshell
Custom Field (Job_Status__c) on Deal
1:1Handyman job status values (Scheduled, In Progress, Completed, Cancelled) require a custom pick-list field on Nutshell Deals. We create Job_Status__c with the same values and map each job's status during migration. Stage probabilities in Nutshell can optionally be recalculated based on job status.
Handyman
Service Type
Nutshell
Custom Field (Service_Type__c) on Deal
1:1Handyman service types (plumbing, electrical, carpentry, HVAC, etc.) have no Nutshell equivalent, so a custom pick‑list field Service_Type__c is created on Deals to capture this information. The pick‑list values are defined to match Handyman’s service categories, allowing reports to filter and group deals by service line without parsing job description text. During migration, each Handyman job’s service type maps to the corresponding Service_Type__c value, preserving categorization for reporting and segmentation.
Handyman
Technician
Nutshell
User (matched by email)
1:1Handyman technicians resolve to Nutshell Users by email match. If a technician email matches an existing Nutshell user, the Job's assigned technician maps to the Deal owner. Unmatched technicians are flagged — their names populate a custom field (Original_Technician__c) on the Deal for audit continuity.
Handyman
Job Notes
Nutshell
Note on Deal
1:1Job notes and internal comments from Handyman attach as Nutshell Notes on the corresponding Deal, preserving creation timestamp and author attribution. Multi‑line notes transfer as Note Body text, and @mentions or linked contacts are represented as plain text for reference. If a Handyman job includes attachments, those files are uploaded to Nutshell Files and linked to the Deal, maintaining a record of information alongside the deal.
Handyman
Estimate
Nutshell
Custom Fields on Deal (Estimate_Amount__c, Estimate_Status__c)
1:1Handyman estimates with amounts and approval states map to custom fields on the Deal. Estimate_Amount__c (currency) holds the quoted amount; Estimate_Status__c (pick-list: Pending, Approved, Rejected) captures the approval state. The Deal Amount may be set to the approved estimate amount.
Handyman
Invoice
Nutshell
Custom Fields on Deal (Invoice_Number__c, Payment_Status__c)
1:1Invoice records from Handyman translate to custom fields on the associated Deal. Invoice_Number__c (text) stores the invoice reference, while invoice amount can be recorded in a custom currency field for visibility. Payment_Status__c (pick‑list: Unpaid, Paid, Overdue) tracks payment state, and the invoice due date can be saved in a custom date field if needed. Invoice line items that exist in Handyman become notes on the Deal, preserving details for reference.
Handyman
Job Attachments
Nutshell
Files on Deal
1:1Files attached to Handyman jobs — such as photos, signed documents, and receipts — are re‑uploaded to Nutshell Files and linked to the corresponding Deal. File names and timestamps are preserved to maintain audit continuity. Nutshell’s storage limits apply; any attachments exceeding those limits are flagged for review before the migration batch runs, allowing your team to compress, exclude, or store them externally with a reference note on the Deal.
Handyman
Schedule / Time Slot
Nutshell
Task linked to Deal
1:1Handyman job scheduling data becomes a Nutshell Task with a due date matching the scheduled appointment, preserving the time slot where available. The Task is linked to the Deal, providing scheduling visibility within Nutshell’s activity model. Task type can be set to ‘Job Scheduled’ for identification, and reminders can be added after migration if needed. Nutshell’s calendar integration surfaces these tasks for follow‑up, keeping appointment details visible to the team.
| Handyman | Nutshell | Compatibility | |
|---|---|---|---|
| Customer | Person1:1 | Fully supported | |
| Company (business customer) | Company1:1 | Fully supported | |
| Job | Deal1:1 | Fully supported | |
| Job Status | Custom Field (Job_Status__c) on Deal1:1 | Fully supported | |
| Service Type | Custom Field (Service_Type__c) on Deal1:1 | Fully supported | |
| Technician | User (matched by email)1:1 | Fully supported | |
| Job Notes | Note on Deal1:1 | Fully supported | |
| Estimate | Custom Fields on Deal (Estimate_Amount__c, Estimate_Status__c)1:1 | Fully supported | |
| Invoice | Custom Fields on Deal (Invoice_Number__c, Payment_Status__c)1:1 | Fully supported | |
| Job Attachments | Files on Deal1:1 | Fully supported | |
| Schedule / Time Slot | Task linked to Deal1: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.
Handyman gotchas
Pricing model terminology varies across destinations
Service history chunking for accounts with large job counts
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
Audit Handyman data model and configure Nutshell custom fields
We extract Handyman's full object schema — all standard and custom fields on jobs, customers, companies, technicians, estimates, and invoices. We compare this against Nutshell's native field set and identify every custom field needed on Deals, People, Companies, and Users. You receive a custom field specification sheet listing every field to create in Nutshell (Service_Type__c, Job_Status__c, Payment_Status__c, etc.) with pick-list values, field types, and where each appears on the Nutshell UI. Your Nutshell admin creates these fields before migration validation begins.
Resolve technicians and pre-create Nutshell users
Handyman technician records are matched against Nutshell Users by email address. We run a pre-flight resolution pass that identifies matches, non-matches, and duplicates. Unmatched technicians are flagged for your team — either invite them to Nutshell before migration or designate a fallback owner for their jobs. This step ensures every job record has a valid Nutshell owner assignment at migration time, avoiding records landing with no owner.
Run sample migration with field-level validation
A representative slice of records — typically 100–500 covering multiple customers, job types, statuses, and technicians — migrates first. We generate a field-level diff showing source values versus destination field contents for every mapped attribute. You verify that job status mapping, service type categorization, payment status values, and technician assignment all appear correctly in Nutshell. Sample validation catches pick-list mismatches, truncated text fields, and owner resolution errors before the full run commits.
Execute full migration with staged API writes
The full dataset migrates using Nutshell's JSON-RPC API in batched sequences. Because Nutshell lacks bulk endpoints, we pre-stage all record payloads with resolved owner IDs, custom field values, and linked entity references. Batches write sequentially with rate-limit compliance. Nutshell Files for attachments re-upload with Deal links. Job notes become Notes attached to their corresponding Deals. The migration audit log captures every write operation, record count, and any non-fatal errors encountered.
Delta pickup and reconciliation validation
After the full migration completes, a delta-pickup window (24–48 hours) captures any Handyman records created or modified during the cutover period. We run a reconciliation report comparing record counts by object type and sampling field values against source. You validate deal amounts, job status distributions, technician assignments, and payment status counts. If reconciliation identifies discrepancies above your defined threshold, one-click rollback is available. After sign-off, your team transitions fully to Nutshell.
Platform deep dives
Handyman
Source
Strengths
Weaknesses
Nutshell
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 Handyman and Nutshell.
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
Handyman: Not publicly documented.
Data volume sensitivity
Handyman 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 Handyman to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your Handyman to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Handyman
Other ways to arrive at Nutshell
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.