CRM migration

Migrate from Cliniko to HighLevel

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

Cliniko logo

Cliniko

Source

HighLevel

Destination

HighLevel logo

Compatibility

100%

12 of 12

objects map 1:1 between Cliniko and HighLevel.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Cliniko is a cloud-based practice management system designed for allied health practitioners — physiotherapists, osteopaths, chiropractors, and similar clinics. It handles patient records, appointment scheduling, treatment notes, billing, and insurance claims. HighLevel is an all-in-one CRM, marketing automation, and sales platform built for agencies, consultants, and service businesses. It has no native healthcare data model, which makes the migration a non-trivial schema reconstruction rather than a direct field-for-field copy. We map Cliniko's Patients to HighLevel Contacts, Practitioners to either HighLevel team members or contact records depending on whether they are staff or referring clinicians, and Appointments to HighLevel Tasks (or Calendar Events) with the original start time, duration, status, and associated patient preserved. Treatment notes migrate as Notes on the Contact record. Cliniko's custom patient fields — insurance provider, health fund, referral source, NDIS plan number — require custom field creation in HighLevel since the platform has no native healthcare data model. Cliniko Invoice objects have no direct equivalent in HighLevel; we map them to a custom Invoice custom object in HighLevel and preserve line items, payment status, and amounts. Appointment Types map to pipeline stage names or custom pick-list fields on the Contact. We sequence the migration to resolve foreign keys: Practitioners → Patients → Appointments → Invoices. We use Cliniko's REST API for read access (HTTP Basic auth, per-user API keys) and write to HighLevel via its REST API v2 (Bearer token, sub-account scoped). A delta-pickup window captures any new appointments or patient updates during the cutover window. Automations, workflows, and SMS/email sequences in Cliniko do not migrate — we document them as a rebuild reference.

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

Cliniko logo

Cliniko

What's pushing teams away

  • API access is tied to individual user permissions, meaning API keys inherit role-based access controls — a practitioner-key may not expose all records a migration requires, complicating bulk export scoping.
  • Cliniko's automation capabilities (e.g. appointment reminders, form-triggered updates) do not export; they must be manually rebuilt in the destination platform, increasing migration effort for workflow-heavy practices.
  • Large data exports generate in the background and can take considerable time during busy hours, which may delay migration cutover timelines for practices with high appointment volumes.
  • The platform lacks a native HubSpot or Salesforce CRM-style pipeline view for tracking patient leads or referral sources — practices that outgrow Cliniko often cite the need for a dedicated CRM layer.

Choosing

HighLevel logo

HighLevel

What's pulling them in

  • Agencies choose HighLevel to consolidate CRM, email, SMS, scheduling, and funnels into one subscription, eliminating monthly bills for five to ten separate SaaS tools they previously stitched together.
  • The flat-rate pricing model bills per sub-account rather than per contact, so growing a contact database from 1,000 to 100,000 records does not trigger a billing surprise—a common pain point avoided by migrating customers.
  • White-label and sub-account capabilities let agencies resell HighLevel access to their own clients, turning a software cost center into a recurring revenue stream that justifies the subscription.
  • The platform ships a 14-day free trial with no credit card required, giving teams a low-friction entry point to validate fit before committing to the $97/month Starter tier.
  • Marketing agencies managing multiple client accounts use sub-accounts to maintain data isolation per client while operating under a single agency billing relationship with HighLevel.

Object mapping

How Cliniko objects map to HighLevel

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

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

Cliniko

Patient

maps to

HighLevel

Contact

1:1
Fully supported

Cliniko patients map directly to HighLevel contacts. Patient ID is stored as Source_System_ID__c for traceability and delta-run de-duplication. All standard demographic fields (name, email, phone, address) map directly. The Patient ID field enables accurate record matching during incremental migration runs and prevents duplicate contact creation when the same patient record is encountered multiple times across different migration passes.

Cliniko

Patient

maps to

HighLevel

Custom Object: Cliniko_Patient_Profile__c

1:1
Fully supported

Healthcare-specific patient attributes — insurance provider, health fund membership number, NDIS plan number, referral source, and emergency contact — have no equivalent in HighLevel's standard Contact fields. We create a Cliniko Patient Profile custom object with these fields and link it to the Contact record via a lookup relationship.

Cliniko

Practitioner

maps to

HighLevel

User / Contact

1:1
Fully supported

