Data management
Importing data
Bring in patients, sessions, or notes from a CSV file, step by step.
Import patients, sessions, or notes from a CSV file — from Export your data, or a spreadsheet shaped closely enough to map in the second step. Find it from Settings, under "Import data".
The steps
- Drop in a file, or click to choose one.
- Confirm which row holds the column headers.
- Match each column in your file to a field — auto-matched already if the headers are ones this app exported.
- Review every row before anything is saved. Fix a cell directly in the table if something's wrong.
- Import — rows go in small batches, with progress shown as it goes.
- Download any rows that couldn't be imported, with the reason attached, to fix and re-upload.
Updating existing records via bulk export + re-upload
You'll basically never need to type an id yourself. Re-uploading a file that still has its id column — a full export, or the error-rows CSV described below — updates the matching existing record instead of creating a duplicate, for every row whose id matches something already in this organization. This is the main bulk-correction workflow: export everything, fix what needs fixing in a spreadsheet, and re-import the whole file. Anything whose id doesn't match — including every row if you leave the id column unmapped — creates a new record instead, so a fresh CSV you built from scratch is always additive, never overwrites something by accident.
Tip
/patients/<id>, a session's edit page is /patients/<patientId>/sessions/<id>/edit. Most people never need this — it's only relevant if you're not starting from an export.Importing sessions or notes
Sessions and notes need to know which patient they belong to. Map a patientId column if your file has one that matches a patient already in this organization; otherwise, map patientFirstName/patientLastName columns and the matching patient is found by exact name match. If neither resolves to exactly one patient, that row is flagged as an error rather than guessed at.
Note
Every session also needs an appointment — a service, provider, and location — so importing books a minimal, already-completed appointment for each row alongside the session. Map serviceId and facilityId columns if this organization has more than one service or location; if there's only one of either, it's used automatically. providerId always has to be mapped — an imported row's historical provider can't be guessed. Re-uploading a corrected file reuses each row's existing appointment rather than booking a new one every time.
Custom fields
A session's custom field values are matched by label against this organization's current custom field definitions. A label from the file that doesn't match any current field is skipped — shown as a warning on that row, but it doesn't block the rest of the row from importing.
Fixing errors
Rows with errors are never imported. After importing, download the error rows as a CSV — it's your original file's rows with an extra column explaining what went wrong, ready to correct and upload again.