CRM migration

Migrate from Nookal to Freshsales

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

Nookal logo

Nookal

Source

Freshsales

Destination

Freshsales logo

Compatibility

93%

13 of 14

objects map 1:1 between Nookal and Freshsales.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Nookal organizes patient records, practitioner schedules, location data, invoices, and clinical notes in a per-practitioner model designed for Allied Health practices in Australia. Freshsales CRM uses a standard Lead-Contact-Account-Opportunity-Activity model with custom fields and custom modules for healthcare-specific data. We map Nookal client records to Freshsales Contacts and Accounts, practitioner assignments to Freshsales owner lookups (resolved by email match), location data to Account records, and invoices to custom fields on Deals with line items. Clinical notes, Medicare/PBS numbers, and treatment plans that have no standard Freshsales equivalent become custom fields — we define these in your Freshsales account before any data loads. We run migrations via Freshsales' REST API with rate-limit awareness (1,000 requests/hour on Growth tier, scaling to 5,000/hour on Forest) using a staged export-transform-load pipeline that handles field mapping, email-based duplicate detection, and timestamp preservation. Nookal workflows, automations, and Medicare claiming logic have no equivalent in Freshsales and must be rebuilt manually — we export workflow definitions as a reference document for your admin.

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

Nookal logo

Nookal

What's pushing teams away

  • Feature scope is narrow; practices needing patient engagement beyond reminders, social messaging, or AI-powered intake chatbots must layer in additional tools.
  • Limited accounting depth — Nookal handles invoicing and payments but does not produce completed accounting records on its own, requiring Xero or QuickBooks to close the loop.
  • Absence of a documented public API means practices with complex custom integrations or developer-dependent workflows hit a ceiling and must migrate manually.
  • Patient engagement features lag competitors; no WhatsApp or social channel integration and no native AI chatbot for handling patient enquiries at scale.
  • Growing practices report outgrowing the platform's customisation surface when they need advanced custom objects, complex automation, or multi-location scalability beyond what Nookal provides.

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 Nookal objects map to Freshsales

Each row shows how a Nookal 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.

Nookal

Client

maps to

Freshsales

Contact

1:1
Fully supported

Nookal client records map directly to Freshsales Contacts. Client first name, last name, email, phone, and address fields map to Freshsales Contact fields. Records without an email address require special handling — Freshsales Create Contact API requires a valid email, so FlitStack flags email-missing records before migration for manual resolution.

Nookal

Client

maps to

Freshsales

Account

many:1
Fully supported

Nookal client business details (company name, industry, website) merge into a Freshsales Account record linked to the Contact via the AccountId lookup. If a Nookal client has no company affiliation, FlitStack attaches the Contact to a default 'Unassigned Account' record in Freshsales.

Nookal

Location

maps to

Freshsales

Account

1:1
Fully supported

Nookal locations (clinics, practice sites) map 1:1 to Freshsales Account records. Location name becomes Account Name, and location address, phone, and email map to the corresponding Account fields. Each location-account retains its address as the primary billing or service address for appointments and invoices associated with that site.

Nookal

Practitioner

maps to

Freshsales

User / Owner

1:1
Fully supported

Nookal practitioner records map to Freshsales Users by email address match. FlitStack resolves each practitioner email against Freshsales user accounts before migration — unmatched practitioners are flagged so they can be invited to Freshsales before the migration runs. Practitioner specialty and title map to custom fields on the User or Contact record.

Nookal

Appointment

maps to

Freshsales

Custom Module / Activity

1:1
Fully supported

Nookal appointment records have no direct Freshsales equivalent because Freshsales is not a scheduling system. FlitStack creates a custom Appointments module in Freshsales with fields for appointment date, time, duration, practitioner (linked via Contact or User lookup), client (linked via Contact), location (linked via Account), appointment type, and status. If your Freshsales plan does not support custom modules, appointments migrate as custom fields on the Contact record with date, type, and practitioner encoded as text.

Nookal

Clinical Note

maps to

Freshsales

Custom Field / Note

1:1
Fully supported

Nookal clinical notes, treatment plans, and assessment data store as custom text or long-text fields in Freshsales. FlitStack creates Treatment_Plan__c and Clinical_Notes__c custom fields on the Contact object. Large clinical documents may be attached as Files linked to the Contact record. Note timestamps and practitioner author information are preserved in custom datetime fields.

Nookal

Invoice

maps to

Freshsales

Deal (custom fields)

1:1
Fully supported

Nookal invoice records do not map to a standard Freshsales object because Freshsales has no native invoicing. Invoice amount, status (paid/unpaid/overdue), and date map to custom fields on a Freshsales Deal record — Invoice_Amount__c, Invoice_Status__c, Invoice_Date__c. Line items are stored as custom multi-select or text fields. Full invoice PDF files are attached to the Deal record as Salesforce Files equivalents.

Nookal

Payment

maps to

Freshsales

Custom Field / Note

1:1
Fully supported

Nookal payment records (Medicare bulk-bill payments, patient payments, DVA claims) migrate as custom fields on the related Deal (for invoiced amounts) or as activity Notes attached to the Contact. Payment date, amount, payment method, and reference number are preserved. Payment history that spans multiple appointments is aggregated into a Payment_Summary__c text field on the Contact record.

