CRM migration

Migrate from Opal CRM to Nutshell

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

Opal CRM logo

Opal CRM

Source

Nutshell

Destination

Nutshell logo

Compatibility

50%

4 of 8

objects map 1:1 between Opal CRM and Nutshell.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Opal CRM to Nutshell addresses two core pain points: the absence of a documented API in Opal CRM, which forces manual data extraction, and the limited integration ecosystem that makes growing teams hit walls with third-party tools. Nutshell provides unlimited contacts and data storage on all plans, a documented REST API, and native marketing automation starting at the Marketing Pro tier. We extract Opal CRM data via a coordinated manual export, validate record counts against the platform UI, then load into Nutshell in dependency order: Users first, then Companies (if present), then Leads and People, followed by Opportunities, Quotations, and activity history. Tour Plans do not map to a native Nutshell object, so we decompose each plan into a dated task sequence with expense line items stored as structured notes. Quotations carry their approval workflow state as a custom field for the customer to review post-migration. We do not migrate workflows, sequences, or role-based permissions as code; we deliver a written inventory of these for the admin to rebuild in Nutshell.

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

Opal CRM logo

Opal CRM

What's pushing teams away

  • Limited integrations beyond two-lines-of-code setup mean teams with established tech stacks hit walls when connecting to accounting, marketing, or telephony tools.
  • Small user review sample on G2 and Capterra makes it difficult to assess long-term reliability and support quality before committing.
  • No clear public documentation for a REST API or bulk export endpoint means teams cannot programmatically migrate data or build automated workflows.
  • Scalability concerns emerge as teams grow beyond the Standard plan — pricing is per-organization rather than per-user, and feature gates between tiers are not clearly documented.
  • Support responsiveness is not quantified on the website, and the absence of a public status page or community forum makes it hard to gauge ongoing platform reliability.

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 Opal CRM objects map to Nutshell

Each row shows how a Opal CRM 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.

Opal CRM

Lead

maps to

Nutshell

Person or Lead

1:many
Fully supported

Opal CRM Lead records map to Nutshell Person (if the contact has a direct relationship with a sales opportunity) or Nutshell Lead (if the contact is still unqualified). We apply a qualification split rule during scoping based on whether the Lead has an associated Quotation, a closed stage, or a assigned Sales Representative beyond the initial capture. Source attribution (form, upload, campaign) migrates as a custom field or tag. All original Lead timestamps are preserved as created_date and last_modified_date in Nutshell.

Opal CRM

Sales Representative

maps to

Nutshell

User

1:1
Fully supported

Opal CRM team members (Sales Rep, Manager, Admin roles) map to Nutshell User accounts. We resolve by email address and preserve the role assignment as a note in the handover documentation so the Nutshell admin can assign equivalent permissions (Admin, Standard) post-migration. Role permissions in Opal CRM are not exported as structured data, so we reconstruct the role matrix from the export file's owner-assignment records.

Opal CRM

Company

maps to

Nutshell

Company

1:1
Fully supported

If Opal CRM captures company data alongside Leads, these map directly to Nutshell Company records. Company name, domain, address, and industry fields migrate 1:1 where present. If Opal CRM stores leads without explicit company records, we create a placeholder Company from the Lead's domain field or leave the Company field blank and document the gap for the customer to complete post-migration.

Opal CRM

Tour Plan

maps to

Nutshell

Task (sequence)

1:many
Fully supported

Opal CRM Tour Plans store itinerary data (dates, locations, assigned rep) and expense line items as a single record or flat export. Nutshell has no native Tour or Visit object, so we decompose each Tour Plan into a dated task sequence: one task per scheduled visit with location, date, and linked Person or Lead; individual expense line items are stored as structured notes on the lead visit task or as a custom Expense Notes field. We flag any expense entries that exceed 500 characters for manual review.

Opal CRM

Quotation

maps to

Nutshell

Quote or Opportunity (custom fields)

1:1
Fully supported

Opal CRM Quotations with line items map to Nutshell Quote records if the destination Nutshell plan includes Quotes, or to Opportunity records with quotation line items stored as structured notes and total value stored as Amount. The Opal CRM approval workflow state (Pending, Approved, Rejected) has no native Nutshell field, so we store it as a custom field quotation_status__c on the Quote or Opportunity. Line item product names, quantities, and unit prices migrate directly.

