CRM migration

Migrate from KulaHub to Freshsales

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

KulaHub logo

KulaHub

Source

Freshsales

Destination

Freshsales logo

Compatibility

63%

5 of 8

objects map 1:1 between KulaHub and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

KulaHub stores all records as Contacts with no separate Account or Deal object, while Freshsales uses a three-tier model of Leads, Contacts, and Accounts plus a visual Opportunity pipeline. We extract company-level data embedded in Contact records during the discovery phase and create Freshsales Accounts before importing Contacts, preserving the business relationship. Email campaign history and GDPR unsubscribe flags transfer as linked records so Freshsales respects existing suppression lists on day one. KulaHub's undocumented API and absence of self-service bulk export require direct credential-based extraction and rate-limit probing during scoping, which adds time to the discovery phase. We do not migrate KulaHub workflows or email sequences; these are delivered as a written inventory for the customer's admin to rebuild in Freshsales.

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

KulaHub logo

KulaHub

What's pushing teams away

  • API has no publicly accessible documentation or developer portal, making it difficult to build integrations or automate data flows without engaging KulaHub support directly.
  • No self-service bulk data export means customers needing to migrate out or audit their historical records must request assisted export, adding time and cost to any data project.
  • Restoration of accidentally deleted records costs £80 per hour with a one-hour minimum, and backups are retained for only 30 days, making data loss incidents expensive and time-sensitive to resolve.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How KulaHub objects map to Freshsales

Each row shows how a KulaHub object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

KulaHub

Contact

maps to

Freshsales

Lead, Contact, or Account-Contact pair (split required)

1:many
Fully supported

KulaHub stores all entities as Contacts with no separate Company object. We extract company name and domain from KulaHub Contact records during discovery and create Freshsales Accounts before importing Contacts. Individual Contact properties (name, email, phone, address) map to Freshsales Contact fields. The split between Lead and Contact on the destination depends on whether the customer wants unqualified prospects to enter Freshsales as Leads (defaulting to Contact conversion later) or directly as Contacts attached to Accounts. We confirm the preferred entry model during scoping and apply it consistently across all imported records.

KulaHub

Contact (company-level data)

maps to

Freshsales

Account

1:many
Fully supported

Company information embedded in KulaHub Contact records (company name, website, industry, employee count where present) is extracted and consolidated into Freshsales Account records. We use company name as the dedupe key to avoid duplicate Accounts. If a KulaHub Contact references no company, it is imported as a standalone Contact without an Account link. Account creation precedes Contact import so that the AccountId lookup is resolved at import time.

KulaHub

Activity (calls, emails, meetings, system events)

maps to

Freshsales

Task, Event, or EmailMessage

1:1
Fully supported

KulaHub activity logs (telephone calls, emails, meetings, and system events) are exported as chronological time-series and loaded in date order to preserve the audit trail. Calls map to Freshsales Task with TaskSubtype=Call and CallDurationInSeconds in custom fields. Emails map to Freshsales EmailMessage records linked to a Timeline Task entry. Meetings map to Event with StartDateTime and EndDateTime preserved. System events are imported as notes or custom Activity Log entries depending on their type. Owner mapping resolves KulaHub user references to Freshsales Users by email match.

KulaHub

Email Campaign

maps to

Freshsales

Contact Activity + Custom Fields

1:1
Fully supported

KulaHub campaign records (campaign name, status, send date, open rate, click rate, unsubscribe count) are mapped to Freshsales as custom fields on Contact records plus linked activity records. GDPR unsubscribe flags from KulaHub migrate to Freshsales HasOptedOutOfEmail on Contact and to a custom gdpr_unsubscribe_date__c field. We do not recreate campaign objects in Freshsales CRM (Freshmarketer handles campaign management separately). The customer's admin maps which campaign metrics should appear as custom fields versus historical notes.

KulaHub

Task / Reminder

maps to

Freshsales

Task

1:1
Fully supported