Nookal

Medicare / DVA Claim

maps to

Freshsales

Custom Field

1:1
Fully supported

Nookal Medicare and DVA claiming data has no Freshsales equivalent. Claim status, provider number, service type, and claim reference number migrate as custom fields on the Contact or Deal record. FlitStack creates Medicare_Provider_Number__c, DVA_Claim_Status__c, and Claim_Reference__c fields. Note that Medicare 2.0 claiming logic (deadline June 30, 2025) must be rebuilt as Freshsales workflows or handled through a dedicated Medicare-integrated tool.

Nookal

Custom Property

maps to

Freshsales

Custom Field

1:1
Fully supported

Nookal custom properties on client, practitioner, or location records map to Freshsales custom fields on the corresponding object. FlitStack inspects Nookal's full property list and pre-creates matching custom fields in Freshsales (via API) before data loads. Field types are mapped: Nookal text to Freshsales text, Nookal date to Freshsales date, Nookal dropdown to Freshsales picklist with value-by-value mapping.

Nookal

Attachment / File

maps to

Freshsales

Files

1:1
Fully supported

Nookal file attachments (clinical documents, referral letters, imaging files) linked to client records re-upload to Freshsales as Files attached to the Contact record. File size limits apply per Freshsales plan — FlitStack splits large file batches and retries failed uploads. Inline images in clinical notes are extracted and rehosted as separate file attachments.

Nookal

User / Staff

maps to

Freshsales

User

1:1
Fully supported

Nookal staff records map to Freshsales Users for owner assignment. Active staff members are matched to Freshsales users by email. Nookal staff roles (admin, practitioner, receptionist) map to Freshsales roles and profiles, though sharing rules and permission sets must be configured manually in Freshsales after migration.

Nookal

Referral Source

maps to

Freshsales

Custom Field / Lead Source

1:1
Fully supported

Nookal referral source data (referring practitioner, referral letter, external provider) migrates as a custom Referral_Source__c field on the Contact object. If referral data represents an external organization, it may map to a separate Account record linked via lookup relationship. Referral tracking workflows in Freshsales must be rebuilt manually.

Nookal

Waiting List

maps to

Freshsales

Custom Module / Deal

1:1
Fully supported

Nookal waiting list entries do not have a direct Freshsales equivalent. FlitStack creates a Waiting_List__c custom module (or custom fields on the Contact) with fields for preferred appointment date, practitioner preference, service type, and waitlist status. As clients move off the waiting list into booked appointments, the status updates via Freshsales workflows that your admin rebuilds post-migration.

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.

Nookal logo

Nookal gotchas

High

Medicare 2.0 migration deadline is hard-gated

High

No public API forces reliance on built-in exports

Medium

Custom clinical note templates are account-specific

Medium

Medicare claiming groups tied to Provider Numbers restrict bulk migrations

Medium

Accounting sync does not export raw ledger data

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

  • Freshsales API rate limits vary by plan and can throttle large migrations

    Freshsales enforces API rate limits that are tier-dependent: Growth plans allow 1,000 requests per hour per account, Garden scales to 2,000/hour, Estate to 5,000/hour, and Forest to 5,000/hour with 400 requests per minute. Migrating large Nookal datasets (10,000+ records) against a Growth-tier Freshsales account without pacing can produce HTTP 429 errors that stall the migration. FlitStack monitors response headers, implements exponential backoff on 429 responses, and uses Freshsales bulk import files for high-volume objects to stay within plan limits while maintaining throughput.

  • Medicare numbers, treatment plans, and DVA data require Freshsales custom fields pre-created before migration

    Nookal stores Medicare provider numbers, DVA claim references, treatment plans, and clinical notes as custom properties on client records. Freshsales has no native equivalent for any of these fields. If custom fields are not created before migration, FlitStack must create them via the Freshsales API — adding an extra step that extends the planning phase. Medicare claiming logic (Medicare 2.0 deadline June 30, 2025) and DVA bulk-billing workflows are not transferable and must be rebuilt as Freshsales workflows or handled via a dedicated Medicare-integrated tool post-migration.

  • Nookal appointments do not map to a standard Freshsales object — scheduling relationship is lost in a straight migration

    Nookal structures appointments around practitioner availability, location rooms, and service types with time-slot logic that Freshsales does not support natively. Freshsales is not a scheduling system — it tracks sales activities (calls, emails, meetings) linked to Contacts and Accounts, not clinical appointment slots. FlitStack migrates appointment data into a custom Appointments module with date, time, practitioner, client, and location fields preserved, but the calendar relationship, room availability, and recurring appointment logic must be rebuilt in Freshworks' Freshdesk or a dedicated scheduling tool after migration.

  • Freshsales has no native invoicing object — invoice and payment data requires custom field mapping to Deals

    Nookal's data model includes invoice creation, Medicare bulk-bill claims, DVA claims, and payment recording as first-class objects. Freshsales does not have an invoicing or billing module — the standard Deal object represents a sales opportunity, not a clinical invoice. Invoice amounts, statuses, and due dates must map to custom fields on Deal records, and payment history must attach as Notes or custom fields. Full accounting-level detail (payment splits, credit notes, refund tracking) cannot be represented in Freshsales without a separate accounting integration (Xero or QuickBooks, which Nookal already syncs natively).

  • Nookal workflows, appointment reminders, and Medicare claiming automations have no transfer path to Freshsales

    Nookal appointment reminder rules, clinical note templates, Medicare claiming automations, and billing workflow logic are stored as platform-native configurations with no export capability. Freshsales workflows (available on Pro and Enterprise plans) handle automation but have a completely different event-and-action model. Any logic that automates Nookal's reminder sequences, claim submission timing, or clinical documentation rules must be rebuilt from scratch in Freshsales. FlitStack exports Nookal's workflow definitions as a structured reference document to support the manual rebuild effort, but the automations themselves do not migrate.

