DancebaseCreate Your Studio

Bulk importing students from a spreadsheet

6 min read

If you're moving off a spreadsheet, Import Students (in the sidebar, under Students, Super Admin only) is built for exactly that. Drop in an Excel or CSV file with your existing roster, and it walks you through matching your own columns to Dancebase, cleaning up anything messy, and reviewing every single row before a single record is actually saved.

The Map Columns step of the Import Students wizard, showing a list of source spreadsheet columns each with a few sample values and a dropdown assigning it to a Dancebase field like First name, Date of birth, or Don't import
Map Columns. Every column gets a real sample of your own data next to it, and a guess at the right field, always yours to change.

The wizard, step by step

  1. 1
    Upload. Drag in your file. If it has more than one tab, you pick which one. If there's a title row or a blank row above your real headers, you click the row that actually holds them, nothing has to start at row one.
  2. 2
    Preview. A quick look at the first few rows as read, so you can confirm it parsed correctly before doing anything else.
  3. 3
    Map columns. Each column gets matched to a Dancebase field automatically where the header's an obvious fit, always shown as a dropdown you can change. A single "Full Name" column can be pointed at "Full name (auto-split)" to split it into first and last on the spot. Separate "Area Code" and "Number" columns each get their own target and join into one phone number. Anything you don't want brought across gets set to "Don't import."
  4. 4
    Clean up columns. If your date of birth column has genuinely ambiguous dates like 03/04/2010, you're asked which format your sheet actually uses, so it resolves the same way every time rather than guessing.
  5. 5
    Team & tier values. Only appears if you've mapped a team or tier column. Real sheets are rarely consistent, one team might show up as "Megacrew" in some rows, "Mega" in others, "MC" in a few more. This step lists every distinct spelling actually found in your file and lets you point each one at the real team or tier, once, no guesswork on Dancebase's part.
  6. 6
    Duplicates. Choose how to match against students already in Dancebase (by email, or by name and date of birth if your sheet has no email column), and what happens on a match, skip it, update the existing record, or add it anyway. The same choice covers duplicates found within your own file.

Nothing is saved yet, even after all of that

Finishing the wizard only analyzes your file, it doesn't create a single student. That happens on the very next screen, Review, and only once you deliberately start the import.

Review, then import

Every row shows up exactly as it'll actually be saved, real values, not raw spreadsheet text, each one marked Ready, Needs a look, or Can't import yet. Click any row to fix a field right there, a missing last name, a wrong date, without going back to your spreadsheet and re-uploading.

The Review table showing several rows with their name, date of birth, email, match status, and a status badge reading Ready, Needs a look, or Can't import yet
Review. What you see is genuinely what gets saved, editable inline, before Start Import is ever clicked.

Once nothing's left marked "Can't import yet," hit Start import. A real progress bar tracks it, and it's safe to close the tab, reopening Past imports picks up exactly where it left off. Results shows how many were created, updated, skipped, and failed, with a downloadable CSV of anything needing attention and the reason why, so you can fix just those rows and re-upload only them, not the whole file again.

The Results page after an import, showing Created, Updated, Skipped, and Failed counts, a Download rows needing attention button, and an Undo this import button
Results. Real counts, a download for anything that needs a fix, and Undo, good for 7 days.

What it actually creates

  • A real student record for every new row, and the family it belongs to (matched to an existing family by email first, so siblings sharing a parent's email correctly land under one household, not several).
  • Real team membership, if you mapped one, the exact same no-billing roster addition an admin's own "grant team access" action already does.
  • A tier tag, if you mapped one, an informational label on the student's record. Only ever set on a genuinely new student, never overwritten onto a returning one, so re-importing this term's sheet can't accidentally wipe a tier they already hold.

It never touches real class enrollment or billing

Importing a roster never books a class, enrolls anyone in a category, or charges a single card. That's a deliberately separate, deliberate action you still take yourself afterward, not something a spreadsheet upload should ever trigger silently.

Undo

Undo this import, on the Results page, is available for 7 days after an import finishes. It only ever reverses students the import itself created, never one it updated, and only if that student hasn't booked a class, made a payment, or otherwise started using their account since. Anyone who has is left completely alone, and you'll see exactly how many couldn't be undone and why.

Saving your mapping for next time

On the last screen before Review, tick Save this column mapping and give it a name. Next term, pick it up from the Upload screen instead of mapping every column again from scratch, one click and you're straight into Review.

Quick answers

What happens to a row I don't fix before starting the import?
Anything still marked "Can't import yet" blocks Start Import until it's fixed or its action is set to Skip, nothing partial gets saved by accident.
Can I import into an existing roster, not just a brand-new studio?
Yes, that's exactly what the duplicate-matching step is for, update or skip anyone already in Dancebase, and only genuinely new rows get created.
Does this work for a large file, hundreds of rows?
Yes, up to 2,000 rows in one file. Beyond that, split your sheet and import in parts.
Why didn't a row's team assignment work even though the student was created fine?
A team can have its own eligibility rules or a cap on members, same as any other way of joining one. If a row hits one of those, the student is still created normally, you'll just see a note on that row explaining the team problem specifically, so you can sort it out by hand.