CRM migration

Migrate from Cliniko to Zoho CRM

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

Cliniko logo

Cliniko

Source

Zoho CRM

Destination

Zoho CRM logo

Compatibility

92%

12 of 13

objects map 1:1 between Cliniko and Zoho CRM.

Complexity

BStandard

Timeline

3–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Cliniko organizes healthcare practice data around Patients as the central entity — appointments, treatments, invoices, and practitioner assignments all attach directly to the patient record. Zoho CRM uses a traditional CRM module structure with Accounts (companies), Contacts (individuals), Leads (prospects), Deals (opportunities), and Activities (tasks, calls, events). There is no native healthcare-appointment module in Zoho CRM, so appointment data must be mapped to Zoho Activities or custom modules, and original start/end times preserved as custom fields. FlitStack AI sequences the Cliniko-to-Zoho migration in dependency order: practitioners → users first (so owner resolution works), then patients → contacts, then appointments → tasks/events, then financial data. We export all Cliniko modules via the Cliniko API, apply type-aware field mapping, create custom fields in Zoho for Cliniko-specific properties (insurance provider, Medicare number, referral source), and load via Zoho's Bulk API respecting API credit limits per edition. Clinical notes that exceed Zoho's text field limits are chunked or attached as files. Workflows, appointment-reminder templates, and SMS sequences do not migrate — FlitStack documents them for Zoho Blueprint reconstruction.

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

Zoho CRM logo

Zoho CRM

What's pulling them in

  • Free tier is genuinely usable for up to 3 users with leads, pipeline management, and email tracking — no credit card required, making it easy to evaluate before committing.
  • Pricing undercuts Salesforce by 80–90% at equivalent feature tiers, with Enterprise plans offering capabilities that cost 3–4× more on competing platforms.
  • Deep ecosystem of 45+ integrated apps (Books, Desk, Creator, Campaigns) means companies already in the Zoho suite get native integrations without third-party connectors.
  • Highly customizable: custom modules, custom fields, Canvas drag-and-drop layouts, and Blueprint workflow automation without requiring developer resources.
  • Small-business reviewers highlight real-time team visibility, daily time savings of 60–90 minutes, and the ability to mold the CRM to any industry vertical.

Object mapping

How Cliniko objects map to Zoho CRM

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

Zoho CRM

Contact

1:1
Fully supported

Cliniko patients map directly to Zoho CRM Contacts. Name, email, phone, address, date of birth, and all custom patient fields migrate as Contact fields. Patients without an organization affiliation land as Contacts with no AccountId lookup; an optional Account can be created if the patient is also a business entity.

Cliniko

Patient

maps to

Zoho CRM

Lead

1:many
Fully supported

If Cliniko distinguishes between prospective patients (enquiries) and active patients, prospective records can split to Zoho Leads while active patients go to Contacts. This requires Cliniko to have a status or type field indicating prospect vs. active; FlitStack surfaces this during the planning audit.

Cliniko

Practitioner

maps to

Zoho CRM

User

1:1
Fully supported

Cliniko practitioners map to Zoho CRM Users for record ownership. Practitioner email becomes the Zoho username; a temporary password is set and the practitioner is assigned a Role based on their Cliniko access level. Practitioners who also refer patients get a corresponding Contact record.

Cliniko

Practitioner

maps to

Zoho CRM

Contact

1:1
Fully supported

When a Cliniko practitioner refers patients to the practice, they need a Contact record in Zoho CRM for tracking referral source. The Contact record holds their name, organization, specialty (as a custom pick-list), and contact details. This coexists with the User record; the Contact is used in Deals and reporting, the User controls CRM access.

Cliniko

Appointment

maps to

Zoho CRM

Task

1:1
Fully supported

Cliniko appointments with status 'Booked', 'Arrived', or 'Did Not Arrive' map to Zoho CRM Tasks with Subject=appointment type name, Status=open/completed, and Start DateTime/End DateTime preserved. The original Cliniko appointment ID is stored in a custom field (Cliniko_Appointment_ID__c) for traceability. This preserves all status semantics while enabling task-based reporting on appointment volume and completion rates.

Cliniko

Appointment

maps to

Zoho CRM

Event

1:1
Fully supported

Appointments with a duration and specific start/end time map to Zoho CRM Events so calendar views show the appointment block. Event Subject holds the appointment type; WhoId links to the Contact; WhatId links to the Contact or a custom Appointment Type lookup. Telehealth URLs from Cliniko are stored in a custom URL field on the Event.

Cliniko

Appointment Type

maps to

Zoho CRM

Custom Module (Appointment Types)

1:1
Fully supported

Cliniko appointment types (e.g., Initial Consultation, Follow-up, Telehealth) do not have a direct Zoho CRM equivalent. FlitStack creates a custom 'Appointment_Types' module in Zoho with fields for name, duration, default status, and billing code. Appointment records reference this module via a lookup.

Cliniko