Migration approach

Six steps for a successful Nookal to Freshsales data migration

  1. Review Nookal data model and export capabilities

    FlitStack reviews the full Nookal data model — client properties, practitioner records, location data, appointment structure, invoice history, and custom fields — to build a complete inventory before writing any migration logic. We assess which Nookal data is exportable via API versus those requiring manual export, identify records with missing required fields (notably email addresses, which Freshsales requires for Contact creation), and document the full list of custom properties that need Freshsales custom fields created in advance. This inventory drives the pre-migration checklist delivered to your admin before data moves.

  2. Pre-create Freshsales custom fields for healthcare data

    Before any data loads, FlitStack creates the custom fields in Freshsales that have no standard equivalent: Medicare_Number__c, DVA_Number__c, Treatment_Plan__c, Clinical_Notes__c, Invoice_Amount__c, Invoice_Status__c, Invoice_Date__c, Appointment_Date__c, Appointment_Type__c, and practitioner-to-owner lookup fields. For clients without an email address, we flag those records for manual email entry or alternate identification before the migration runs — Freshsales Create Contact API requires a valid email. This step ensures the Freshsales schema is ready before the first record loads.

  3. Load core objects via Freshsales API with rate-limit awareness

    FlitStack sequences the migration to satisfy Freshsales foreign-key requirements: Accounts first, then Contacts with owner lookups resolved by email match to Freshsales users, then custom objects and activities. We pace requests against your Freshsales plan API limits (1,000/hour on Growth, up to 5,000/hour on Forest) with automatic retry on HTTP 429 responses and exponential backoff. Large batch imports use Freshsales bulk import files where appropriate to reduce API call volume. All timestamps, owner assignments, and source system IDs are preserved at this stage.

  4. Run a sample migration with field-level verification

    A representative slice of records — typically 200–500 spanning clients, locations, practitioners, and appointments — migrates first. FlitStack generates a field-level diff report comparing source Nookal values against the destination Freshsales fields so you can verify Medicare number mapping, practitioner-to-owner resolution, appointment date preservation, and invoice-to-Deal field mapping before the full run commits. You approve the sample before we proceed to full migration.

  5. Cut over with delta pickup for in-flight changes

    The full migration runs against Freshsales. A delta-pickup window (typically 24–48 hours) captures any Nookal records created or modified during the cutover — appointments booked, client records updated, invoices issued. FlitStack uses scoped read access on Nookal so your team keeps working normally throughout. All migration operations are written to an audit log, and one-click rollback is available if reconciliation identifies missing or misaligned records after the migration completes.

Platform deep dives

Context on both ends of the pair

Nookal logo

Nookal

Source

Strengths

  • Per-practitioner pricing scales cost-effectively for small-to-mid allied health clinics with one to ten practitioners.
  • Native Medicare and DVA Online Claiming 2.0 eliminates the need for a separate claiming middleware for Australian health practices.
  • Accounting sync with Xero and QuickBooks keeps financial records up to date without manual re-entry.
  • Built-in diary, clinical notes, and practice reporting cover the core allied health workflow in a single platform.
  • Australian-focused product design includes My Health Record integration and Australian Immunisation Register support.

Weaknesses

  • No documented public REST API limits programmatic data extraction and makes automated migration more complex.
  • Accounting depth is shallow; Nookal handles invoicing and payments but relies on Xero or QuickBooks for completed financial records.
  • Feature set is narrower than multi-feature competitors; practices needing patient engagement, AI chatbots, or social messaging must layer in additional tools.
  • Custom field definitions and clinical note templates are not exposed in a public schema, requiring manual discovery during scoping.
  • Integration ecosystem beyond Xero, QuickBooks, and Medicare claiming is limited compared to larger practice management platforms.
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 Nookal 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

    Nookal: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Nookal-to-Freshsales migrations complete in 48–72 hours for setups under 5,000 records with straightforward field mapping. Larger migrations with 50,000+ records, multiple custom fields (Medicare numbers, treatment plans, practitioner lookups), and significant data-model divergence extend to 5–10 days. FlitStack sequences the migration so Accounts load before Contacts and custom fields are pre-created in Freshsales before data moves — eliminating the back-and-forth that stalls ad-hoc migrations.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Nookal.
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