Cliniko practitioners are staff (employees of the practice) or external (referring clinicians). Staff practitioners are mapped to HighLevel User accounts so they can own records and trigger workflows. External practitioners are mapped to Contact records and linked as referring clinicians to patients.

Cliniko

Appointment

maps to

HighLevel

Task / Calendar Event

1:1
Fully supported

Cliniko appointments map to HighLevel Tasks with Type='Appointment'. Original start time, end time, and status (Arrived, Did Not Attend, Cancelled, Completed) are preserved as task custom fields. The associated patient maps to the Task's ContactId lookup. Practitioner maps to the Task owner.

Cliniko

Appointment Type

maps to

HighLevel

Custom Pick-list Field / Pipeline Stage

1:1
Fully supported

Cliniko appointment types (Initial Consultation, Follow-up, Group Session, Telehealth) map to a custom pick-list field on the Task object. For practices using HighLevel pipelines to track patient journey stages, appointment types can alternatively map to pipeline stage names. We determine the right approach based on your HighLevel setup during the sample migration phase.

Cliniko

Treatment Note

maps to

HighLevel

Note on Contact

1:1
Fully supported

Cliniko treatment notes are unstructured or template-based clinical records attached to a patient. We migrate them as HighLevel Notes linked to the Contact record, preserving the original creation timestamp, author (practitioner), and note body. Rich-text formatting is retained where the source data supports it.

Cliniko

Invoice

maps to

HighLevel

Custom Object: Cliniko_Invoice__c

1:1
Fully supported

HighLevel has no native invoicing object. We create a Cliniko Invoice custom object in HighLevel with fields for invoice number, date, total amount, GST/tax amount, payment status (Paid, Partially Paid, Overdue, Cancelled), and line items. The invoice is linked to the Contact record.

Cliniko

Invoice Line Item

maps to

HighLevel

Custom Object: Cliniko_Invoice_Line_Item__c

1:1
Fully supported

Invoice line items (service description, quantity, unit price, tax) map to a separate custom object linked to the Cliniko Invoice custom object. This preserves the full financial record even though HighLevel lacks native billing. The line item custom object maintains the granular detail of each service rendered, including treatment codes, description, quantity, unit price, and applicable taxes. This structure mirrors Cliniko's invoice line item architecture and enables accurate financial reporting and reconciliation in HighLevel.

Cliniko

Product / Service

maps to

HighLevel

Custom Object: Cliniko_Service__c

1:1
Fully supported

Cliniko products and services (used in appointments and invoices) have no HighLevel equivalent. We create a Cliniko Service custom object with name, description, price, and category, then link it to appointments via a lookup relationship. This custom object preserves the complete service catalog including treatment types, session rates, equipment fees, and product items. Linking services to appointments enables tracking which specific services were delivered to each patient and supports accurate billing and service reporting in HighLevel.

Cliniko

Patient Attachment / File

maps to

HighLevel

File on Contact

1:1
Fully supported

Cliniko file attachments on patient records (consent forms, imaging, referral letters) are downloaded and re-uploaded to the HighLevel Contact as a File attachment. File size limits are respected; inline images in notes are extracted and stored separately. All attachments maintain their original file names and storage format during transfer. The migration process handles common healthcare file types including PDF, JPEG, PNG, and DICOM formats, ensuring clinical documentation remains accessible and properly organized within each patient's HighLevel contact record.

Cliniko

Insurance Provider

maps to

HighLevel

Custom Object: Cliniko_Insurance_Provider__c

1:1
Fully supported

Cliniko insurance provider profiles (health fund name, provider number, claim eligibility) do not map to any standard HighLevel object. We create a custom Insurance Provider object and link it to the Contact record, preserving the full eligibility and claims history where available.

Cliniko

Location

maps to

HighLevel

Sub-Account / Custom Field on Contact

1:1
Fully supported

Cliniko multi-location setups require either mapping each location to a separate HighLevel Sub-Account (recommended for multi-brand or multi-entity practices) or using a Location custom pick-list field on the Contact record (recommended for single-entity practices with location reporting needs). We document both options and configure based on your HighLevel plan tier.

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.

Cliniko logo

Cliniko gotchas

Medium

Background export generation delays for large datasets

Medium

Charts export is separate from the main data panel

High

API key permissions gate record visibility

Medium

Form template configurations do not export

Low

The old Appointments export has been deprecated

HighLevel logo

HighLevel gotchas

High

Sub-account architecture creates isolated data silos per client