Invoice

maps to

Zoho CRM

Custom Module (Invoice History)

1:1
Fully supported

Cliniko invoices (amount, date, payment status, patient lifetime spend) do not fit naturally into Zoho's Deals or native Invoice module without context. FlitStack creates a custom 'Invoice_History' module with fields for invoice number, amount, date, status, and a lookup to the Contact. This preserves financial visibility without requiring Deals to be open.

Cliniko

Business Location

maps to

Zoho CRM

Custom Module (Locations)

1:1
Fully supported

Multi-location Cliniko setups (multiple clinics or franchises) map to a custom 'Locations' module in Zoho CRM with fields for name, address, timezone, and primary contact details. Appointment records and practitioner User records reference the relevant location via a lookup field, enabling location-based reporting on appointment volume, practitioner utilization, and patient distribution across sites.

Cliniko

Product / Service

maps to

Zoho CRM

Product

1:1
Fully supported

Cliniko products and services (billing items, consumables) map to Zoho CRM Products with name, unit price, product code, and stock quantity. If Cliniko tracks stock levels, these migrate as Product stock fields; otherwise, they become zeroed or custom fields. This enables Products to be linked to Deals and used in quote generation within Zoho CRM.

Cliniko

Insurance Provider

maps to

Zoho CRM

Account

1:1
Fully supported

Cliniko insurance providers (stored as patient-linked companies) map to Zoho CRM Accounts with type='Insurance'. Account Name holds the insurer; address and contact details map from Cliniko's third-party company records. Patients link to insurers via Account Contact Relations or a custom lookup.

Cliniko

Treatment Note

maps to

Zoho CRM

Note / Attachment

1:1
Fully supported

Cliniko treatment notes are free-form text or structured templates that can exceed Zoho's single-field text limits. FlitStack chunks long notes into multiple Note records linked to the Contact, or exports them as PDF attachments re-uploaded to Zoho Files. Template names are preserved as custom fields for reference.

Cliniko

Patient Attachment / Form

maps to

Zoho CRM

Attachment / Zoho Files

1:1
Fully supported

Patient files uploaded to Cliniko (consent forms, ID scans, intake documents) re-upload to Zoho CRM as Files attached to the Contact record. File size limits (25 MB per file in Zoho CRM) are enforced during migration; larger files are flagged for manual handling.

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

Zoho CRM logo

Zoho CRM gotchas

High

API access requires Professional tier or above

High

Subform fields do not export cleanly via CSV

Medium

API credit consumption is non-linear

Medium

Export download links expire in 7 days

Medium

Owner (User) assignments require pre-mapped user IDs

Pair-specific challenges

  • Zoho edition field limits per module may exceed Cliniko custom field counts

    Zoho CRM enforces field-count limits per module that vary by edition: Standard caps at 100 fields, Professional at 150, Enterprise at 200, and Ultimate at 300. Cliniko allows a higher density of custom fields on patients and appointments. FlitStack audits the Cliniko custom field inventory against the target Zoho edition's limit before migration. If the limit is exceeded, fields are prioritized by business criticality, and the remainder are exported as a CSV companion file for reference or migrated to a custom module.

  • Appointment status split between Tasks and Events creates dual-record complexity

    Cliniko appointment status values (Booked, Arrived, Did Not Arrive, Cancelled) have no single Zoho equivalent. Mapping appointments exclusively to Zoho Tasks loses calendar visualization; mapping exclusively to Events loses the ability to set a simple open/completed status. FlitStack's default approach uses Tasks for appointment-type records with a custom Status field preserving Cliniko's exact status values, supplemented by Events for appointments that require calendar-block visualization. Both record types reference the same Cliniko_Appointment_ID__c custom field for cross-referencing and deduplication, ensuring that reports can reconcile appointment data across both Zoho objects.

  • Practitioner-to-User email matching is required for owner resolution

    Zoho CRM requires a valid User record for task and event ownership. Cliniko practitioners are identified by email; if a practitioner's email does not match an existing Zoho user, FlitStack cannot auto-assign record ownership. We require practitioner email addresses before migration and flag any unmatched practitioners. Unmatched practitioners can be provisioned as Zoho Users first, or their Cliniko records are assigned to a fallback User pending manual reassignment after go-live.

  • Treatment notes exceeding Zoho text field length are chunked or exported as files

    Zoho CRM multi-line text fields have a 32 KB limit per field. Cliniko treatment notes written by practitioners can exceed this for long clinical documentation. FlitStack evaluates each note's character count during migration: notes under the limit migrate as Zoho Notes attached to the Contact; notes over the limit are exported as PDF files and re-uploaded to Zoho Files linked to the Contact. The original Cliniko note ID is preserved in the file name for traceability.

  • Zoho Bulk API rate limits vary by edition and must be throttled during migration

    Zoho CRM's API credit system allocates daily credits based on edition: Professional tier allows 2,500 requests per minute with burst limits, Enterprise increases to 10,000 per minute, and Ultimate adds further capacity with higher concurrent connection allowances. FlitStack throttles all migration API calls to stay within the target edition's limits, using Zoho's X-RateLimit-Remaining response header to adjust pacing dynamically in real time. Exceeding limits triggers HTTP 429 responses with Retry-After headers, and FlitStack implements automatic retry with exponential backoff to prevent credit exhaustion while maximizing throughput within allowed bounds.

