CRM migration
Field-level mapping, validation, and rollback between KulaHub and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
KulaHub
Source
Salesforce Sales Cloud
Destination
Compatibility
5 of 12
objects map 1:1 between KulaHub and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
3-5 weeks
Overview
KulaHub stores all business entities as flat Contacts with no separate Account or Company object, while Salesforce uses a relational Account-Contact-Opportunity model. We extract the full contact list during discovery, map company-level data to Account records using domain matching or customer-provided split rules, and attach contacts to those accounts by resolving the parent relationship at migration time. Activity history (calls, emails, tasks) and email campaign tracking data migrate as Salesforce Tasks, Events, and EmailMessage records. KulaHub has no native Deals or Pipeline object, so any deal history the customer wants to preserve must be reconstructed as Opportunities with stages defined during schema design. Workflows, automations, and sequences do not migrate as code; we deliver a written inventory of these for the customer's admin to rebuild in Salesforce Flow. GDPR email preference flags export as custom contact fields so the destination system respects existing suppression lists from day one.
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 Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
KulaHub
Contact
Salesforce Sales Cloud
Contact + Account (split required)
1:manyKulaHub Contact records contain both individual person fields and business entity fields (company name, industry, website) stored as properties on the same record. We extract company name and domain data during discovery and apply a customer-provided split rule to create Salesforce Account records. Each KulaHub Contact then becomes a Salesforce Contact with the AccountId lookup resolved to the corresponding Account. Any contact without a resolvable company association becomes a Salesforce Contact on a placeholder Account for the customer's admin to reassign post-migration.
KulaHub
Activity (Call, Email, Meeting, Task)
Salesforce Sales Cloud
Task + Event + EmailMessage
1:1KulaHub engagement history (telephone calls, emails, meetings, system events) stores a timestamp and type per contact. We export this as a chronological time-series and load it in date order into Salesforce. Calls map to Task with TaskSubtype=Call; meetings map to Event with StartDateTime and EndDateTime preserved; emails map to EmailMessage linked to a Task; system events and other tasks map to Task. ActivityDate is set to the original KulaHub timestamp to preserve timeline ordering in Salesforce's activity feed.
KulaHub
Email Campaign
Salesforce Sales Cloud
Campaign + CampaignMember
1:1KulaHub campaigns, templates, and tracking data (opens, clicks, unsubscribes) migrate as Salesforce Campaign records with CampaignMember linking contacts to the campaign. Open and click tracking data from KulaHub stores as custom numeric fields on Campaign (e.g., TotalOpportunitiesCreated, AmountAllOpportunities) to preserve historical campaign performance data. GDPR unsubscribe preferences from KulaHub set HasOptedOutOfEmail on the corresponding migrated Contact.
KulaHub
Document/Attachment
Salesforce Sales Cloud
ContentVersion + ContentDocumentLink
1:1Documents attached to KulaHub contacts are stored as binary blobs linked by a foreign key. We extract each document blob and re-upload it to Salesforce as ContentVersion, then create a ContentDocumentLink pointing to the corresponding migrated Contact, Account, or Opportunity. Document filenames and any KulaHub attachment notes migrate as ContentVersion Description fields.
KulaHub
Task/Reminder
Salesforce Sales Cloud
Task
1:1KulaHub tasks are assigned to specific users and linked to contacts. We map tasks 1:1, preserving Status, Priority, and ActivityDate. Task owner resolution uses the User mapping table (see below) to resolve KulaHub user references to Salesforce OwnerId at migration time.
KulaHub
User
Salesforce Sales Cloud
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. Owners resolve by email match against the destination Salesforce org's User table. Any KulaHub user without a matching Salesforce User goes to a reconciliation queue for the customer's admin to provision before the production migration phase begins.
KulaHub
Form Submission
Salesforce Sales Cloud
Custom Object or Staging Table
lossyKulaHub captures website enquiries via forms linked to contacts, but the form-field schema is not publicly documented. We request a sample export of form-submission data during discovery to enumerate the fields. Form submissions that have a clean mapping to KulaHub contact properties load into Salesforce as custom contact fields. Any unmapped or ambiguous fields are held in a staging table (a Salesforce custom object) and presented to the customer for manual mapping before the production run.
KulaHub
Reports
Salesforce Sales Cloud
N/A
lossyKulaHub reports (system activity logs, CRM activity reports, All Contacts export) are included as a data export for the customer to use in rebuilding reports inside Salesforce. Report definitions and dashboards do not migrate; KulaHub's reporting format has no Salesforce equivalent. We deliver the exported data in CSV format alongside the migrated records so the customer's admin can rebuild reports from the same underlying data.
KulaHub
Company/Account
Salesforce Sales Cloud
Account
1:manyKulaHub does not expose a separate Company or Account object. All business entity data stored in KulaHub Contact records (company name, domain, industry, employee count) is extracted during discovery and used to create Salesforce Account records before the Contact migration phase. The Account creation uses company name as the primary dedupe key; duplicate company names are flagged in the reconciliation report for the customer to resolve.
KulaHub
Pipeline/Deal
Salesforce Sales Cloud
Opportunity
lossyKulaHub has no Deals or Pipeline object. If the customer maintains deal history in spreadsheets, shared documents, or KulaHub notes fields, we offer a deal reconstruction engagement as a separate scoping item. We define the Opportunity fields (Stage, Amount, CloseDate, AccountId, OwnerId) based on the customer's deal data format, load the reconstructed Opportunities after Account and Contact migration, and configure the Salesforce Sales Process with stages that match the customer's historical deal pipeline.
KulaHub
Custom Properties
Salesforce Sales Cloud
Custom Fields
lossyKulaHub's custom field schema is not publicly documented. We request a full field inventory from KulaHub support during discovery and compare it against the standard KulaHub contact property list to identify any custom additions. Custom fields that are confirmed are created in Salesforce as custom contact fields (text, number, date, or picklist depending on the inferred type). Any fields whose type cannot be confirmed are flagged in the mapping document for the customer's admin to validate and assign a Salesforce field type before migration.
KulaHub
GDPR Preference Data
Salesforce Sales Cloud
HasOptedOutOfEmail + Custom Fields
lossyKulaHub stores email unsubscribe states and GDPR preference flags per contact. The internal data format for these flags is not documented. We export the preference flags as both Salesforce's standard HasOptedOutOfEmail boolean and as custom contact fields (e.g., gdpr_marketing_consent__c, gdpr_third_party_consent__c) so the destination system respects suppression lists and retains the granular preference data for any future GDPR audit.
| KulaHub | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Contact + Account (split required)1:many | Fully supported | |
| Activity (Call, Email, Meeting, Task) | Task + Event + EmailMessage1:1 | Fully supported | |
| Email Campaign | Campaign + CampaignMember1:1 | Fully supported | |
| Document/Attachment | ContentVersion + ContentDocumentLink1:1 | Fully supported | |
| Task/Reminder | Task1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Form Submission | Custom Object or Staging Tablelossy | Fully supported | |
| Reports | N/Alossy | Fully supported | |
| Company/Account | Account1:many | Fully supported | |
| Pipeline/Deal | Opportunitylossy | Fully supported | |
| Custom Properties | Custom Fieldslossy | Not supported | |
| GDPR Preference Data | HasOptedOutOfEmail + Custom Fieldslossy | 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
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and API credential procurement
We audit the KulaHub account across contacts, activities, campaigns, documents, tasks, users, and reports. We request API access credentials from KulaHub support and probe the API with small test batches to measure response headers and identify any unpublished throttling. We enumerate the full contact field list by requesting a sample export, identify any custom contact properties, and extract distinct company names to begin the Account-split design. The discovery output is a written migration scope with the object map, the Account-split rule, and a confirmed KulaHub API extraction timeline that gates the rest of the schedule.
Account-Contact split design and Salesforce schema design
We design the Salesforce destination schema based on the KulaHub discovery findings. This includes creating custom contact fields for any unmapped KulaHub properties, creating Account records for each distinct company name extracted from contacts, configuring record type and page layout assignments, and designing the Opportunity schema (stage values, amount fields, close date fields) if deal reconstruction is in scope. GDPR preference fields are created as both standard and custom fields to ensure suppression list compatibility. Schema is deployed into a Salesforce Sandbox (Full Copy or Partial Copy) first for validation before any production migration begins.
Sandbox migration and reconciliation
We run a full migration into the Salesforce Sandbox using production-like data volume. The customer's admin reviews record counts (Accounts created, Contacts attached to Accounts, Activities against contacts, Campaigns and CampaignMembers), spot-checks 25-50 random records against the KulaHub source data, and validates the Account-Contact attachment logic. Any mapping corrections, field type adjustments, or duplicate Account merges are resolved in the sandbox before the production migration begins. The customer signs off on the sandbox migration report before we proceed to production.
User reconciliation and Salesforce User provisioning
We extract every distinct KulaHub user referenced on tasks, activities, and campaign ownership records and match by email against the destination Salesforce org's User table. Any KulaHub user without a matching Salesforce User goes to a reconciliation queue for the customer's admin to provision. Migration cannot proceed past this step because OwnerId references on Task, Event, and Opportunity require a valid Salesforce User record. We provide the customer with a spreadsheet listing each KulaHub user and their Salesforce User match status.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from extracted company names), Contacts (with AccountId resolved), Leads (if applicable), Opportunities (if deal reconstruction is in scope, with AccountId and OwnerId resolved), Products and Pricebook entries (if quoting data exists in KulaHub notes or attachments), Activity history (Tasks, Events, EmailMessages via Salesforce Bulk API 2.0 in chronological order), Campaigns and CampaignMembers, Documents (via ContentVersion and ContentDocumentLink), Tasks, and custom field data last. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, delta migration, and handoff
We freeze writes to KulaHub at cutover and run a final delta migration to capture any records modified during the migration window. We enable Salesforce as the system of record and begin the one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We deliver the written automation inventory (any KulaHub workflow equivalents visible in the data export) to the customer's admin for rebuild in Salesforce Flow. We do not rebuild automations as code inside the migration scope; that is a separate engagement. We do not migrate reports or dashboards; we deliver the exported KulaHub report data in CSV format alongside the migrated records.
Platform deep dives
KulaHub
Source
Strengths
Weaknesses
Salesforce Sales Cloud
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 Salesforce Sales Cloud.
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 Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your KulaHub to Salesforce Sales Cloud 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 Salesforce Sales Cloud
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.