CRM migration

Migrate from Civicrm to Nutshell

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

Civicrm logo

Civicrm

Source

Nutshell

Destination

Nutshell logo

Compatibility

70%

7 of 10

objects map 1:1 between Civicrm and Nutshell.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from CiviCRM to Nutshell is a platform switch from a nonprofit-specialized CRM to a sales-focused SMB CRM. CiviCRM's data model is built around nonprofit operations: Contributions, Memberships, Grants, Events, and CiviCase are first-class entities. Nutshell has none of these. We migrate what maps cleanly — Contacts, Activities, Custom Fields, and Tags — and we are explicit about what does not map: Contributions land in an export archive for the customer's finance team, Memberships are noted as manual-recreate candidates, and CiviCase has no Nutshell equivalent so case records are exported as a CSV with their activity chains. ECK (Entity Construction Kit) custom entities require individual scoping because they represent arbitrary schemas with no standard mapping path. We use a hybrid extraction approach: CiviCRM REST API for Contacts and Activities with direct database reads for large-volume custom tables where API pagination would be prohibitively slow. Nutshell's per-user pricing and free onboarding replace CiviCRM's hosting complexity, but the per-seat cost creates a budget consideration for large volunteer-heavy organizations that paid only for infrastructure under CiviCRM.

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

Civicrm logo

Civicrm

What's pushing teams away

  • The UI is dated compared to modern SaaS CRMs — reviewers describe the interface as old-fashioned and the search mechanics as database-query style rather than intuitive keyword search.
  • Steep technical learning curve — multiple Capterra and G2 reviews note that configuring CiviCRM well requires dedicated developer or consultant resources that smaller non-profits cannot afford.
  • No native bulk data export — data portability relies on the API or manual exports; there is no one-click comprehensive dump, making migration planning time-intensive.
  • Hosting complexity is a hidden cost — because the software is self-hosted, organizations must budget for server infrastructure, security patching, and PHP/MySQL maintenance.
  • Performance bottlenecks tied to hosting — slow queries, PHP execution limits, and MySQL configuration tuning fall on the organization's technical team rather than a vendor.

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

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

Civicrm

Contact (Individual)

maps to

Nutshell

Person

1:1
Fully supported

CiviCRM Individual subtype maps to Nutshell Person. We extract first_name, last_name, email (primary and secondary), phone (primary and secondary), address fields (street, city, state, postal_code, country), and the contact's preferred communication method. External identifier is preserved in a custom field for dedupe reference. Preferred language and prefix/suffix are not native Nutshell fields and migrate as custom Person fields.

Civicrm

Contact (Organization)

maps to

Nutshell

Company

1:1
Fully supported

CiviCRM Organization subtype maps to Nutshell Company. We extract organization_name, legal_name, email (primary), phone, address, and website. The CiviCRM display_name (often a shortened form of the legal name) maps to Company Name. Dedupe is performed on website domain match. SIC code and number of employees are not native Nutshell fields.

Civicrm

Contact (Household)

maps to

Nutshell

Person (household head)

many:1
Fully supported

CiviCRM Household subtype has no Nutshell equivalent. Households in CiviCRM represent family units with a household name, household address, and member relationships. We split each Household into its constituent Person records, assigning the household address to each Person record. The CiviCRM household_name is preserved in a custom field for reference. The customer chooses during scoping whether to create one Person record per household or one per individual with the address merged.

Civicrm

Activity

maps to

Nutshell

Activity (Note, Call, Meeting, Email)

1:1
Fully supported

CiviCRM Activity records (Email, Call, Meeting, Task subtypes) map to Nutshell's activity types. We extract activity_type_id, subject, details (body), activity_date_time, duration_hours/minutes, location, and assignee. Nutshell activity types are typed as Note, Call, Meeting, or Email. The CiviCRM activity_status maps to Nutshell's activity status (completed, scheduled, etc). Activities without a subject get a generated subject from the activity type and date.

Civicrm

Custom Fields (Custom_*)

maps to

Nutshell

Custom Fields (Person, Company, Lead)

lossy
Fully supported

CiviCRM single-record custom fields appear as fields on the parent entity via the API custom.* selector and map to Nutshell custom fields on the equivalent entity type. Nutshell supports Text (225 char max), Long Text, Currency, Date, Boolean, Number, and Single-Select for each entity type. Multi-record custom groups (prefixed Custom_) are loaded as separate row entries linked to the parent contact. We create Nutshell custom fields in the correct entity bucket (Lead, Person, Company) during pre-migration configuration. Supported field types are validated against Nutshell's field type list during mapping.

Civicrm

Groups

maps to

Nutshell

Lists or Tags

1:1
Fully supported

CiviCRM Groups map to Nutshell Lists (static segments). We extract group_name, group_type (mailing list, access control, smart group), and the GroupContact membership records. Smart (dynamic) groups cannot be fully reproduced without re-running the underlying query logic, so we document the smart group definition as a written specification for the customer to recreate as a Nutshell List filter. Regular Groups migrate as Nutshell Lists with direct contact membership.

Civicrm

Tags

maps to

Nutshell

Tags

1:1
Mapping required

