> ## Documentation Index
> Fetch the complete documentation index at: https://build.practicehub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Importing your data

> What you can bring into PracticeHub from your previous system, and how

Switching systems shouldn't mean leaving your history behind. PracticeHub's API exists so your patients, their appointment history, their billing records and their documents can come with you — imported through the same rules and arithmetic the app itself uses, so day one on PracticeHub looks like day one-thousand.

The way in is the REST API: export from your old system, transform, and import with scripts. It's repeatable, resumable and fast at scale — [Data migration over REST](/guides/data-migration) is the step-by-step guide.

<Note>
  A second, no-code route — connecting an AI assistant and supervising while it does the typing — is planned, but **isn't available yet**: AI connectors are read-only during the limited rollout, so they can't create records. See [Migrating your data with an AI assistant](/mcp/migrating-your-data) for why and what's coming.
</Note>

## What can move

| Data | Importable today? |
| - | - |
| Patients — names, dates of birth, contact details, addresses, referral sources | **Yes** |
| Appointment history — original dates and times, attended / cancelled / missed | **Yes** |
| Billing history — invoices with their line items, payments, and which invoice each payment settled | **Yes** — balances are recalculated from the records, so they come out exactly right |
| Patient documents — PDFs, scans, letters, images | **Yes** — multipart file uploads, scripted or with a tool like Postman |
| History and notes entries on the patient timeline | **Yes** — with a dedicated *historical* label |
| Treatment / clinical notes | **Yes** — SOAP-mapped or free text, back-dated to keep their place in the chronology; see [Clinical notes](/resources-guide/clinical-notes) |
| Care plans, packages, forms | Not in the current API resource set — see [Resources](/resources) |
| Locations, practitioners, appointment types, payment methods | These are your clinic's configuration, not migration data — set them up in **Settings** first; the import then references them |

## The three habits of a good migration

1. **Tag everything with its old ID.** Every resource accepts free-form [metadata](/guides/metadata); putting each record's legacy ID there makes imports safely re-runnable, makes old→new lookups trivial, and means you can always trace any record to its source.
2. **Start small, verify, then scale.** Ten patients first. Check them in the app — names, numbers, dates. Then the rest. Every issue caught at ten is an issue the other five thousand never have.
3. **Import facts, not conclusions.** Send invoices, payments and allocations — not balances. PracticeHub derives balances from the records, so they'll match your old system because they're computed from the same facts.

## What imported data looks like afterwards

Every record written through the API is labelled with its origin: attributed to the API key that created it, and marked as API-sourced in ledgers and activity views. Your team can always tell a migrated record from one typed in by hand — and with legacy IDs in metadata, always tell *which* record it was.

## Where to start

* [Data migration over REST](/guides/data-migration) — shapes, ordering, idempotency, verification and throughput.
* Your old system's export (CSV / Excel) is step zero. Get that first; everything else follows.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.