CRM migration

Migrate from Cliniko to HubSpot

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

Cliniko logo

Cliniko

Source

HubSpot

Destination

HubSpot logo

Compatibility

91%

10 of 11

objects map 1:1 between Cliniko and HubSpot.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Cliniko is a healthcare practice-management system built around patients, practitioners, appointments, treatment notes, and invoices. HubSpot CRM models contacts, companies, deals, and activities for sales, marketing, and service teams. The two platforms share no common object schema — every Cliniko entity requires a deliberate translation decision rather than a simple rename. FlitStack AI extracts patient demographics and contact details as HubSpot Contacts, appointment history as HubSpot Meetings with duration and practitioner ownership, and invoices as HubSpot Deals with financial amounts and statuses. Healthcare-specific data — medical alerts, blood type, treatment notes, and patient groups — migrates as HubSpot custom properties or Timeline Events, since HubSpot has no native clinical equivalent. Practitioners are resolved to HubSpot users by email match and become record owners. The migration carries everything Cliniko stores natively through its API. What cannot migrate are Cliniko appointment-reminder workflows and patient-follow-up sequences — those are scheduling automations with no HubSpot equivalent and must be rebuilt using HubSpot Sequences, Tasks, or Workflows. We deliver a rebuild-reference export alongside the migration so your team has a step-by-step map of every automation to recreate.

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

HubSpot logo

HubSpot

What's pulling them in

  • Lowest barrier to entry of any major CRM — the free tier with unlimited contacts lets teams validate fit before committing to a paid plan, according to G2 and Capterra reviewers.
  • Native integration between the CRM and sales engagement tools (sequences, email tracking, dialer) means no separate sync configuration, a theme across G2 Sales Hub reviews.
  • Pipeline visualization, deal tracking, and automated workflows are consistently praised as intuitive and easy to set up without developer involvement.
  • Strong onboarding for new team members — reviewers on Capterra and G2 highlight how quickly new reps become productive without formal training.
  • The HubSpot platform ecosystem (Marketing, Sales, Service, CMS hubs) allows growing companies to consolidate tools without building new integrations.

Object mapping

How Cliniko objects map to HubSpot

Each row shows how a Cliniko object lands in HubSpot, 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

HubSpot

Contact

1:1
Fully supported

Cliniko patients map to HubSpot Contacts. All standard demographics — name, email, phone, address, date of birth — move as direct property mappings. Medical-specific fields like alerts and blood type require HubSpot custom contact properties since HubSpot has no native clinical field equivalent.

Cliniko

Practitioner

maps to

HubSpot

User (Owner)

1:1
Fully supported

Cliniko practitioners are resolved to HubSpot users by email match and become record owners. A Cliniko practitioner record with email '[email protected]' matches a HubSpot user with the same email address. Unmatched practitioners are flagged before migration so your team can invite them to HubSpot or assign a fallback owner.

Cliniko

Appointment

maps to

HubSpot

Meeting

1:1
Fully supported

Cliniko appointments map to HubSpot Meetings with original start and end times preserved. The HubSpot Meeting owner is set to the mapped practitioner user. Appointment status (arrived, completed, no-show) maps to HubSpot status properties. Appointment type, duration in minutes, and location are stored as custom meeting properties.

Cliniko

Treatment Note

maps to

HubSpot

Timeline Event / Note

1:1
Fully supported

Cliniko treatment notes contain clinical documentation — SOAP notes, observations, prescriptions — with no HubSpot native equivalent. FlitStack AI maps treatment note text to HubSpot Timeline Events linked to the contact and practitioner, preserving the clinical context, date, and practitioner association. Long-form notes with structured sections may be flattened into a single rich-text Timeline Event for readability.

Cliniko

Invoice

maps to

HubSpot

Deal

1:1
Fully supported

Cliniko invoices map to HubSpot Deals capturing the total invoice amount, balance due, invoice date, due date, and payment status. Each Deal is associated to the patient Contact. Invoice status (paid, overdue, written off) maps to HubSpot Deal stage values via value mapping.

Cliniko

Invoice Line Item

maps to

HubSpot

Product (associated to Deal)

1:many
Fully supported

Cliniko invoices contain line items with individual products, quantities, unit prices, and taxes. HubSpot Deals hold a single total amount field — itemised line items do not map natively. FlitStack splits each Cliniko invoice line item into a HubSpot Product record associated to the Deal via a Deal Line Item custom object, preserving the product name, quantity, and unit price.

Cliniko

Referrer

maps to

HubSpot

Company

1:1
Fully supported

Cliniko Referrers track referring practitioners or clinics that send patients. HubSpot has no referrer-specific object — referrers map to HubSpot Company records with a custom 'Referral_Source__c' flag property. Each Cliniko Referrer becomes a Company record; the patient record stores a reference to the referring company via HubSpot's company association.

Cliniko

Product / Billable Item

maps to

HubSpot

Product