Opal CRM

Pipeline Stage

maps to

Nutshell

Stage (custom field or pipeline mapping)

lossy
Fully supported

Opal CRM pipeline stages implied by lead engagement status map to Nutshell stage values or a custom picklist field pipeline_stage__c. We preserve the stage order and probability percentages where available in the export. The customer chooses whether to use Nutshell's default stage set (New, Contacted, Qualified, Proposal, Negotiation, Closed Won, Closed Lost) or to create custom stages during migration setup.

Opal CRM

Activity: Call, Email, Meeting

maps to

Nutshell

Activity (Call, Email, Meeting)

1:1
Fully supported

Opal CRM activity logs (calls, emails, meetings) against Leads migrate to Nutshell Activity records with the corresponding type. Call duration and disposition, email subject and body, meeting location and attendees map to Nutshell Activity fields where supported, or to structured notes. Activity timestamps are preserved for timeline ordering. Nutshell's native Activity timeline displays these chronologically against the linked Person or Lead.

Opal CRM

Custom Property

maps to

Nutshell

Custom Field

lossy
Fully supported

Opal CRM custom fields on Leads (and possibly other objects) are identified during discovery and mapped to Nutshell custom fields of matching type. Text fields map to Nutshell text custom fields, date fields to date custom fields, numeric fields to number custom fields. Nutshell requires custom fields to be created before import begins, so we create them during the setup phase using the Nutshell custom fields API. The customer reviews the custom field list and approves any field type decisions before migration.

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.

Opal CRM logo

Opal CRM gotchas

High

No publicly documented API for bulk data export

Medium

Tour Plan expense data may flatten during export

Medium

Quotation workflow state is not a standard CRM field

Low

Free tier limits and trial expiry not visible in export

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

  • Opal CRM has no public API for automated data extraction

    Opal CRM does not publish REST API documentation or a bulk export endpoint in its public-facing resources. Teams migrating out of Opal CRM must coordinate a manual data export with the platform, typically through an admin-initiated CSV download or a direct database export negotiated during contract exit. We request the export file during scoping, validate its completeness against the platform UI record counts (Leads, Quotations, Tour Plans), and flag any discrepancies before loading. If the export file is incomplete or unavailable, migration scope is limited to what can be extracted manually.

  • Tour Plan expense data may flatten during manual export

    Tour Plans in Opal CRM store both itinerary entries (date, location, assigned rep) and individual expense line items. If Opal CRM's manual export produces a flat CSV with expenses concatenated into a single cell, we decompress the expense entries into individual structured records and reconstruct them as task notes or a custom expense field in Nutshell. We test a 10-record sample of Tour Plan exports before full migration to confirm the export format and adjust the decomposition logic accordingly.

  • Quotation approval workflow state has no native Nutshell field

    Opal CRM tracks quotation approval through an internal workflow with states (Pending, Approved, Rejected). This workflow state does not map to a standard Nutshell field because Nutshell's Quotes object does not include an approval status workflow by default. We capture the workflow state as a custom field quotation_status__c on the migrated Quote or Opportunity record and document it in the handover notes so the customer can decide whether to use Nutshell's built-in approval flows or a third-party tool for quotation sign-off.

  • Nutshell custom fields must be created before import

    Nutshell requires custom fields to exist before data can be imported into them. If the Opal CRM export contains custom properties not present in Nutshell's standard fields, we create the equivalent custom fields via the Nutshell API during the setup phase before any records load. The customer reviews and approves the custom field schema (names, types, picklist values) before we proceed. Nutshell's custom field documentation recommends defining fields first, then mapping import files to those fields, which aligns with our approach.

  • Role permissions do not export as structured data from Opal CRM

    Opal CRM role definitions (Admin, Manager, Sales Rep) are platform-specific access tiers that do not appear as explicit structured fields in the export file. We capture role assignments per user by reviewing the owner_id assignments on Leads and Tour Plans and inferring the role from context (e.g., admin-initiated records vs rep-initiated records). The resulting role mapping is documented in handover notes for the Nutshell admin to translate into Nutshell's own Admin and Standard user roles.

Migration approach

