Import members from CSV

Add many members at once by uploading a spreadsheet. Welcome emails default off so you can stage your roster before launch.

1

Upload

Go to Members → Import. Drag in a .csv up to 5MB. Required columns are Name (one column or First+Last) and Email.

2

Map

Klasly auto-detects column headers (Mindbody / Zen Planner / WellnessLiving / spreadsheet exports all work) — auto-detected fields show an "Auto-detected" badge. WellnessLiving exports are automatically parsed: the multi-line Client column is split into Name, Email, and Phone; system rows are filtered out; duplicate members with multiple passes are merged with pass details in Notes. When WellnessLiving format is detected, you'll see a "Skip cancelled members" toggle that drops anyone with status code "L" (cancelled). Optional columns: Phone, Date of Birth, Gender, Address, Referred By, Plan Type, Credits, Status, Is Minor, Guardian Email, Notes.

3

Review

Set defaults (plan type / credits / status) for rows where the column is blank. Decide whether to send a welcome email (defaults OFF) and whether to mark all imported members as "Waiver Signed" — useful when migrating from a system where waivers were already collected. The welcome email now includes a real one-click sign-in link, and a login account is created for each member so they can actually get in.

4

Done

See imported / skipped / error counts. Failed rows can be exported as a CSV ("Download errors as CSV") so you can fix and re-import.

Tips
  • Migrating a lot of data and want help? Email your raw export to support@klasly.app — for large or messy imports, we can clean and load the data directly so you don't have to wrestle with column mapping.
  • Recommended migration workflow: (1) import existing members with welcome emails OFF and waiver-signed ON — they'll show as "Imported" in the Account column (added, but no login yet), (2) finish setting up waivers / passes / schedule, (3) when ready to launch, click "Invite all" on the Members page to send a sign-in link to everyone who has not joined yet (large rosters are batched automatically, 100 at a time, with a progress count). The Account column then tracks each member: "Imported" → "Invited <date>" → "Joined" (signed in / signed a waiver).
  • Members don't only join by email. They can also finish setting up in person: open the member (or find them on a class roster) and tap "Set up account" to show a QR + short code they scan/type to pick a password — their imported record, history, and passes carry over. This works whether or not they've been emailed an invite yet: an "Imported" member or an already-"Invited" member who hasn't signed in both get the QR (for invited members it just sets a password on the account the invite already created — no duplicate). Only members who have actually signed in stop showing it, since they can already log in. Either way they end up on the same single account, however they choose to sign in (email link or password).
  • The new required-at-create fields (Phone, Date of Birth, Gender) are optional in the importer so legacy data still flows through.
  • Dates accept ISO (1992-04-15), US (4/15/1992), EU (15/4/1992), and human-readable ("Apr 15, 1992") formats. Gender accepts female / male / prefer_not_to_say (or single-letter F / M).
  • Click Download template on the upload step to get a sample CSV with all supported columns and three sample rows including a minor with a separate guardian email.
  • If a row's email matches someone already in your studio (e.g., an instructor), a member record is created for that person — they won't be skipped or cause an error. This makes it easy to give existing instructors or staff a member role too.