KulaHub tasks linked to Contacts migrate to Freshsales Task records with Status, Priority, and ActivityDate preserved. Task subject and body map to Subject and Description. Owner mapping resolves KulaHub task assignments to Freshsales User records. Tasks without a resolvable owner are held in a reconciliation queue and imported as tasks owned by the migration service account for the customer's admin to reassign.

KulaHub

Document / Attachment

maps to

Freshsales

Attachment (via Freshsales import)

1:1
Fully supported

Documents attached to KulaHub Contacts are extracted as binary blobs and re-associated with the corresponding Freshsales Contact record. Freshsales supports attachment import via CSV with file upload or via API. We confirm the attachment size and format constraints during discovery and test a sample batch before loading the full set. Attachments without a parent Contact on the destination are held in a staging table.

KulaHub

User

maps to

Freshsales

User

1:1
Fully supported

KulaHub user records export first so that OwnerId mapping is resolved before any record import that references users (Contacts, Tasks, Activities). We match KulaHub users to Freshsales Users by email address. Users without a matching Freshsales User are held in a provisioning queue for the customer's admin to create active Freshsales accounts before record import resumes. Inactive KulaHub users (departed staff) are imported as inactive Freshsales Users to preserve the owner history on migrated records.

KulaHub

Form Submission

maps to

Freshsales

Custom Fields or Note on Contact/Lead

lossy
Fully supported

KulaHub captures website enquiries via forms linked to Contacts, but the form-field schema is not publicly documented. We request a sample form submission export during discovery to identify the actual field names and data types. Unmapped form fields are staged in a holding table and presented to the customer for manual mapping before the production run. Form submissions without a corresponding Contact record are imported as standalone Notes with a source tag identifying the form.

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.

KulaHub logo

KulaHub gotchas

High

API has no public documentation or developer portal

High

No self-service bulk export or documented rate limits

Medium

Deleted record restoration costs £80/hour with 30-day window

Medium

Contact form field schema is not publicly documented

Low

GDPR preference data portability not confirmed

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • No public API documentation or developer portal for KulaHub

    KulaHub's REST API has no Swagger definition, no developer portal, and no published sandbox environment. Extraction for large migrations requires customer-provided credentials and direct coordination with KulaHub support. We probe the API during the discovery phase with a small batch of requests to measure response structure and headers before estimating throughput. Any delays in KulaHub support responding to API access requests extend the discovery timeline and can shift the migration start date.

  • No self-service bulk export; data extraction depends on KulaHub-assisted process

    KulaHub does not offer a self-service bulk export feature. Large record extractions must go through an assisted export process coordinated with KulaHub support. We cannot initiate export independently, which means the data extraction phase is partially dependent on KulaHub's responsiveness and availability. We mitigate by requesting the export early in the discovery phase and running the migration in read-only test-then-cutover phases to avoid repeated export requests.

  • No Deals, Pipeline, or Account object in KulaHub data model

    KulaHub has no separate Company, Account, or Deal object. All business entities live as Contacts, and sales pipeline tracking is not available within KulaHub. We must extract any company-level data embedded in Contact records (company name, website, industry) and create Freshsales Accounts before importing Contacts. Pipeline and Deal history cannot be migrated because it does not exist in KulaHub. If the customer has been using workarounds to track deals in KulaHub (for example, custom fields or deal amounts stored on Contacts), we flag these during discovery so they can be mapped to Freshsales Opportunity records.

  • GDPR preference and unsubscribe data format is undocumented

    KulaHub stores email unsubscribe states and GDPR preference flags per Contact, but the data format and field names used to persist these preferences are not publicly documented. We export preference flags as custom Contact fields alongside standard Contact properties so the destination system can respect existing suppression lists. The customer confirms during scoping whether KulaHub stores separate consent timestamps, consent type (marketing vs transactional), or source of consent, as these affect how the GDPR data maps to Freshsales contact fields.

  • Custom field schema is not publicly documented in KulaHub

    KulaHub does not publish its custom field schema, making it impossible to confirm whether custom Contact properties exist or what their field types are without direct access to the customer's KulaHub account data. We request a sample export of Contact records during discovery to identify all active fields. Any unmapped fields are held in a staging table and presented to the customer for manual mapping before the production migration run. Fields that cannot be matched to Freshsales standard or custom fields are documented as unmigrated with a field-level rationale.

