Importing your client list from a CSV
Updated Oct 9, 2026
For studio ownersYou can bring your existing families over in one go from a CSV file. Go to People → Import clients. During first-time setup the same screen is step 3 of the onboarding wizard — once you have finished setting up, use People.
One row per student
This is the part that surprises people. A row is not a family — a row is one student, and the client's columns are repeated on every one of their rows. Clients are matched by email, so two rows carrying the same client email become one client with two students. A family with three children is three rows that are identical on the left and different on the right.
Repeating the client's details is how you tell us the rows belong together. If you leave them blank on the second row, that row has no client and will be skipped.
You do not have to rebuild your spreadsheet
The quickest way through this is usually not to retype your list into the template. Download the template, copy its top row of column names, and paste that above your own data instead. Then move your columns under the matching names.
Column order does not matter.
Capitals, spaces and dashes are ignored, so Client First Name, client-first-name and client_first_name all work.
Columns we do not recognize are ignored, so your own notes or balance columns can stay exactly where they are.
Filled in an older template? Upload it as it is — the retired parent_* and child_* column names still import.
The columns
client_first_name, client_last_name — the person who pays and signs in to the client portal. Both required.
client_email — required on every row. It matches siblings to one client, and it is what invoices, agreements and notifications are sent to.
client_phone — optional.
sms_consent — "yes", "no", or blank. See below; this one matters.
address_line1, address_line2, city, state, postal_code — the family's address. All optional, and you can fill them in later.
student_first_name — the student on this row. Leave it blank only for an adult learner (below). Students take the client's last name.
student_age — a whole number, or blank.
student_gender — male, female, nonbinary, or blank. Anything else is rejected, so leave it blank unless it is already one of those.
instrument — optional, one per row. If you fill it in, we add a lead enrollment for that instrument unless the student already has one.
Only client_first_name, client_last_name and client_email are required on every row. Everything else can wait.
Adult learners
When the person paying is also the person taking lessons, leave student_first_name, student_age and student_gender all blank. We read that as an adult learner and make the client their own student. Leave all three blank — an age or a gender with no name is ambiguous and that row will be refused.
A student who plays two instruments
Give them one row per instrument, repeating the same student name — we combine them into one student with an enrollment for each instrument. Two rows that repeat the same instrument too are one enrollment, and the preview points the duplicate row out.
About the sms_consent column
This column is deliberately three-state: "yes" means the family explicitly agreed to receive texts, "no" means they were asked and declined, and blank means nobody ever asked. Only an explicit "yes" makes a number textable.
Blank is a perfectly good answer, and it is the right one for most lists. Rows marked "no" and rows left blank still import — those families simply will not be texted, and you can ask them later and record it then. Before importing you are asked to confirm that any "yes" values reflect real consent, because filling the column with "yes" for everyone is exactly the mistake that checkbox exists to slow down.
The example rows inside the template
The template arrives with a few example families in it, showing you how siblings, an adult learner and each sms_consent value look. You can leave them where they are: we recognize them and skip them, so they are never imported into your studio. Replace them with your own list when you are ready.
If the import finds problems
Nothing is saved until you press Import. The preview first lists any rows that are malformed, with the line number and what is missing, and then checks the file against your studio: it labels which clients and students already exist, which instruments are already on file, and which rows will be skipped and why — so read the preview before you import, fix the file if something looks wrong, and upload it again.
You can also skip the import entirely with "Skip — I'll add clients later" during setup, and add families one at a time through the Enroll wizard.
Importing again later
You can run the import as often as you like. A client whose email is already in your studio is reused rather than duplicated — and their students and instruments are matched too, so re-importing a file adds only what is new. A student we can only match by first name is labelled in the preview so you can decide.
Archived clients and students are skipped — the import never restores anyone.
Was this article helpful?
Related articles
Still stuck?
Our team reads every ticket.
Open a support ticket (studio owners)Families and students: reach out to your studio directly — their contact is in your portal.