1:1
Fully supported

Cliniko products and billable items (treatments, session types, consumables) map directly to HubSpot Products. Product name, description, unit price, and active/inactive status translate cleanly. Products are associated to Deals via the Deal's line items after invoice mapping. Each HubSpot Product can be reused across multiple Deals, reflecting recurring services or bundled offerings, and enables granular revenue reporting by service line, inventory tracking, and integration with HubSpot's product catalog features.

Cliniko

Patient Custom Fields (alerts, blood_type, etc.)

maps to

HubSpot

Contact Custom Properties

1:1
Fully supported

Cliniko allows custom fields on patient records for clinical data. HubSpot's standard Contact schema has no clinical fields. FlitStack AI creates HubSpot custom contact properties for every Cliniko patient custom field — alert flags, blood type, referral source, and any clinic-specific fields are recreated as HubSpot properties on the Contact record.

Cliniko

Practitioner Custom Fields

maps to

HubSpot

User Custom Properties

1:1
Fully supported

If Cliniko stores practitioner-specific custom fields such as specialties, registration numbers, or clinical qualifications, these are recreated as HubSpot user custom properties. HubSpot does not expose user custom properties in the same way as contact properties — some practitioner data may be stored as a custom Contact property on a practitioner-specific stub contact record.

Cliniko

Patient Group

maps to

HubSpot

Static List

1:1
Fully supported

Cliniko Patient Groups segment patients by classification — condition groups, program memberships, or practitioner caseloads. HubSpot has no direct patient-grouping object for clinical use. FlitStack AI converts Patient Groups into HubSpot Static Lists, where each group becomes a named list of HubSpot Contact IDs. Practitioner-specific groups are handled as separate lists or consolidated into a single practitioner-association custom property.

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

HubSpot logo

HubSpot gotchas

High

Marketing Contacts billing model is migration-critical

High

Feature tier gating is not visible until onboarding

Medium

Mandatory onboarding fees inflate year-one cost

Medium

HubSpot CSV importer cannot migrate engagements or attachments

Medium

Custom objects require Enterprise and a pre-existing schema

Pair-specific challenges

  • HubSpot has no native healthcare object model

    Cliniko stores patient alerts, blood type, and clinical notes as first-class record properties. HubSpot's standard Contact schema has no clinical fields — there is no native 'medical alert' property, no 'blood type' field, and no object equivalent to a Cliniko Treatment Note. FlitStack AI creates HubSpot custom contact properties (cliniko_medical_alert__c, cliniko_blood_type__c) and stores treatment note text as Timeline Events, but the data lives in custom fields rather than native objects. Your HubSpot admin will need to add these custom properties before migration data arrives, and your team will need to train staff on the custom property workflow.

  • Appointment-reminder and patient-follow-up sequences do not transfer

    Cliniko includes built-in appointment-reminder automations (SMS and email reminders at configurable intervals before appointments) and patient-follow-up sequences (recalls, re-booking prompts, progress-check messages). HubSpot has no equivalent to Cliniko's internal scheduling-triggered reminders. These automations are not stored as data records — they are workflow configurations — so they cannot be exported and re-imported. FlitStack AI does not migrate Cliniko automations. We export the automation definitions as a structured rebuild reference and provide a step-by-step map of every Cliniko reminder and recall rule to its HubSpot Sequence or Workflow equivalent, so your team can rebuild them natively in HubSpot.

  • Cliniko Patient Groups require manual HubSpot list setup

    Cliniko Patient Groups are used to segment patients by condition, program, or practitioner caseload. HubSpot has no patient-grouping object — the closest analogues are Static Lists and HubSpot Workflow enrollment lists, neither of which carries the clinical classification semantics of Cliniko groups. FlitStack AI converts each Cliniko Patient Group into a HubSpot Static List of contact IDs at migration time, but dynamic group membership (patients automatically added or removed based on Cliniko rule criteria) cannot be replicated without rebuilding those rules as HubSpot Workflows. Multi-practitioner group ownership also requires a custom practitioner-association property on each list.

  • Invoice line items split across HubSpot Deals and Products

    Cliniko invoices carry itemised line items — each treatment or product with its own quantity, unit price, tax, and discount. HubSpot Deals hold a single total-amount field (Amount) and do not natively support multi-line item invoices. FlitStack AI maps the Cliniko invoice total to HubSpot Deal amount and creates separate Product records for each line item, associating them to the Deal via a custom Deal Line Item object. This preserves the product detail, but the native HubSpot Deals UI will not display line items inline — your team will need to open the associated Products sub-panel to see itemisation.

  • Cliniko API rate limits affect large clinic data extraction

    Cliniko's API imposes per-account rate limits on bulk data reads. Large clinics with extensive appointment history, treatment note archives, or high patient volumes may encounter pagination limits or throttling during extraction. FlitStack AI handles rate-limit backoff and retries automatically, but very large datasets may require incremental extraction runs over multiple days. The delta-pickup window captures records modified during the extraction phase, ensuring no data created mid-extraction is missed. Practices with over 50,000 appointment records should plan for a 48–72 hour extraction window in addition to the migration run.