CiviCRM Tags are flat labels that attach to any entity. We map the tag name and its entity_id link to Nutshell Tags. Multi-entity tagging requires separate association records per entity type. Tag naming conventions are preserved verbatim. Nutshell Tags are available on Person, Company, and Lead records.

Civicrm

Relationships

maps to

Nutshell

Custom Fields or Notes

lossy
Fully supported

CiviCRM Relationships (household member, employee-employer, spousal, etc.) connect two contacts bidirectionally. Nutshell has no native relationship object, so we evaluate the relationship type and map accordingly: employer-employee relationships may become a custom field on the Person record pointing to the Company; household member relationships are preserved in a custom field on Person. The relationship type label is preserved as a tag or custom field value. Bidirectional nature is lost (Nutshell does not auto-create the reverse link).

Civicrm

Contributions

maps to

Nutshell

Archive (CSV export)

1:1
Mapping required

CiviCRM Contributions (donations, pledges, payments) have no Nutshell equivalent. Nutshell is not a fundraising or billing CRM. We export Contributions as a structured CSV archive containing contribution_id, contact_id, financial_type, total_amount, currency, receive_date, payment_instrument, check_number, card_type_id, and the contribution status. The archive is delivered to the customer for import into a dedicated fundraising tool (GiveWP, Donorbox, Salesforce Fundraising and Engagement, or similar). Contribution metadata is preserved but loses its real-time CRM context.

Civicrm

Memberships

maps to

Nutshell

Custom Fields on Person/Company

1:1
Mapping required

CiviCRM Membership records (type, status, start_date, end_date, source) can be migrated as a time-bounded custom record type. We map membership_type to a custom picklist on Person, membership_status to a custom status field, and start_date/end_date to date fields. Active membership status is preserved as a tag on the Person record. Recurring membership billing requires a separate payment tool since Nutshell does not handle recurring billing.

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.

Civicrm logo

Civicrm gotchas

High

Server-to-server migration requires CMS settings file portability

Medium

Multi-record custom groups can hit MySQL's 61-join limit

Medium

No native bulk export — data portability is API- or database-dependent

Medium

CiviCase statuses are per-case-type — not a global status list

Low

Hosted Spark tier has no documented API rate limit — performance varies by plan

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

  • Contributions, Memberships, Cases, and Events have no Nutshell equivalent

    Nutshell is a sales CRM, not a nonprofit CRM. Contributions (donations, pledges), Memberships, CiviCase, and CiviEvent records do not map to any Nutshell object. We export Contributions and Cases as structured CSV archives with field preservation and deliver these to the customer for import into a dedicated fundraising or support tool. Memberships are mapped as custom fields on Person records but lose recurring billing context. Events cannot be migrated to Nutshell's calendar because CiviEvent includes participant roles, price sets, and registration profiles that Nutshell does not support. This data loss is structural, not technical, and must be disclosed before migration scope is signed.

  • No native bulk export — API pagination and direct database reads required

    CiviCRM has no one-click comprehensive export. We use a hybrid approach: REST API (APIv4) for Contacts and Activities with paginated requests and API-key or session-key authentication, combined with direct database reads for large-volume custom tables where API pagination would be prohibitively slow. Direct database reads require read-only credentials scoped to the CiviCRM database, which the customer must provision before migration scoping begins. For self-hosted CiviCRM instances, the database credentials and server hostname are required to establish the connection.

  • Household contacts require manual consolidation strategy

    CiviCRM's Household is a first-class contact subtype representing a family unit with a shared address and member relationships. Nutshell has no Household entity — only Person, Company, and Lead. We split Households into individual Person records and assign the household address to each. The original household_name is preserved in a custom field. This is a lossy operation for organizations that rely on household-level reporting (e.g., one donation receipt per household rather than per individual). The customer must confirm the consolidation strategy during scoping before record migration begins.

  • ECK entities have no standard mapping path

    CiviCRM's Entity Construction Kit (ECK) allows administrators to define arbitrary custom entity types with user-defined properties and custom field attachments. ECK entities are extension-scoped and can reference contacts. Since these schemas are custom to each CiviCRM instance, there is no standard mapping to any Nutshell object. We treat ECK entities as custom objects requiring individual scoping during discovery: we enumerate every active ECK entity type, extract its property schema, and present options (custom fields on the related Person/Company record, a separate CSV archive, or a reference to a future custom-object-ready CRM if Nutshell's feature ceiling is reached). This work adds discovery time and cost to the migration scope.

  • Nutshell custom fields are entity-scoped — source field location matters

    Nutshell custom fields are scoped to Lead, Person, or Company — there is no global custom field that applies across entity types. In CiviCRM, custom fields attach to the entity itself. When mapping CiviCRM Contact-level custom fields to Nutshell, we must determine whether the underlying contact is an Individual (maps to Person), Organization (maps to Company), or Household (maps to Person post-split), and create the Nutshell custom field in the correct entity bucket. A custom field attached to a CiviCRM Individual and a custom field attached to a CiviCRM Organization that share the same label become two separate Nutshell custom fields if both are needed.

Migration approach

