CRM migration
Field-level mapping, validation, and rollback between Cliniko and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.
Cliniko
Source
HighLevel
Destination
Compatibility
12 of 12
objects map 1:1 between Cliniko and HighLevel.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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 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
HighLevel
Contact
1:1Cliniko 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
HighLevel
Custom Object: Cliniko_Patient_Profile__c
1:1Healthcare-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
HighLevel
User / Contact
1:1Cliniko 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
HighLevel
Task / Calendar Event
1:1Cliniko 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
HighLevel
Custom Pick-list Field / Pipeline Stage
1:1Cliniko 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
HighLevel
Note on Contact
1:1Cliniko 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
HighLevel
Custom Object: Cliniko_Invoice__c
1:1HighLevel 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
HighLevel
Custom Object: Cliniko_Invoice_Line_Item__c
1:1Invoice 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
HighLevel
Custom Object: Cliniko_Service__c
1:1Cliniko 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
HighLevel
File on Contact
1:1Cliniko 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
HighLevel
Custom Object: Cliniko_Insurance_Provider__c
1:1Cliniko 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
HighLevel
Sub-Account / Custom Field on Contact
1:1Cliniko 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.
| Cliniko | HighLevel | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Patient | Custom Object: Cliniko_Patient_Profile__c1:1 | Fully supported | |
| Practitioner | User / Contact1:1 | Fully supported | |
| Appointment | Task / Calendar Event1:1 | Fully supported | |
| Appointment Type | Custom Pick-list Field / Pipeline Stage1:1 | Fully supported | |
| Treatment Note | Note on Contact1:1 | Fully supported | |
| Invoice | Custom Object: Cliniko_Invoice__c1:1 | Fully supported | |
| Invoice Line Item | Custom Object: Cliniko_Invoice_Line_Item__c1:1 | Fully supported | |
| Product / Service | Custom Object: Cliniko_Service__c1:1 | Fully supported | |
| Patient Attachment / File | File on Contact1:1 | Fully supported | |
| Insurance Provider | Custom Object: Cliniko_Insurance_Provider__c1:1 | Fully supported | |
| Location | Sub-Account / Custom Field on Contact1: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.
Cliniko gotchas
Background export generation delays for large datasets
Charts export is separate from the main data panel
API key permissions gate record visibility
Form template configurations do not export
The old Appointments export has been deprecated
HighLevel gotchas
Sub-account architecture creates isolated data silos per client
Usage-based telecom and AI costs are not in the subscription price
Workflows have no native equivalent in most destination CRMs
API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account
White-label configuration and branding assets do not export via API
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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
Cliniko
Source
Strengths
Weaknesses
HighLevel
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 Cliniko and HighLevel.
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
Cliniko: Not publicly documented in the OpenAPI schema or public help docs.
Data volume sensitivity
Cliniko 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 Cliniko to HighLevel migration scoping. Not seeing yours? Book a call.
Walk through your Cliniko to HighLevel migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Cliniko
Other ways to arrive at HighLevel
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.