High

Usage-based telecom and AI costs are not in the subscription price

Medium

Workflows have no native equivalent in most destination CRMs

Medium

API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account

Low

White-label configuration and branding assets do not export via API

Pair-specific challenges

  • HighLevel has no native healthcare data model — custom objects are required for patient clinical data

    Cliniko stores structured clinical data (NDIS plan numbers, health fund details, insurance eligibility, treatment note templates) that has no equivalent in HighLevel's standard Contact object. While HighLevel's Custom Objects API supports custom fields and relationships, there is no pre-built healthcare schema. We create custom objects (Cliniko_Patient_Profile__c, Cliniko_Insurance_Provider__c) to preserve this data, but you will need to define how these objects integrate with your HighLevel workflows — for example, triggering an automation when a contact's NDIS_Plan_Expiry__c date passes.

  • Cliniko appointment statuses do not map 1:1 to HighLevel task statuses

    Cliniko supports six appointment statuses: Arrived, Did Not Attend (DNA), Cancelled, Completed, In Progress, and Not Arrived. HighLevel Tasks use a simple Completed / Not Completed binary. We map DNA and Not Arrived appointments as completed Tasks with a custom DNA flag field (Did_Not_Attend__c = true) so the data is preserved but may require custom HighLevel reporting views to surface DNA rates accurately. Practices relying on Cliniko's DNA reporting should plan for a custom report builder configuration in HighLevel after migration.

  • Multi-location Cliniko setups require sub-account or custom field decisions before migration

    Cliniko allows unlimited locations within a single account, each with its own practitioners and appointment books. HighLevel's multi-location model uses Sub-Accounts — each sub-account is a separate workspace with its own contacts, pipelines, and settings. Migrating multiple Cliniko locations into one HighLevel sub-account requires a Location custom field on Contact records to distinguish which location a patient belongs to. Migrating into separate sub-accounts requires HighLevel Unlimited or SaaS Pro plan tier. We document both approaches during the pre-migration audit and configure the structure before data moves.

  • Cliniko API rate limits apply during export — bulk exports require scheduling

    Cliniko's API enforces rate limits per API key, and large exports (10,000+ patients, 50,000+ appointments) can be throttled if run during business hours when the practice is also actively using the system. We schedule export runs during off-peak hours and implement exponential back-off on 429 responses. Large datasets may require multi-session exports spread across 24–48 hours, which is factored into the migration timeline. The Cliniko data export UI (Settings > Data Exports) generates files asynchronously for large datasets — we configure email notifications to track completion.

  • Cliniko SMS, email, and in-system communications do not migrate to HighLevel

    Cliniko's patient communication history (appointment reminders sent, SMS exchanges, email confirmations) is stored as platform-native communication logs that cannot be exported via the Cliniko API in a portable format. We migrate the most recent 90 days of Cliniko email and SMS communication metadata as Notes on the Contact record where the data is available, but the full communication history must remain accessible in Cliniko for compliance retention or be archived separately. HighLevel's built-in SMS and email tools will become the active communication channel post-migration.

Migration approach

Six steps for a successful Cliniko to HighLevel data migration

  1. Pre-migration audit and schema design

    We audit your Cliniko account to enumerate all patient records, appointment types, practitioners, invoice objects, custom fields, and locations. We then design the HighLevel custom object schema — creating the Cliniko_Patient_Profile__c, Cliniko_Insurance_Provider__c, Cliniko_Invoice__c, and Cliniko_Invoice_Line_Item__c custom objects with their fields and relationships. If you have multiple Cliniko locations, we document the sub-account vs. single-account approach and configure the structure in HighLevel before any data moves. A schema setup plan is delivered for your review and approval before migration begins.

  2. Resolve practitioners to HighLevel users

    Cliniko practitioner records are resolved by email match against existing HighLevel users. Staff practitioners with active HighLevel user accounts are mapped to their User IDs so tasks and records are owned correctly post-migration. External or referring practitioners are mapped to Contact records. Any practitioner without a matching HighLevel user is flagged before migration — your team either creates the user in HighLevel first or assigns a fallback owner for their records. No patient record migrates without an assigned HighLevel owner.

  3. Run sample migration with field-level diff

    A representative slice of data migrates first — typically 100–500 patients spanning different appointment types, invoice statuses, and custom field combinations. We generate a field-level diff report comparing source values in Cliniko against destination values in HighLevel for every mapped field. You review the diff to confirm that insurance providers, NDIS plan numbers, appointment type labels, and invoice totals landed correctly. Any field mapping errors are corrected before the full run commits. This step validates the custom object relationships and value-mapping logic.

  4. Execute full migration with delta-pickup window

    The full dataset migrates in sequence: custom objects first (Insurance Providers, Services), then Patients with their Patient Profile links, then Practitioners, then Appointments as Tasks, then Invoices with line items. A delta-pickup window (typically 24–48 hours) runs after the main load, capturing any Cliniko records created or modified during the cutover. The delta window ensures HighLevel reflects Cliniko's final state at go-live without requiring a second full export cycle. All operations are logged in the FlitStack audit trail.

  5. Validation, reconciliation, and handover

    We run record-count reconciliation (patient count, appointment count, invoice total) between Cliniko and HighLevel to confirm no records were dropped. We verify that custom object relationships resolved correctly — every Invoice should link to a Contact, every Patient Profile should link to a Contact. You receive a migration report summarizing record counts, unmapped fields (if any), and any data that could not be migrated with explanations. One-click rollback is available for 48 hours post-migration if reconciliation identifies critical issues. We then provide a Cliniko workflow export document as a reference for rebuilding automations in HighLevel.

