CRM migration
Field-level mapping, validation, and rollback between Teamwork CRM and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
Teamwork CRM
Source
Nutshell
Destination
Compatibility
5 of 8
objects map 1:1 between Teamwork CRM and Nutshell.
Complexity
BStandard
Timeline
1-2 weeks
Overview
Moving from Teamwork CRM to Nutshell is a lateral-size migration between two SMB-focused sales platforms. Both systems use a Person-Organization relationship model, but Teamwork maintains separate Leads and Opportunities pipelines while Nutshell consolidates both into a single Lead object with status-based stages. We handle that schema reduction during scoping, map Teamwork's text, number, and dropdown Custom Fields to Nutshell's typed custom field model, and resolve Owner IDs against Nutshell's People table before record import. Teamwork's 120 req/min API ceiling and CSV-only list export govern our extraction strategy; Nutshell's plan-gated custom field limits govern what can be written during load. Attachments, documents, and SSO configuration do not migrate; we deliver a written inventory of Teamwork Custom Filters and pipeline configurations for manual rebuild in Nutshell's settings.
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 Teamwork 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.
Teamwork CRM
Company
Nutshell
Organization
1:1Teamwork CRM Company records map directly to Nutshell Organization. The Organization is the parent record in the data model, created before any Person import so that the Organization lookup is satisfied at Person insert. We use Company name as the primary dedupe key and map address, phone, website, and industry fields by name.
Teamwork CRM
Contact
Nutshell
Person
1:1Teamwork CRM Contact maps to Nutshell Person with the OrganizationId lookup resolved to the target Organization created in the previous phase. Standard fields (name, email, phone, title) map directly. All active Contact Custom Fields migrate as typed Nutshell custom fields; Teamwork dropdown options become Nutshell dropdown values verbatim. Note that Teamwork's per-Contact tag set maps to Nutshell's tag field on Person.
Teamwork CRM
Lead
Nutshell
Lead
1:1Teamwork CRM Lead maps to Nutshell Lead. The leadstage property from Teamwork maps to Nutshell's Lead status field. Teamwork pipeline assignment is captured as a custom field on the Nutshell Lead because Nutshell does not support multiple parallel lead pipelines; pipeline context is preserved for manual rebuild in Nutshell settings. Owner resolution runs against the User mapping before Lead insert.
Teamwork CRM
Opportunity
Nutshell
Lead
1:manyTeamwork CRM Opportunities map to Nutshell Lead records with a deal-type classification. The opportunity value, probability, and stage from Teamwork become Nutshell custom fields (deal_value__c, probability__c, opportunity_stage__c) because Nutshell does not have a native Opportunity object equivalent to Salesforce. We flag the stage value for Nutshell pipeline and stage configuration post-migration. This split is the most significant schema reduction in the migration and is reviewed with the customer during scoping.
Teamwork CRM
Pipeline
Nutshell
Lead status values
lossyTeamwork's named pipelines and stage definitions are captured as migration metadata. We deliver a written pipeline configuration document specifying which Teamwork pipeline maps to which Nutshell Lead status values, along with the recommended stage order and any deprecated stage handling. The customer configures Nutshell's Lead statuses (Settings > Leads > Statuses) before production migration begins.
Teamwork CRM
Activity (calls, meetings, tasks)
Nutshell
Activity (calls, meetings, tasks)
1:1Teamwork CRM Activity records (SyncHub entity model: title, description, start date, duration, due date, completion status, assignee) map to Nutshell Activity records linked to the target Person or Lead. Call and meeting type are preserved via activity type field. We resolve the assignee by matching Teamwork hubspot_owner_id to the Nutshell Person's user record by email before insert.
Teamwork CRM
Custom Field
Nutshell
Custom Field
lossyTeamwork CRM supports three custom field types: short text, integer, and dropdown. Each migrates to a Nutshell custom field of the equivalent type. Multi-select, date, and boolean custom fields are not natively supported by Teamwork CRM, so there is no corresponding gap on the destination. If a Teamwork dropdown custom field has options not pre-created in Nutshell, we create the Nutshell field and options before migration. Custom field limits are plan-gated in Nutshell; we verify the destination plan accommodates the field count during scoping.
Teamwork CRM
User
Nutshell
Person (user role)
1:1Teamwork CRM Users map to Nutshell Person records that are flagged as active users. We match by email address. Any Teamwork User without a matching Nutshell Person goes to a reconciliation queue; the customer's admin provisions the missing user before record migration resumes. Active Teamwork users with zero working hours (a known Teamwork V2 people endpoint issue for pre-fix user records) are flagged and surfaced for manual review before migration.
| Teamwork CRM | Nutshell | Compatibility | |
|---|---|---|---|
| Company | Organization1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Lead1:many | Fully supported | |
| Pipeline | Lead status valueslossy | Fully supported | |
| Activity (calls, meetings, tasks) | Activity (calls, meetings, tasks)1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| User | Person (user role)1: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.
Teamwork CRM gotchas
120 req/min API rate limit during extraction
CSV export only available in list view
Known API bug with custom field value deletion
Working hours absent for legacy user profiles
SSO unavailable on Pro tier
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
Discovery and extraction strategy
We audit the Teamwork CRM account across record counts (Companies, Contacts, Leads, Opportunities, Activities), active custom field definitions, pipeline and stage configurations, and owner list. We also confirm the destination Nutshell plan tier and verify custom field capacity. Because Teamwork CRM lacks a bulk API endpoint, we design an extraction strategy combining REST API paginated fetches (with 120 req/min throttling) and list-view CSV exports for objects where column selection is required. We surface the Opportunity-to-Lead schema reduction and the custom field plan limit as migration prerequisites if the destination plan requires verification.
Schema preparation in Nutshell
We configure the Nutshell destination before any data loads. This includes pre-creating all custom fields (matching Teamwork's text, integer, and dropdown types), pre-populating dropdown option values, and setting up Lead status values to match the Teamwork pipeline stages documented in the discovery output. If the customer has multiple pipelines in Teamwork, we create a written pipeline configuration document for Nutshell Settings > Leads > Statuses that the customer configures manually before production migration begins.
Sandbox validation run
We run a representative migration into a Nutshell sandbox or trial environment using a sample of 100-200 records per object type. The customer reconciles field mapping accuracy, custom field values, organization-person relationships, and activity linkage against the Teamwork CRM source. Mapping corrections are documented and applied to the production migration script. This step prevents field mapping corrections from occurring mid-production run, which would require a partial rollback.
Owner and user reconciliation
We extract every distinct Teamwork CRM Owner and map them by email to Nutshell Person records that will serve as user accounts. Any Teamwork Owner without a matching Nutshell user is placed in a reconciliation queue for the customer's admin to provision. Teamwork user records with zero working hours (a known V2 people endpoint issue for legacy profiles) are flagged and surfaced for manual review. Migration cannot proceed past record import until all OwnerId references have a valid target.
Production migration in dependency order
We run production migration in this sequence: Organizations (from Teamwork Companies), Persons (with OrganizationId resolved), Leads (Teamwork Leads and Opportunities converted to Lead records with custom fields for deal data), Activities (calls, meetings, tasks linked to Persons and Leads via owner email resolution). Each phase emits a row-count reconciliation report comparing the count loaded in Nutshell against the count extracted from Teamwork CRM. Discrepancies above the tolerance threshold trigger a re-run of that phase before proceeding.
Cutover, delta sync, and inventory handoff
We freeze writes in Teamwork CRM during the cutover window, run a final delta migration capturing any records modified during the migration, then mark Nutshell as the system of record. We deliver the Pipeline Configuration document (mapping Teamwork pipelines to Nutshell Lead statuses), the Custom Filter inventory (Teamwork saved filters as reference metadata), and the Active Workflow and Automation list (for manual rebuild in Nutshell). We provide a one-week hypercare window for reconciliation issues. Workflows, sequences, and automations are not migrated as code; they require manual rebuild in Nutshell's automation settings or a separate engagement.
Platform deep dives
Teamwork CRM
Source
Strengths
Weaknesses
Nutshell
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Teamwork CRM and Nutshell.
Object compatibility
3 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
Teamwork CRM: 120 requests per minute per organization.
Data volume sensitivity
Teamwork CRM 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 Teamwork CRM to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your Teamwork CRM 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 Teamwork CRM
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.