Migration approach

Six steps for a successful Cliniko to HubSpot data migration

  1. Audit Cliniko data and present the object mapping plan

    FlitStack AI extracts a full data inventory from Cliniko — patient count, practitioner count, appointment volume, treatment note count, invoice count, and a list of all custom fields and patient groups. We present an object-mapping plan that shows exactly which Cliniko entity becomes which HubSpot object, which custom fields are created, and which Cliniko features have no HubSpot equivalent and must be rebuilt. You approve the plan before any migration runs.

  2. Resolve practitioners to HubSpot users by email

    Every Cliniko practitioner must resolve to a HubSpot user who can own records. FlitStack AI matches practitioner email addresses against HubSpot user email addresses. Practitioners with no matching HubSpot user are flagged as 'unresolved' — your team either invites them to HubSpot before migration or assigns a fallback owner. No appointment or patient record lands in HubSpot without an assigned owner.

  3. Set up HubSpot custom fields and Timeline Events

    Before data lands, FlitStack AI creates the HubSpot custom contact properties (cliniko_medical_alert__c, cliniko_blood_type__c, cliniko_patient_id__c, etc.) and custom meeting properties (cliniko_appointment_type__c, hs_meeting_duration_minutes__c) needed for healthcare data that has no native HubSpot field. Treatment notes are configured as Timeline Events on the Contact record so practitioners can review clinical history inline in HubSpot. We deliver a schema setup checklist so your HubSpot admin can pre-create these fields if preferred.

  4. Sequence the migration respecting foreign-key dependencies

    HubSpot requires Contacts to exist before Deals can associate to them, and Meetings to exist before they can link to Contacts. FlitStack AI sequences the migration in dependency order: Companies (from Referrers), then Practitioners (resolved to users), then Patients (as Contacts with custom clinical properties), then Appointments (as Meetings with owner mapping), then Invoices (as Deals with line-item Products). This ordering ensures foreign keys resolve correctly on first pass without duplicate record creation.

  5. Run a sample migration with field-level diff before full commit

    A representative sample — typically 200–500 records spanning patients, appointments, practitioners, and invoices — migrates first. FlitStack AI generates a field-level diff showing every source value and its destination equivalent. You verify that medical alerts landed in cliniko_medical_alert__c, that appointment owners resolved to the correct practitioner, and that invoice amounts mapped to Deal amount. You approve the diff before the full migration commits.

  6. Execute full migration with delta pickup and audit log

    The full dataset migrates to HubSpot. A delta-pickup window (typically 24–48 hours) captures any Cliniko records created or modified during the cutover period — new patient sign-ups, appointment bookings, or invoice payments made in Cliniko while migration runs. FlitStack AI maintains a full audit log of every record created, updated, or skipped. If reconciliation fails, one-click rollback reverts the HubSpot environment to its pre-migration state. We deliver a post-migration report showing record counts per object and any unresolved mappings requiring manual follow-up.

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.
HubSpot logo

HubSpot

Destination

Strengths

  • Genuinely useful free CRM tier with no seat limit on contact records.
  • All-in-one sales engagement layer (sequences, email tracking, calling, dialer) embedded natively in the CRM, eliminating a separate integration.
  • Intuitive interface and fast onboarding for individual reps, per G2 and Capterra reviews.
  • Workflow automation triggers across contacts, deals, and tickets with a visual builder.
  • API coverage for all standard objects including custom objects at Enterprise tier.

Weaknesses

  • Pricing model is contact-based at the marketing layer — importing all records as marketing contacts can multiply the monthly bill by 4×.
  • Feature tier cliffs are frequent surprises: sequences, calling, advanced reporting, and quoting are all gated, often requiring plan upgrades mid-implementation.
  • Mandatory onboarding fees at Professional ($1,500) and Enterprise ($3,500) are not prominently disclosed on the pricing page.
  • API rate limits are restrictive for bulk migration — burst limits of 100-200 req/10sec and search endpoint limits of 4 req/sec require careful job queuing.
  • Custom objects, additional pipelines, and advanced forecasting are Enterprise-only, making cost projections difficult for growing teams.

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 HubSpot.

  • 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 HubSpot 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 HubSpot data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Cliniko-to-HubSpot migrations complete in 48–72 hours of clock time for small single-practitioner clinics with under 5,000 patients. Mid-size practices with multiple practitioners, patient groups, and 10–20 custom fields extend to 5–7 days. Large multi-location setups with appointment histories spanning years and treatment notes mapped to Timeline Events can require 8–10 days. The dominant timeline driver is the Cliniko API extraction phase for large appointment histories — HubSpot bulk import runs are typically faster.

Adjacent paths

Related migrations to explore

Ready when you are

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