CRM migration
Field-level mapping, validation, and rollback between KulaHub and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
KulaHub
Source
Nutshell
Destination
Compatibility
6 of 8
objects map 1:1 between KulaHub and Nutshell.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from KulaHub to Nutshell is a structural migration: KulaHub stores all business entities as Contacts with no separate Company object, while Nutshell uses separate Company and Person objects with a sales pipeline built in. We split KulaHub Contacts into Nutshell Companies (business entities) and Persons (individual contacts) using email domain and business-indicator logic during the transform phase, then link them with the correct Account relationship. KulaHub has no published API documentation, no self-service bulk export, and unpublished rate limits, which means every migration requires direct coordination with KulaHub support for data extraction and a probe phase to measure throughput. We preserve GDPR unsubscribe flags and email preference data as custom fields in Nutshell so existing suppression states carry forward. Workflows, email automations, and forms do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Nutshell's campaign and automation 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 KulaHub 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.
KulaHub
Contact
Nutshell
Company + Person (split required)
1:manyKulaHub has no separate Company or Account object; all business entities are stored as Contacts. We split KulaHub Contacts into Nutshell Company records (using email domain logic to group business entities) and Person records linked to the corresponding Company via AccountId. Individual contacts without a business domain (personal email addresses) are created as standalone Persons without a Company link. We preserve the original KulaHub Contact ID in a custom field kh_contact_id__c on the Nutshell Person record for reconciliation.
KulaHub
Activity: Calls, Emails, Meetings, Tasks
Nutshell
Activity (Task and Event)
1:1KulaHub activity logs (telephone calls, emails, system events) are stored per Contact as chronological time-series data. We export the full activity history and load it in date order into Nutshell's Activity timeline. Calls map to Task with TaskSubtype=Call; meetings map to Event; emails map to Task or Activity records depending on the Nutshell plan. We preserve the original KulaHub timestamp as the ActivityDate so the timeline ordering is intact on the Nutshell Person record.
KulaHub
Email Campaign
Nutshell
Campaign + Contact preferences
1:1KulaHub stores email campaigns, templates, open/click tracking, and GDPR unsubscribe preferences. Campaign metadata (name, dates, subject line) migrates to Nutshell Campaign records if the destination includes the Nutshell Engagement suite. GDPR unsubscribe flags and email preferences migrate as custom fields on the Person record so Nutshell respects existing suppression states. Open and click tracking history migrates as Activity records attached to the relevant Persons.
KulaHub
Document/Attachment
Nutshell
Attachment
1:1Documents attached to KulaHub Contact records are linked via a foreign-key relationship. We extract each document blob and re-associate it with the corresponding Nutshell Person record via the Attachment object. File names, sizes, and upload timestamps are preserved. Documents without a matching Person (orphaned during the split) are held in a staging table and presented to the customer for resolution before production migration.
KulaHub
Task / Reminder
Nutshell
Task
1:1KulaHub Tasks are assigned to specific users and linked to Contacts. We map tasks 1:1 into Nutshell Task records, preserving the assigned-user mapping by cross-referencing the KulaHub user list against the destination Nutshell user directory. Status, Priority, Due Date, and task body text transfer directly. Tasks assigned to users not yet provisioned in Nutshell go to a reconciliation queue.
KulaHub
User
Nutshell
User
1:1KulaHub users appear in activity logs and task assignments. We export the full user list first so owner-ID mapping is resolved before any records that reference users are loaded into Nutshell. We match KulaHub users to Nutshell users by email address. Any KulaHub user without a matching Nutshell account is held in a provisioning queue for the customer's admin to create before record migration continues.
KulaHub
Forms / Website Enquiries
Nutshell
Person custom fields
lossyKulaHub captures website enquiry forms linked to Contact records, but the form-field schema is not publicly documented. We request a sample export of form-submission data during discovery to build the field mapping. Any unmapped fields are held in a staging table and presented to the customer for manual mapping before the production run. Form submission records migrate as custom field values on the corresponding Nutshell Person record.
KulaHub
GDPR Preference / Unsubscribe
Nutshell
Person custom fields
1:1KulaHub stores email unsubscribe states and GDPR preference flags per Contact, but the data format used to persist these preferences is not documented. We export the preference flags as custom Person fields (kh_email_opt_out__c, kh_gdpr_consent__c, kh_consent_date__c) in Nutshell so existing suppression lists carry forward without requiring re-opt-in campaigns. The customer should verify their GDPR documentation obligations in the destination jurisdiction before disabling the KulaHub suppression list.
| KulaHub | Nutshell | Compatibility | |
|---|---|---|---|
| Contact | Company + Person (split required)1:many | Fully supported | |
| Activity: Calls, Emails, Meetings, Tasks | Activity (Task and Event)1:1 | Fully supported | |
| Email Campaign | Campaign + Contact preferences1:1 | Fully supported | |
| Document/Attachment | Attachment1:1 | Fully supported | |
| Task / Reminder | Task1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Forms / Website Enquiries | Person custom fieldslossy | Fully supported | |
| GDPR Preference / Unsubscribe | Person custom fields1: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.
KulaHub gotchas
API has no public documentation or developer portal
No self-service bulk export or documented rate limits
Deleted record restoration costs £80/hour with 30-day window
Contact form field schema is not publicly documented
GDPR preference data portability not confirmed
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 API access scoping
We audit the KulaHub account for record counts (Contacts, Activities, Documents, Campaigns, Tasks), user count, and any known custom fields or form data. We confirm API access credentials and initiate direct coordination with KulaHub support if assisted export is required. We run a small API probe (20-50 records) to measure response headers, pagination behavior, and error codes, which determines whether we use direct API extraction or KulaHub-assisted export. The discovery output is a written migration scope including record counts per object, a data extraction method decision, and a timeline estimate.
Data extraction from KulaHub
We extract data from KulaHub using the method confirmed during discovery: either direct API extraction (with rate-limit probing to set chunk sizes and sleep intervals) or KulaHub-assisted export if API access is restricted. We extract Users first (required for owner mapping), then Contacts, Activities, Documents, Campaigns, and Form Submissions. Each extract is validated against the record counts from discovery and held in a staging environment. GDPR unsubscribe flags are extracted as isolated fields and not mixed with standard contact properties.
Schema design and Company-Person split mapping
We design the Nutshell destination schema. This includes provisioning any required custom fields on Person (kh_contact_id__c, kh_email_opt_out__c, kh_gdpr_consent__c, kh_consent_date__c), configuring the Nutshell Pipeline with stages aligned to the customer's sales process if deal data exists in KulaHub Notes, and designing the Contact-to-Company-Person split rule using email domain logic. We validate the split rule against a sample of 100 KulaHub Contacts and present the results to the customer for manual review of any ambiguous cases before production migration.
Sandbox migration and reconciliation
We run a full migration into Nutshell using production-like data volume from the KulaHub extract. The customer reviews the reconciled record counts (Companies in, Persons in, Activities in), spot-checks 20-30 random Person records against the KulaHub source for field-level accuracy, and confirms the GDPR suppression flags are intact. Any mapping corrections or custom field additions happen in the sandbox phase. The customer signs off the sandbox results before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Users (validated), Companies (grouped by domain from KulaHub Contacts), Persons (linked to Companies), Activities (Tasks and Events in chronological order), Documents (Attachments linked to Persons), Campaigns (if Engagement suite is in scope), and GDPR preference fields (applied last as bulk field updates to avoid overwriting during Person insert). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and handoff
We confirm KulaHub is in read-only mode during cutover, run a final delta migration of any records modified during the migration window, then enable Nutshell as the system of record. We deliver a written inventory of any KulaHub Workflows, email automations, or forms requiring rebuild in Nutshell's campaign and automation tools. We support a three-day post-cutover window where we resolve reconciliation issues raised by the customer's team. We do not rebuild automations or email sequences as Nutshell configurations; that is separate scope for the customer's admin or a Nutshell implementation partner.
Platform deep dives
KulaHub
Source
Strengths
Weaknesses
Nutshell
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 KulaHub and Nutshell.
Object compatibility
1 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
KulaHub: Not publicly documented.
Data volume sensitivity
KulaHub 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 KulaHub to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your KulaHub 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 KulaHub
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.