CRM migration

Migrate from Handyman to Nutshell

Field-level mapping, validation, and rollback between Handyman and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.

Handyman logo

Handyman

Source

Nutshell

Destination

Nutshell logo

Compatibility

100%

11 of 11

objects map 1:1 between Handyman and Nutshell.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Handyman logo

Handyman

What's pushing teams away

  • Limited scalability beyond small team sizes, with businesses outgrowing the platform as they add multiple technicians or crews.
  • Feature set narrows for businesses expanding into specialty trades that require more complex project management capabilities.
  • Integration ecosystem narrower than larger competitors, making it difficult to connect with specialized accounting or CRM tools.

Choosing

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How Handyman objects map to Nutshell

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

maps to

Nutshell

Person

1:1
Fully supported

Handyman 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)

maps to

Nutshell

Company

1:1
Fully supported

When 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

maps to

Nutshell

Deal

1:1
Fully supported

Each 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

maps to

Nutshell

Custom Field (Job_Status__c) on Deal

1:1
Fully supported

Handyman 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

maps to

Nutshell

Custom Field (Service_Type__c) on Deal

1:1
Fully supported

Handyman 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

maps to

Nutshell

User (matched by email)

1:1
Fully supported

Handyman 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

maps to

Nutshell

Note on Deal

1:1
Fully supported

Job 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

maps to

Nutshell

Custom Fields on Deal (Estimate_Amount__c, Estimate_Status__c)

1:1
Fully supported

Handyman 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

maps to

Nutshell

Custom Fields on Deal (Invoice_Number__c, Payment_Status__c)

1:1
Fully supported

Invoice 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

maps to

Nutshell

Files on Deal

1:1
Fully supported

Files 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

maps to

Nutshell

Task linked to Deal

1:1
Fully supported

Handyman 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.

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.

Handyman logo

Handyman gotchas

Medium

Pricing model terminology varies across destinations

Low

Service history chunking for accounts with large job counts

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • Nutshell JSON-RPC API lacks bulk endpoints — large migrations require batch sequencing

    Nutshell's API operates on a per-record write model via JSON-RPC. Unlike REST APIs that support batch or bulk operations, each record in Handyman must be written individually to Nutshell. For migrations exceeding 5,000 records, this extends migration duration because API rate limits and per-call latency compound. We mitigate this by pre-computing all mappings in a staging phase, then running API writes in optimized batches with exponential backoff to stay within Nutshell's rate limits while maximizing throughput.

  • Job-to-deal mapping splits Handyman's unified job context across multiple fields

    Handyman stores job data — service type, status, technician, schedule, invoice — in a single record. Nutshell's Deal object has no native fields for these attributes. The migration creates multiple custom fields on Deals (Service_Type__c, Job_Status__c, Technician__c, Payment_Status__c) to preserve this context. However, Nutshell's custom field UI limits apply — each field counts toward per-object limits. Teams with many custom job types should pre-audit their Handyman configuration to avoid hitting Nutshell's custom field ceiling before migration completes.

  • Technician role and skill data has no Nutshell equivalent — flat user model applies

    Handyman technicians have skills, certifications, service areas, and hourly rates stored as native attributes. Nutshell's user model is intentionally flat — users have names, emails, and admin/standard roles but no skill or certification fields. The migration resolves technicians by email match to Nutshell Users and stores skill/certification data in custom fields on the User record (Technician_Skills__c). Your admin should pre-create Nutshell users for all active technicians before migration so owner assignment works on the first run.

  • Job status value-mapping requires pre-migration pick-list configuration

    Handyman's job status values (e.g., Pending, Scheduled, En Route, In Progress, On Hold, Completed, Cancelled) vary by Handyman configuration. Nutshell's custom pick-list fields require values to be defined before records can import. The migration plan includes a pre-flight phase where we identify all Handyman job status values, configure matching Nutshell pick-list values in Job_Status__c, and validate that every source status has a destination value before any records move. Status values that exist in Handyman but are not pre-configured in Nutshell will be flagged and require manual pick-list entry before the migration batch resumes.

  • Job attachments exceeding Nutshell file size limits require manual review

    Handyman job attachments — photos, signed documents, receipts — may include files larger than Nutshell's storage limits. Nutshell's documentation specifies per-file upload constraints that apply to Files attached to Deals. During pre-migration scanning, we identify attachments exceeding Nutshell's size threshold and flag them for manual review. Your team decides whether to compress, exclude, or store oversized files externally with a link reference in the Deal note. This manual step occurs before the full migration batch to avoid partial failures mid-run.

Migration approach

Six steps for a successful Handyman to Nutshell data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Handyman logo

Handyman

Source

Strengths

  • Purpose-built for handyman and general trades with terminology that matches the trade.
  • Integrated job management, scheduling, and invoicing without requiring third-party integrations.
  • Supports multiple pricing models including flat-rate and time-and-materials billing.

Weaknesses

  • Narrower integration ecosystem compared to enterprise field service platforms.
  • Limited scaling for businesses with multiple crews or complex organizational structures.
  • Fewer advanced features for specialty trades or project-based work beyond simple jobs.
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

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 Handyman and Nutshell.

  • 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

    Handyman: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Handyman to Nutshell 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 Handyman to Nutshell data migrations

Answers to the questions buyers ask most during Handyman to Nutshell migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Handyman to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Handyman-to-Nutshell migrations complete in 48–72 hours for under 5,000 records. Larger datasets (20,000+ records) extend to 5–10 days due to Nutshell's per-record API model requiring batched writes rather than bulk operations. Custom field configuration and technician resolution add 1–2 days of pre-migration planning. Timeline is driven primarily by record count, number of custom fields needed, and whether Handyman has complex pick-list values requiring value-mapping setup.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Handyman.
Land in Nutshell, 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