Six steps for a successful Opal CRM to Nutshell data migration

  1. Discovery and export coordination

    We audit the Opal CRM account via the customer's admin access, documenting the total count of Leads, Sales Representatives, Tour Plans, Quotations, and any visible custom fields. Because Opal CRM has no API, we coordinate with the customer to request a manual data export (CSV or database dump) from the platform, validate the export against the UI record counts, and identify any fields that require special handling (Tour Plan expense decomposition, quotation workflow state extraction). We simultaneously map Nutshell destination objects and identify any custom fields required.

  2. Nutshell custom field creation

    Before any data loads, we create all required custom fields in Nutshell via the API: quotation_status__c for approval workflow state, any custom Lead or Person fields from Opal CRM, and a pipeline_stage__c picklist if the customer uses custom stages. Nutshell requires custom fields to exist before import, so this step is a prerequisite. The customer reviews and approves the custom field schema before we proceed.

  3. User provisioning in Nutshell

    We extract distinct Sales Representatives from Opal CRM and provision corresponding User accounts in Nutshell by email. We document the role assignments (Admin, Manager, Sales Rep) in the handover notes so the Nutshell admin can assign the correct access level. User provisioning is the first production load step because Owner lookups on Leads, Activities, and Opportunities require a valid User ID.

  4. Lead and Person migration in dependency order

    We load Leads (qualified records that map to Nutshell Person) and unqualified leads into Nutshell's Lead object. For Leads with an associated Company record, we load Companies first, then resolve the Company ID on the Person or Lead during insert. We apply the qualification split rule (Leads with Quotations or closed stages map to Person) and preserve the original source attribution and created timestamps.

  5. Tour Plan reconstruction as task sequences

    We decompose each Opal CRM Tour Plan into a dated task sequence: one task per scheduled visit linked to the assigned Sales Representative and the relevant Lead or Person, with location and visit date as task fields. Expense line items are stored as structured notes or a custom expense field on the visit task. We run a sample of 10-20 Tour Plans through the decomposition logic before full migration to confirm format handling.

  6. Quotation migration with workflow state preservation

    We load Quotations as Nutshell Quotes (if available on the destination plan) or as Opportunity records with quotation line items as structured notes. The Opal CRM approval workflow state populates the custom quotation_status__c field. Line item details (product name, quantity, unit price, total) migrate to Quote Line Items or structured notes. The customer reviews the quotation mapping and approves before production load.

  7. Activity history and final cutover

    We load call, email, and meeting activity logs as Nutshell Activities linked to the corresponding Person or Lead. Activity timestamps are preserved for timeline ordering. We run a delta check against the source export for any records modified during the migration window, then hand off to the customer for final validation. We deliver the Workflow, Sequence, and Role Permission inventory document for the admin to rebuild in Nutshell. We do not rebuild these as code inside the migration scope.

Platform deep dives

Context on both ends of the pair

Opal CRM logo

Opal CRM

Source

Strengths

  • Free tier for up to two users provides a genuine no-cost entry point for very small teams.
  • Native Tour Planning module handles field-sales route and expense tracking without third-party add-ons.
  • Quotation workflow with approval steps is included at Basic tier pricing.
  • Lead capture from multiple channels (forms, uploads, manual) is built into the core workflow.
  • Affordable fixed monthly pricing at $220 and $350 for two tiers is predictable for small-business budgets.

Weaknesses

  • No publicly documented REST API or bulk export mechanism, making programmatic data extraction uncertain.
  • Small review sample on G2 (2 reviews) and limited third-party coverage makes platform reliability hard to verify independently.
  • Integration approach described as 'two lines of code' is vague and suggests limited connector ecosystem.
  • Pricing is per-organization not per-user, which may become cost-inefficient as team size grows.
  • No public roadmap, community forum, or status page to assess long-term platform health.
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. 1 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 Opal CRM and Nutshell.

  • Object compatibility

    B

    1 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

    Opal CRM: Not publicly documented..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between two and three weeks for accounts under 5,000 Leads, 500 Quotations, and fewer than 200 Tour Plans. Migrations with active Tour Plan records requiring task sequence decomposition, large quotation histories, or complex custom property schemas move to four to six weeks because of the manual export coordination, Tour Plan decomposition testing, and custom field creation work. The no-API extraction step adds one to two weeks to scoping compared to API-based migrations.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Opal CRM.
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