CRM migration
Field-level mapping, validation, and rollback between SwiftCRM and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
SwiftCRM
Source
Nutshell
Destination
Compatibility
7 of 9
objects map 1:1 between SwiftCRM and Nutshell.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from SwiftCRM to Nutshell is a migration from a beta-stage, Apple-first solo tool to a mature, web-based small-business CRM with transparent per-seat pricing. SwiftCRM has no documented public API, so extraction relies on available data dumps or alternative export methods confirmed during scoping. The core SwiftCRM Contact maps to Nutshell People, with relationship data resolved into custom fields or Company links. Appointments become Nutshell Activity records preserving timestamps and client associations. E-Docs and attachments migrate as files attached to the appropriate People or Company record. We do not migrate SwiftCRM's notification history as a distinct object; it becomes activity notes in Nutshell. Workflows, automations, and beta-tier feature flags do not transfer and are not in scope. The migration timeline ranges from three to eight weeks depending on record volume, export complexity, and whether Nutshell's free trial or paid tier is the destination.
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 SwiftCRM 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.
SwiftCRM
Contact
Nutshell
Person (People)
1:1SwiftCRM Contacts map directly to Nutshell People records. The SwiftCRM client record (name, relationship type, Face-ID-protected fields) migrates to Nutshell's standard People fields plus any custom fields audited during scoping. SwiftCRM relationship types (family, business) map to Nutshell custom fields or relationship-type picklists. We use the SwiftCRM contact identifier as the external_id for dedupe validation during import.
SwiftCRM
Contact
Nutshell
Lead
1:manySwiftCRM Contacts that represent unqualified prospects (early-stage relationships with no active engagement history) may split to Nutshell Leads if the customer's sales process distinguishes between People records (existing clients) and Lead records (prospective contacts). We determine the split rule during scoping based on the customer's contact lifecycle stage if tracked in SwiftCRM custom fields. Unqualified contacts land in Nutshell as Leads with original relationship type preserved in a custom field.
SwiftCRM
Contact Relationships
Nutshell
Company
1:1SwiftCRM relationship structures between contacts (family and business relationship links) that represent organizational connections map to Nutshell Company records. We extract relationship metadata during scoping to determine whether the SwiftCRM contact network should become Nutshell People with a Company affiliation or People linked via a Company record. The customer chooses the mapping strategy during discovery.
SwiftCRM
Appointment
Nutshell
Activity (Task or Event)
1:1SwiftCRM appointments with client links and reminder settings map to Nutshell Activity records. We preserve the original appointment timestamp as the Activity date, the client association as a link to the migrated Nutshell Person, and any appointment notes as the Activity description. Recurring appointment patterns are flagged during scoping for manual rebuild as Nutshell tasks or calendar sync depending on the recurrence complexity.
SwiftCRM
Reminder
Nutshell
Task
1:1SwiftCRM reminders tied to specific clients or appointments map to Nutshell Task records. The reminder text becomes the Task subject, the due date maps to the Task due date, and the linked client association preserves via the Person link. Completed vs pending status transfers to Task completion status. SwiftCRM-native notification context (e.g., reminder type) migrates as a custom Task field.
SwiftCRM
Notification
Nutshell
Note (Activity)
1:1SwiftCRM notification history tied to client interactions does not map to a distinct Nutshell object. We migrate notification records as Note or activity records attached to the corresponding Person, preserving timestamp, notification type, and content. If the notification volume is high (hundreds per client), we summarize the notification history and flag it for the customer admin to determine retention scope.
SwiftCRM
E-Docs
Nutshell
File Attachment
1:1SwiftCRM client documents organized within the platform migrate as file attachments in Nutshell, linked to the corresponding Person or Company record. We export all attached files in their original format (PDF, image, document), batch them by contact, and upload to Nutshell with a naming convention that preserves the original document structure. Large file volumes may require chunked upload with Nutshell API rate-limit handling.
SwiftCRM
Custom Field
Nutshell
Custom Field
lossySwiftCRM beta-stage custom fields vary by account tier and may include relationship-type metadata, client classification flags, or industry-specific properties. We audit all available SwiftCRM custom fields during scoping, map each to the equivalent Nutshell custom field type (text, date, number, picklist), and create the destination fields in Nutshell before migration begins. Beta-tier custom fields that cannot be mapped to Nutshell types are flagged for customer review.
SwiftCRM
User
Nutshell
User
1:1SwiftCRM user accounts and basic permissions map to Nutshell User records. We resolve users by email match. Any SwiftCRM user without a matching Nutshell account is held in a reconciliation queue for the customer's admin to provision before record import resumes. SwiftCRM Face-ID-linked access permissions do not have a direct Nutshell equivalent and are not migrated.
| SwiftCRM | Nutshell | Compatibility | |
|---|---|---|---|
| Contact | Person (People)1:1 | Fully supported | |
| Contact | Lead1:many | Fully supported | |
| Contact Relationships | Company1:1 | Fully supported | |
| Appointment | Activity (Task or Event)1:1 | Fully supported | |
| Reminder | Task1:1 | Fully supported | |
| Notification | Note (Activity)1:1 | Fully supported | |
| E-Docs | File Attachment1:1 | Mapping required | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| User | User1: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.
SwiftCRM gotchas
No public API documentation requires manual or alternative export
Active beta status means schema may change during migration
Pricing tiers are not publicly documented
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 capability assessment and data scoping
We confirm SwiftCRM's available export methods during the first week of engagement. This includes reviewing any built-in data dump options, CSV export formats, manual export capabilities, and whether direct database access can be granted. We audit the full record inventory (Contacts, Appointments, E-Docs, Reminders, Custom Fields, Users) to determine export completeness. If SwiftCRM cannot provide a complete export in a usable format, we pause scoping and re-evaluate timeline and method with the customer.
Discovery and relationship mapping design
We conduct a discovery session with the customer to map SwiftCRM's relationship structures to Nutshell's People and Company model. This includes determining whether SwiftCRM contacts that link to other contacts should become Nutshell People with a Company affiliation, or remain as People with relationship-type custom fields. We also confirm the appointment-to-Activity mapping strategy, e-doc attachment grouping, and any custom field translation. The discovery output is a written mapping document for customer sign-off.
Nutshell sandbox provisioning and schema preparation
We provision a Nutshell sandbox or trial environment and pre-create all required custom fields (for People, Companies, and Leads), picklist values, and relationship-type fields before any data import. We validate that the Nutshell API credentials are active and that bulk import via CSV or API is confirmed for the destination account tier. Schema preparation happens in parallel with SwiftCRM export preparation.
Data extraction and transformation
We execute the SwiftCRM data extraction using the confirmed export method. All exported records are validated for completeness (record counts, required field presence, date ranges). We transform the extracted data into Nutshell-compatible CSV or JSON format, apply the mapping rules (Contact to Person, Appointment to Activity, E-Doc to File), and resolve any foreign-key lookups (e.g., linking appointments to migrated Person records). E-Docs are exported as file packages organized by contact.
Sandbox migration and customer reconciliation
We run a full migration into the Nutshell sandbox environment using production-like data volume. The customer reviews the sandbox records, spot-checks 25-50 random Person and Activity records against the SwiftCRM source, and validates that attachments are linked correctly. Any mapping corrections, missing fields, or relationship resolution issues are documented and corrected before production migration. The customer signs off the sandbox validation before we proceed to production.
Production cutover and handoff
We freeze SwiftCRM write access during cutover, run a final delta migration of any records modified during the migration window, and complete the full data load into the production Nutshell account. We deliver a migration summary report (record counts by object, import timestamps, any records skipped with reason) and a written automation inventory noting that SwiftCRM reminders and notifications have no direct Nutshell equivalent. We do not rebuild SwiftCRM automations, workflows, or Face ID settings; those are separate scoping items for the customer's Nutshell admin.
Platform deep dives
SwiftCRM
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 SwiftCRM 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
SwiftCRM: Not publicly documented.
Data volume sensitivity
SwiftCRM 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 SwiftCRM to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your SwiftCRM 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 SwiftCRM
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.