Migration file formats
Export CSVs from your old system and we read them. The parser is tolerant about column NAMES — it recognises the common synonyms — so in most cases you can upload what your old system gives you without editing anything. This page is the exact list, for when you want to check before exporting, or when a column was not picked up. Before you start CSV only. Export spreadsheets to CSV first — no XLSX, no ZIP. Up to 20 files per migration. Files up to 4 MB go inline; larger ones upload straight to storage, up to 50 MB each. Same parser either way. Any subset. Dentists only, pricing only, or all four — whatever you have. Headers are matched case-insensitively, and a column we do not recognise is ignored rather than fatal. dentists.csv — your doctors and practices `dentist_name` — required. Also accepted: `doctor`, `doctor_name`, `name`, `contact_name`, `customer`. This is the key we match on. `practice_name` — also `practice`, `office`, `office_name` `email` — also `e-mail`, `contact_email`. Lowercased on import. `phone` — also `telephone` `address_line1` — also `address` `city`, `state` (also `st`), `postal_code` (also `zip`, `zipcode`) `qbo_customer_id` — also `quickbooks_id`, if you already use QuickBooks Doctors are matched on their name, so re-uploading the same export changes nothing. Blank fields on a doctor you already have get filled in; values you have already are never overwritten. materials.csv — your working materials `material_name` — required. Also `material`, `name`. `description` Often you can skip this file: any material named in your pricing CSV is created automatically. pricing.csv — your price book `restoration_type` — required. Also `restoration`, `service`, `product`, `item`, `product/service`. For example crown, bridge, denture. `material_name` — required. Also `material`. `unit_price` — required. Also `price`, `fee`, `amount`, `rate`. `$249`, `249.00` and `1,250` all read correctly. `dentist_name` — also `doctor`. Leave it empty for your standard price; fill it in for a doctor-specific rate. Re-importing a price updates it, which is how you fix a typo in your export and simply run the migration again. cases.csv — your case history `case_number` — required. Also `case#`, `case no`, `case no.`, `rx#`, `case id`. This is the key we match on, so a re-run never duplicates a case. `dentist_name` — required. Also `doctor`, `doctor_name`. A doctor who is not in dentists.csv is created from this. `patient_ref` — also `patient`, `patient_name` `restoration_type` (also `restoration`), `material` (also `material_name`), `shade`, `notes` (also `note`) `status` — also `current_stage`. See below. Imported cases land as shipped — history, not work in progress — so you do not need to include every stage change. We translate the common status words: complete, completed, delivered, closed and shipped all become shipped; open, in progress and received become received; anything we do not recognise becomes shipped. If a column was not picked up Rename it to the canonical name in the left-hand column above and upload again. Bad rows are listed on the diff page rather than stopping the import, so you always see a useful preview — and nothing is written until you press Apply migration. Not sure? Send us your export and we will tell you exactly what comes across before you commit to a date. White-glove migration is included.
This page uses JavaScript to render its full interactive content. Enable JavaScript, or continue reading at
https://casetop.io/docs/migration-formats.