Add many members at once by uploading a spreadsheet. Welcome emails default off so you can stage your roster before launch.
Go to Members → Import. Drag in a .csv up to 5MB. Required columns are Name (one column or First+Last) and Email.
Klasly auto-detects column headers (Mindbody / Zen Planner / WellnessLiving / spreadsheet exports all work) — auto-detected fields show an "Auto-detected" badge.
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 carries an "Open my account" button (one tap, no password to set), and a login account is created for each member so they can actually get in.
See imported / skipped / error counts. Failed rows can be exported as a CSV ("Download errors as CSV") so you can fix and re-import.
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.
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 the invite 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).
Either way they end up on the same single account, however they choose to sign in (the invite button, an emailed code, Google or a password).
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).