RESOURCES
Patient CSV import guide
RecallQ imports a CSV export from your practice-management system. Each patient needs a first and last name, a phone number or email address, and a recall due date or last-visit date. Headings must match the listed forms exactly, dates are read day-first, and unknown columns are ignored.
By the RecallQ team. Updated 30 September 2026.
What the file needs
The first row must be column headings. Files must be UTF-8 CSV, up to 10,000 rows and 5 MB. Every patient needs a first and last name (two columns, or one full-name column), a recall due date or last-visit date, and a phone number or email address. If the file has neither, the import screen asks you to pick one recall date for everyone. If a row has only a last-visit date, the recall due date is set six months after it; a readable recall date in the file always wins.
Column headings RecallQ recognises
Only letter case and surrounding spaces or quotes are ignored, so headings must match these forms exactly. “First Name”, “Last Name” and “Preferred Channel” (with spaces) are not recognised: rename them to first_name, last_name and preferred_channel before uploading.
| Field | Accepted headings |
|---|---|
| First name | first_name, given name, given, firstname, first |
| Last name | last_name, surname, family name, familyname, lastname, last |
| Full name (one column) | name, patient name, patient, full name |
| Recall due date | recall_due_at, recall date, recall due, due date, next recall |
| Last visit date | last_visit_date, last visit date, last visit, last appointment, last seen, date of last visit, previous appointment |
| Phone | mobile, mobile number, cell, cell phone, phone, phone number, contact number, telephone, home phone, home, home number, landline, work phone |
| email, email address, e-mail | |
| Date of birth | date_of_birth, dob, birth date, birthdate, d.o.b |
| Patient reference | external_patient_id, patient id, patient number, chart number, file number |
| Preferred channel | preferred_channel, channel, preferred contact, contact method |
Two columns for one field, such as two emails, stop the import; several phone columns are fine, tried mobile first, then general, then home and work. Unrecognised columns are ignored, not rejected.
Dates are read day-first
03/04/2026 means 3 April 2026, always. RecallQ reads 2026-04-03, day, month and year with slashes, dashes or dots (3/4/2026, 03.04.2026), two-digit years with slashes only (03/04/26; 03-04-26 and 03.04.26 are not read) and month names (3 Apr 2026). It cannot tell month-first dates from day-first ones, so an export that uses them must be reformatted before upload, and spreadsheet serial numbers are not read. It never guesses: a recall date such as 25/13/2026 gets the row skipped. An unreadable or future date of birth skips the row; a bad last-visit date is treated as blank (if it was the row's only date, the row is skipped).
Mobile numbers and landlines
RecallQ removes spaces, hyphens, dots and brackets, then stores Australian mobiles (04xx xxx xxx or +61 4xx xxx xxx) in +614 form. Australian landlines (02, 03, 07 and 08 numbers) are stored too, but a landline is never sent an SMS or given SMS consent; if the patient has an email address, they are set to email even when the file says sms. Dropped rather than stored: 13, 1300 and 1800 numbers, non-Australian numbers, extensions, and numbers without an area code. A patient with an unusable phone and a valid email imports with email only; with neither, the row is skipped as contact:missing.
There is no preview, but there is a check step
There is no row-by-row preview. Your browser checks the file's type, size and required headings when you choose it. Valid rows import immediately, unless the limit check rejects the import; rows RecallQ cannot use come back in a downloadable error report: a CSV of those rows, with RecallQ's standard column names and an added error column such as recall_due_at:invalid_date.
A “Check matches” step appears only when a row cannot be matched safely, such as one matching more than one patient on file (same name and phone). You choose the existing person or “someone new”; the rest of the file is already imported.
The consent confirmation
Before an import runs, someone at the practice ticks a confirmation about the patients in the file. It is never pre-ticked, the import is refused without it, and the Check matches step has its own tick. Read the wording in the portal. Separately, clause 3.1 of the Terms makes the practice solely responsible for having a lawful basis and any necessary consent to send each message to each patient. Uploads pass through the portal and RecallQ's application servers in Singapore, which handle them in transit only. Patient records are stored in the main patient database in Sydney, Australia. Some sub-processors operate overseas (see the legal hub).
Re-importing: refresh, add and opt-outs
RecallQ matches each row to a patient already at your practice by patient reference or, failing that, by first name, last name and phone number together; a phone number alone never matches, since families can share one. Archived patients are not matched by name and phone, so re-importing one without a patient number adds them again as a new patient. Include a patient-number column so every row matches.
- One match: the patient is refreshed. Only the last-visit date and recall due date can change, and only when the file shows a newer visit.
- More than one match: you decide in the Check matches step.
- No match: the row is added as a new patient, including any row with no phone number and no patient reference already on file.
A refresh never changes names, contact details, consent or opt-outs, so re-importing never clears an opt-out, and a new record sharing a mobile number with an opted-out patient at your practice starts with that opt-out applied. RecallQ checks your active-patient limit before the import is applied, and an import that would take you over it may be rejected (see how active-patient limits work).
Common questions
Does RecallQ connect to my practice software?
No. RecallQ imports a CSV export from practice-management systems and does not connect to them directly.
What happens to rows RecallQ cannot read?
Valid rows import and the rest are skipped, unless the import would take you over your plan's limit, in which case it may be rejected. Download the error report, a CSV of the skipped rows with an error column, fix them and import them again.
Can I import the same export again next month?
Yes. Matching rows refresh only the last-visit and recall due dates, and a re-import never clears an opt-out. Include a patient-number column so every row matches.
Why is my First Name column not recognised?
Headings must match the accepted forms exactly. Rename First Name to first_name or given name, and Last Name to last_name or surname.
Ready to see this run on your patient data?
Your real patient list. Create an account without a card; recall messages start once you choose a plan and add payment details at checkout.