Migration approach

Six steps for a successful Cliniko to Zoho CRM data migration

  1. Audit Cliniko data export and map to Zoho module structure

    FlitStack initiates the migration by pulling a full data export from Cliniko via the built-in Data Export tool (Settings > Data Exports), selecting all modules: patients, practitioners, appointments, appointment types, products, invoices, insurance providers, and business locations. We then cross-reference the export schema against Zoho CRM's available modules, custom field limits per the target edition, and the custom module requirements identified in the planning audit. This produces a signed-off field mapping document before any data moves.

  2. Create Zoho custom modules and fields

    Before data loading begins, FlitStack provisions the custom fields and modules in Zoho CRM that have no standard equivalent: Appointment_Types module, Invoice_History module, Locations module, and all custom patient fields identified in the audit. If the target Zoho edition's field-count limit is at risk, we document which fields will migrate as companion CSV exports and agree on prioritization with the client before proceeding.

  3. Resolve practitioners to Zoho Users by email match

    Cliniko practitioner records are matched to Zoho CRM Users by email address as the unique identifier. Any practitioner without a corresponding Zoho User is flagged in a pre-flight report delivered to the client before migration begins; the client either provisions the User in Zoho first or designates a fallback owner. No appointment or task records are loaded until owner resolution is complete, preventing orphaned activities with no assigned user that would require manual reassignment post-migration.

  4. Load data in dependency order: Accounts → Contacts → Activities → Custom modules

    Zoho requires Contacts to exist before tasks and events can link to them via the WhoId field. FlitStack sequences the migration: practitioners (as Users), insurance providers (as Accounts), patients (as Contacts), then appointments (as Tasks/Events with WhoId lookups), then products, then invoices to the custom Invoice_History module. Each module load is validated for record counts and foreign-key integrity before the next phase begins.

  5. Run a sample migration and generate field-level diff

    A representative sample — typically 100–500 records spanning patients, appointments across different statuses, practitioners, and a few invoices — migrates first. FlitStack generates a field-level diff report comparing source values in Cliniko against destination values in Zoho for every mapped field. The client reviews the diff, confirms appointment status mapping, verifies practitioner ownership, and approves or requests corrections before the full migration commits.

  6. Execute full migration with delta-pickup window and audit log

    The full dataset loads into Zoho CRM. A delta-pickup window of 24–48 hours captures any Cliniko records created or modified during the cutover period. FlitStack maintains an audit log of every record operation (create, update, link) with timestamps, source system ID, and operator. One-click rollback is available if reconciliation reveals unexpected data gaps; FlitStack can re-run the full migration from the Cliniko snapshot if the delta window reveals issues that require a restart.

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.
Zoho CRM logo

Zoho CRM

Destination

Strengths

  • Generous free tier (3 users) with real CRM functionality — no artificial feature restrictions that prevent valid use cases.
  • Per-seat pricing is transparent and predictable; no contact-based billing surprises that inflate monthly invoices.
  • Blueprint visual workflow builder lets sales ops teams automate stage progressions without developer involvement.
  • Canvas drag-and-drop layout editor lets non-technical users customize module views and forms per role.
  • Active development cadence: API v8 is well-documented, supports bulk endpoints, and COQL queries handle complex filtering.

Weaknesses

  • Poor support quality and inconsistent SLA — Enterprise tier requires 50+ user minimum for Priority Phone support.
  • Daily export limits in the UI vary by plan tier, making large dataset extraction slow and planning-dependent.
  • Zia AI features are gated behind $40+/user Enterprise tier, not available to most SMB customers who chose Zoho for cost savings.
  • User-reported occasional UI inconsistencies and performance slowdowns on large datasets with many custom fields.
  • No EU-hosted option limits appeal for GDPR-sensitive companies; some competitors offer data residency guarantees Zoho does not.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Cliniko and Zoho CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Cliniko and Zoho CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Cliniko and Zoho CRM.

  • 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 Zoho CRM 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 Zoho CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Cliniko-to-Zoho migrations complete in 3–5 days of clock time for setups under 10,000 records with clean data and no multi-location complexity. Larger setups with 50,000+ records, multiple locations, or extensive custom fields extend to 4–8 weeks. The planning and field-mapping audit typically takes 3–5 days before any data movement begins; the data load itself is the fastest phase. Multi-location Cliniko setups and large appointment histories are the primary timeline extenders.

Adjacent paths

Related migrations to explore

Ready when you are

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