CRM migration
Field-level mapping, validation, and rollback between OctopusPro and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
OctopusPro
Source
Nutshell
Destination
Compatibility
5 of 8
objects map 1:1 between OctopusPro and Nutshell.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from OctopusPro to Nutshell is a shift from field-service management to sales CRM. OctopusPro is built around the booking lifecycle — Customers, Bookings, Field Workers, Invoices, and Services — while Nutshell centers on Contacts, Accounts, Leads, Opportunities, and Activities. These are different object models with no one-to-one correspondence: OctopusPro Bookings map to a combination of Nutshell Contacts, Activity Notes, and optional custom fields; Invoices and Payments have no native Nutshell equivalent and migrate as structured notes. The migration begins with a support-assisted export from OctopusPro because no public API exists, then proceeds through field discovery, schema mapping, and API-based import into Nutshell. Automations, the Customer Portal, and field-service-specific scheduling features do not migrate; we document them for your admin to evaluate against Nutshell's workflow and reporting tools.
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 OctopusPro 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.
OctopusPro
Customer
Nutshell
Contact (primary) + Account (secondary)
lossyOctopusPro Customer records map directly to Nutshell Contact. Standard fields (name, phone, email, address, notes) transfer via the Nutshell JSON-RPC API. If the customer operates a business-to-business model with multiple Contacts per company, we also create a Nutshell Account and link Contacts to it using the Customer's primary address domain as the Account name. Custom fields on Customer profiles (e.g., pet health history, gate codes, vertical-specific properties) migrate to Nutshell custom fields on Contact, but note that Nutshell's API does not support searching by custom field value, so these are flag fields rather than lookup keys.
OctopusPro
Booking
Nutshell
Activity Note + custom Contact field
1:manyOctopusPro Bookings are the core linking object — they connect a Customer, a Field Worker, a Service, a time slot, a status, and optionally an Invoice. Nutshell has no booking object. We decompose each Booking into: a Note on the Contact capturing booking details (service name, date, time slot, status, assigned field worker, notes), a custom Contact field booking_status__c for current active bookings, and a Tag on the Contact using the service name for filtering. Booking status history is preserved as separate chronological Notes if the customer requires an audit trail.
OctopusPro
Field Worker
Nutshell
User
1:1OctopusPro Field Worker records (name, role, contact details, pay rates, location tracking preferences) map to Nutshell User accounts. We resolve Field Workers by email match against the Nutshell User table. Field workers who are not Nutshell users (e.g., subcontractors who should not have CRM access) are mapped to Contact records with a role tag field worker__c rather than a User account.
OctopusPro
Invoice
Nutshell
Note (structured) on Contact
1:1OctopusPro Invoices (line items, tax, totals, payment status) linked to Bookings have no native Nutshell equivalent. We migrate each Invoice as a structured Note attached to the linked Contact, with a header row format: INVOICE | InvoiceNumber | Date | Amount | Status | BalanceDue. Payment records linked to the Invoice append as PAYMENT rows within the same Note block. This preserves the financial record against the customer but is not a queryable financial object in Nutshell.
OctopusPro
Payment
Nutshell
Note row (appended to Invoice Note)
1:1Payments (amount, method, date, status, reference) migrate as PAYMENT rows appended to the structured Invoice Note on the Contact. Partial payments and refunds are noted with separate rows. Full financial reconciliation requires the customer to maintain OctopusPro's export as the authoritative financial record post-migration.
OctopusPro
Quote / Estimate
Nutshell
Opportunity
1:1OctopusPro Quotes (line items, validity dates, accept/reject status) map to Nutshell Opportunity records. The Quote total maps to the Opportunity amount field. Status mapping: draft → Prospecting, sent → Presentation/Proposal, accepted → Won (or the equivalent stage in the customer's Nutshell pipeline), rejected → Lost. Quote validity dates migrate as a custom Opportunity field quote_valid_until__c.
OctopusPro
Service
Nutshell
Product (via Opportunity)
1:1OctopusPro Service definitions (name, description, pricing rules, duration) map to Nutshell Products if the customer uses Nutshell's Opportunity-based quoting. Services without pricing rules migrate as Products with a $0 list price. Service duration migrates as a custom field service_duration_minutes__c on the Product. We create Products before Opportunities so that line items reference the correct Product2 ID during import.
OctopusPro
Forms & Checklists
Nutshell
Note on Contact
lossyOctopusPro Forms and field checklists capture structured data (job photos, tags, intake information) attached to Bookings. Schema varies by service type. We migrate available checklist fields as a Note attached to the Contact, using a key-value format. Schema varies by service; we flag any fields that require a Nutshell custom field creation and defer those until the custom field is provisioned in the destination.
| OctopusPro | Nutshell | Compatibility | |
|---|---|---|---|
| Customer | Contact (primary) + Account (secondary)lossy | Fully supported | |
| Booking | Activity Note + custom Contact field1:many | Fully supported | |
| Field Worker | User1:1 | Fully supported | |
| Invoice | Note (structured) on Contact1:1 | Fully supported | |
| Payment | Note row (appended to Invoice Note)1:1 | Fully supported | |
| Quote / Estimate | Opportunity1:1 | Fully supported | |
| Service | Product (via Opportunity)1:1 | Fully supported | |
| Forms & Checklists | Note on Contactlossy | Mapping required |
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.
OctopusPro gotchas
Booking Fee vs Commission billing model affects migration cost estimates
Incorrect charges and billing disputes are documented in reviews
No documented public API or bulk export mechanism
Customer Portal settings do not migrate independently
Custom field schema is tenant-specific and must be discovered before mapping
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
Export coordination with OctopusPro support
We initiate a support request to OctopusPro on the customer's behalf requesting a structured data export covering Customers, Bookings, Field Workers, Invoices, Payments, Quotes, Services, and Custom Fields. Because OctopusPro has no self-service export tool, this step depends on their support team's responsiveness. We set expectations at two to five business days and ask the customer to reference the open ticket if they have an existing relationship with OctopusPro support. Upon receiving the export files, we validate record counts and field coverage before proceeding.
Custom field discovery and schema mapping
We review the OctopusPro export for all custom fields on Customer profiles and Bookings. Custom field schema is tenant-specific and varies by service vertical. We create corresponding Nutshell custom fields on Contact for each discovered custom field. Because Nutshell's API cannot search by custom field value, we configure custom fields as display and flag fields rather than as lookup keys. We document any OctopusPro custom fields with no Nutshell equivalent and propose a text-field fallback or Note-based approach during scoping.
Nutshell API access and owner reconciliation
We authenticate to Nutshell's JSON-RPC API using the customer's domain and API token (HTTP Basic auth: domain:token). We extract all existing Users and validate that each OctopusPro Field Worker has a corresponding Nutshell User by email match. Field Workers without a match go to a reconciliation queue for the customer to provision Nutshell Users. We also configure any required Nutshell custom fields, Products, and Account structures before record import begins.
Staged import in dependency order
We import records in dependency order: Nutshell Users first (manual, validated), then Accounts (from OctopusPro business-to-business Customers), then Contacts (with Account lookups resolved), then Services (as Nutshell Products), then Quotes (as Opportunities), then Bookings and Invoice/Payment history (as structured Notes on the linked Contact). Each phase emits a row-count reconciliation report before the next phase begins. We apply batch chunking and exponential backoff on find requests to respect Nutshell's rate limits.
Cutover, validation, and handoff
We freeze OctopusPro writes during the cutover window, run a final delta import of any records modified during migration, and enable Nutshell as the system of record. We deliver a reconciliation report comparing source and destination record counts across all object types. We deliver the Automation inventory document to the customer's admin for Nutshell workflow evaluation. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild OctopusPro Automations or Customer Portal settings inside the migration scope.
Platform deep dives
OctopusPro
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 OctopusPro 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
OctopusPro: Not publicly documented.
Data volume sensitivity
OctopusPro 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 OctopusPro to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your OctopusPro 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 OctopusPro
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.