Six steps for a successful Civicrm to Nutshell data migration

  1. Discovery and extraction method selection

    We audit the source CiviCRM instance: CMS integration (WordPress, Drupal, Joomla, Backdrop), CiviCRM version, CiviSpark vs self-hosted deployment, API credentials availability, and direct database access feasibility. We enumerate all active entity types including ECK entity schemas, count custom groups and multi-record sets, and assess the volume of Contributions, Memberships, and CiviCase records. We also identify the hosting provider for self-hosted instances (WPEngine, Pantheon, AWS, shared hosting) since database credential provisioning varies. The discovery output is a written extraction plan specifying API vs direct database per entity, a preliminary object mapping, and the data-loss disclosure for nonprofit-specific entities.

  2. Nutshell account provisioning and custom field pre-configuration

    The customer provisions a Nutshell account at the appropriate tier (Foundation, Pro, Business, or Enterprise) before migration begins. We create Nutshell custom fields in the correct entity bucket (Lead, Person, Company) based on the CiviCRM source field's parent entity type. For multi-record custom groups (Custom_* prefix), we configure Nutshell custom fields to hold the row data and define a naming convention that preserves the original record linkage. We validate each custom field's type against Nutshell's supported field types (Text 225 char, Long Text, Currency, Date, Boolean, Number, Single-Select) and flag any CiviCRM field types that cannot be represented in Nutshell.

  3. Household consolidation and relationship mapping

    Before any record extraction, we finalize the Household consolidation strategy with the customer's team. We split CiviCRM Households into individual Nutshell Person records, assign the shared household address to each, and preserve the original household_name in a custom field. We evaluate CiviCRM Relationships (employer-employee, household member, spousal) and map them to the appropriate Nutshell representation: custom fields on Person records, tags, or notes. Bidirectional relationship behavior that CiviCRM handles natively cannot be reproduced in Nutshell and is documented as a post-migration workflow adjustment.

  4. Record migration in dependency order

    We run migration in record-dependency order: Companies first (from CiviCRM Organizations), then Persons (from CiviCRM Individuals with Household split applied), then Leads (for any CiviCRM contacts tagged as prospective donors or campaign targets), then Activities (emails, calls, meetings, tasks with assignee resolution), then Tags, then Groups as Lists. Contributions, Memberships, Cases, and Events are extracted to separate CSV archives and delivered independently. ECK entities are handled as a final phase with their own CSV or custom-field mapping based on the per-entity scoping decision made during discovery.

  5. Sandbox validation and reconciliation

    We run a full migration into Nutshell's test environment or a designated validation sandbox if available. The customer's team reconciles record counts across all entity types (Companies in, Persons in, Leads in, Activities in), spot-checks 25-50 random Person and Company records against the CiviCRM source, and validates that custom field data landed in the correct entity bucket. Any mapping corrections (wrong entity type, incorrect custom field placement, Household consolidation issues) are documented and corrected before production migration begins.

  6. Production migration, cutover, and handoff

    We run production migration with a freeze window where CiviCRM writes are paused. A final delta pass captures any records modified during the migration window. We enable Nutshell as the system of record and deliver the structured CSV archives for Contributions, Cases, Events, and ECK entities to the customer's team. We provide a written field mapping inventory documenting the destination of every migrated CiviCRM field. We do not rebuild CiviRules, CiviCase workflows, or CiviEvent registration automations; these are documented as manual-rebuild candidates for the customer's admin team.

Platform deep dives

Context on both ends of the pair

Civicrm logo

Civicrm

Source

Strengths

  • Free open-source download with no per-seat licensing — only hosting costs apply.
  • Nonprofit-native objects: Contributions, Memberships, Grants, Events, and Cases without sales-CRM workarounds.
  • Unlimited record count — G2 reviewers report instances with 1M+ contacts running without per-record billing.
  • Custom data model via custom fields, multi-record sets, and ECK entities for arbitrary organizational schemas.
  • Active open-source community maintaining extensions for Drupal, WordPress, Joomla, and Backdrop CMS integrations.

Weaknesses

  • Dated web interface — search is database-query style rather than modern keyword search; UI consistency varies by CMS integration.
  • No native bulk export or one-click migration tooling — data portability relies on API, direct MySQL access, or manual CSV exports.
  • Performance and API rate limits are hosting-dependent rather than platform-enforced; self-hosting requires dedicated technical resources.
  • Steep configuration learning curve — multiple G2 and Capterra reviewers cite the need for developer or consultant time to configure effectively.
  • No built-in workflow automation without third-party extensions like CiviRules, adding migration complexity for automated processes.
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 Civicrm 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

    Civicrm: Not publicly documented — Spark tier has no published limit; self-hosted performance is infrastructure-dependent.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Civicrm 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 three and five weeks for accounts under 15,000 Contacts and no ECK custom entities. Migrations with ECK entity schemas, complex relationship chains, or a requirement to produce structured CSV archives for Contributions, Cases, and Events move to seven to ten weeks because of the individual ECK scoping work and the multi-pass extraction strategy for custom tables. The customer provisioning a Nutshell account and providing database credentials before scoping begins is the largest single factor in keeping the timeline short.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Civicrm.
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