Migration approach

Six steps for a successful KulaHub to Freshsales data migration

  1. Discovery and data audit

    We extract a sample of Contact records from KulaHub using customer-provided credentials, identifying all active fields, activity types, document attachments, and user accounts. We probe the API with a small batch of requests to observe response structure and any rate-limit headers. We request a sample form submission export to identify the form-field schema. We audit the total record counts across Contacts, activities, documents, and users to build the migration volume estimate. The discovery output is a written scope document with confirmed object mapping, any unmapped fields requiring customer decisions, and an estimated timeline.

  2. Company extraction and Account creation plan

    We extract company-level data (company name, domain, industry) from KulaHub Contact records and deduplicate by company name to build the target Account list. We create the Freshsales Accounts in a staging phase before any Contact import so that AccountId lookups are available at Contact import time. Any KulaHub Contact without a company reference is flagged for the customer's decision: import as a standalone Contact or consolidate into an existing Account.

  3. GDPR and email preference export

    We extract unsubscribe states, GDPR consent flags, and email campaign history from KulaHub as separate linked records. These are exported as custom field values on the Contact record plus a gdpr_consent_log__c text area for audit timestamps. We preserve the original KulaHub consent source (form submission, manual entry, imported) if present. The customer confirms whether transactional and marketing consent need separate fields in Freshsales.

  4. Sandbox migration and reconciliation

    We run a full migration into a Freshsales test account (14-day free trial) using production-like data volume from the discovery extract. The customer reconciles record counts (Accounts in, Contacts in, Activities in), spot-checks 25-50 records against the KulaHub source, and signs off the mapping before production migration begins. Any field mapping corrections, unmapped field decisions, and GDPR field confirmations happen in this phase.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Users first (for owner mapping), then Accounts (from extracted company data), then Contacts (with AccountId resolved), then Activity history (Tasks, Events, EmailMessages via Freshsales API with rate-limit handling), then Documents. GDPR preference data is applied to each Contact at import time. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and workflow handoff

    We freeze KulaHub writes during cutover, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver a written inventory of any KulaHub workflow or automation configurations requiring rebuild in Freshsales. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild KulaHub workflows or sequences as Freshsales automation as standard scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

KulaHub logo

KulaHub

Source

Strengths

  • Unified CRM, email marketing, and visitor tracking in a single subscription without needing separate tools.
  • Real-time dashboards show sales and marketing activity at a glance from one shared workspace.
  • UK-based support team with direct phone line reduces time-to-resolution for configuration questions.
  • GDPR email preference and unsubscribe management features are built in, supporting EU data compliance obligations.
  • Contact records store notes, documents, and tasks in one place with team-wide visibility.

Weaknesses

  • No publicly accessible API documentation or developer portal complicates integration planning and automation.
  • No self-service bulk data export means data extraction for migration or backup relies on KulaHub-assisted processes.
  • REST API rate limits are not published, making it difficult to estimate migration throughput and schedule large data moves.
  • Restoration of deleted records costs £80 per hour with a 30-day backup window, creating a narrow and expensive recovery window.
  • Pricing tiers beyond the base per-user rate are not published, making total cost of ownership unclear for larger teams.
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 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 KulaHub and Freshsales.

  • Object compatibility

    B

    2 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

    KulaHub: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your KulaHub to Freshsales 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 KulaHub to Freshsales data migrations

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

Can't find your answer?

Walk through your KulaHub to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 5,000 Contacts with a confirmed field schema and straightforward GDPR preference mapping. Migrations with large engagement histories (over 100,000 activity records), form submission data requiring custom field creation, or the need to reconstruct company hierarchies from Contact records move to five to eight weeks because of KulaHub API probing, assisted export coordination, and the multi-phase Account-extraction step.

Adjacent paths

Related migrations to explore

Ready when you are

Move from KulaHub.
Land in Freshsales, 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