Platform deep dives

Context on both ends of the pair

Cliniko logo

Cliniko

Source

Strengths

  • Single flat-rate plan with unlimited patients, users, locations, and storage — no per-seat or per-record throttling.
  • Built-in invoicing, appointment scheduling, treatment notes, and reporting in one cloud-hosted application.
  • Telehealth included at no extra cost, launched and maintained without a paywall.
  • Admin-accessible data export panel covering appointments, patients, invoices, transactions, and more.
  • REST API with HTTPS enforcement, JSON responses, and a published OpenAPI schema for programmatic access.

Weaknesses

  • API keys inherit the role-based permissions of the user they belong to, so a read-only or practitioner-level key may not expose all records needed for a full migration export.
  • Form template builders (the configuration for patient intake forms) are not exported via the data panel and must be recreated manually in the destination.
  • The old Appointments export is deprecated; the replacement Reports-based export has different column layouts that require mapping adjustments during migration scoping.
  • Background export generation for large datasets can be slow during busy hours, with no real-time progress API — only email notification on completion.
  • No native automation export; appointment reminders, form-triggered patient field updates, and similar rules must be manually rebuilt in the destination system.
HighLevel logo

HighLevel

Destination

Strengths

  • Consolidates CRM, marketing automation, email, SMS, scheduling, and funnels into one platform at a predictable flat monthly rate.
  • Supports unlimited contacts and unlimited users on all paid tiers, removing per-record billing anxiety as databases grow.
  • Offers white-label and sub-account capabilities that let agencies resell access and manage multiple client environments under one billing relationship.
  • Includes built-in review management, reputation monitoring, and AI agents as native features rather than third-party add-ons.
  • Exports Contacts and Companies via a scalable async bulk CSV system that handles multi-million-row datasets without blocking the UI.

Weaknesses

  • The breadth of features creates a steep learning curve; advanced automations and Workflow configuration require significant time investment that smaller teams may not recover.
  • The platform charges usage-based fees for telecommunications and AI features that are not included in the base subscription, leading to bill surprises.
  • Recurring user reports on Reddit and G2 describe bugs, errors, and slow support response times that disrupt live marketing and sales operations.
  • Sub-account architecture, while powerful for agencies, adds migration complexity when identifying which client data lives in which isolated environment.
  • The platform is designed for agencies and SMBs; larger enterprises requiring deep reporting, custom objects at scale, or complex role-based access may outgrow its capabilities.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 Cliniko and HighLevel.

  • Object compatibility

    B

    1 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

    Cliniko: Not publicly documented in the OpenAPI schema or public help docs.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Cliniko to HighLevel 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 Cliniko to HighLevel data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Cliniko-to-HighLevel migrations complete in 48–72 hours of clock time for under 10,000 patient records with standard fields. Larger setups with 10,000+ patients, multiple Cliniko locations, or heavy custom field usage (NDIS plans, insurance providers, appointment type pick-lists) extend to 5–10 business days. The longest step is typically the pre-migration audit and custom object schema design in HighLevel, followed by the sample migration diff — the actual data transfer runs quickly once the schema is confirmed.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Cliniko.
Land in HighLevel, 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