Import members from a spreadsheet
If your roster lives in a spreadsheet or another system, save it as a CSV file and import it on the Members page. Shindo shows you what it will do first, and nothing is saved or sent until you press Import.
Moving your whole gym from another system? Move your gym to Shindo walks you through the export, the import and everything around it. See Moving from another billing system.
Prepare the file
- Required: a name (or first name and last name) and an email for each person.
- Also read: phone, rank (also from a column headed Membership, Membership Type, Type or Belt), dob, address, address2, city, state, zip and notes. If your old system's Membership column holds plan names, delete or rename it before importing, or each member's rank is read from it. Common spellings work too, such as E-mail, Mobile, Date of Birth, Zip Code, Student First Name and Contact Name.
- A name written last name first in one column, such as "Okafor, Daniel", is read as Daniel Okafor.
- Children without an email take a parent's. Shindo uses a parent email column on the same row (also spelled guardian email, primary parent email or parent/guardian email). If there is none, it uses the email of the other rows in the file with the same last name and the same street address, when they all carry the same email (a mother and a brother on the family email, say). If those rows carry two or more different emails, it doesn't guess, and the child's row is not imported.
- Parents who don't train come in as a login only. When a row says the person is a parent or guardian (Mindbody's Client Type, or a Contact Type, Person Type or Member Type column saying Parent or Guardian) and the file has a child on the same email, that parent is not imported as a member: they sign in for their children, are never billed and are not on your roster. The family still gets one invitation, which greets the parent. A parent row with no child on its email is imported as a member, as before.
- Dates can be M/D/YYYY, read month first the US way (3/4/2017 is March 4, 2017), or YYYY-MM-DD. A two-digit year such as 3/4/17 is never guessed. Dates that can't be read are listed once for the column, and those people come in without a birth date.
- Include date of birth and address if you have them. Members are asked for both on their first login, so importing them saves everyone that step.
- Any other column is ignored, and the import tells you which.
- A file can be at most 2 MB and 2,000 rows. Split a bigger roster into several files.
What each system's export needs
Export everyone, including people who have left, and import the file as it comes. These are the columns Shindo reads from each one.
- PerfectMind: export a contacts view as CSV. Full Name, Email, Phone, Birthday and Member Status are read. The Primary Parent/Guardian column holds a name, not an email, so add the parent's email to the view, or children with no email of their own are not imported.
- Gymdesk: the Full Customer Export. First Name, Last Name, Email, Primary Phone, Date of Birth and Status are read. Parent Names is not.
- Zen Planner: a People report with all columns. Names, email, phone, address, birth date and Status are read. A child with no email takes the email of the others at the same address with the same last name, when they share one email.
- Kicksite: Students, with Status set to All, exported. Student First Name, Student Last Name, Email, Mobile Phone, Birthdate, Status and Rank are read. Parent First Name and Parent Last Name are read as the name of the parent who signs in for the child: the family's invitation greets the parent, and the parent can sign up as a login only. A parent who also has a row of their own on that email comes in as a login only, as for Mindbody.
- Spark: All Members, exported as CSV. Contact Name ("Last, First"), Email Address, Mobile, Birthday and Status are read.
- Mindbody: the client mailing list export. Names, email, phone, address and birth date are read. A child with no email takes the family's email from the parent and siblings at the same address, when they all carry that one email. Client Type is read to find the parents, who come in as logins only.
- Your own spreadsheet: any of the columns above.
Status columns
Everyone you import starts inactive, whatever a Status column in your file says. They become active when they get a membership, or you can set someone active on their member page.
A row whose status says inactive, former, cancelled, expired or frozen is still imported, so you keep their history, but it is never invited by the import, whatever the invite box says. In a column headed Active or Current, a No, False, N or 0 counts the same way. The preview says so on each of those rows. Except for frozen rows (usually a family on a break), they are not invited later by Invite All or the switching guide either, until you set the person active or tap Allow invitations on their member page.
Import it
- Open Members and tap Import CSV.
- Choose your file and tap Upload. Nothing is saved yet.
- Read the preview. At the top it says how many people in how many families will be imported, and how many rows won't be (tap see why). Each family is the people in the file sharing one email; the invitation also names anyone already on your roster on that email who has no login yet. Each person shows their name, birth date as Shindo read it, and status. A child who took a parent's email says where it came from, such as "Email from Grace Okafor's row". The counts also say how many parents come in as logins only, such as "2 parents as logins only", and each of those parents reads "Login only: signs in for" their children. Tap Make a member under a parent to import them as a member instead (they might train too), and Make login only to undo it. The counts change as you tap.
- Decide on Send portal invite email to imported members after import. Until you have a membership plan that renews and Stripe connected, it starts unticked and says "Add a membership plan and connect Stripe first, so families have something to join." If you haven't set a changeover date and nobody pays you through Shindo yet, it also starts unticked, with a link to set the date. Set the changeover date before inviting families, so nobody pays your old system and Shindo for the same month.
- Tap Import. Shindo saves exactly what the preview showed. If the file or your roster changed in between, nothing is imported and you are asked to upload it again.
- Read the result: Imported with a count, then any Imported with notes (rows that came in but had a cell Shindo couldn't read), notes about your file's columns, and Errors (rows that were not imported, each with its row number).
After a successful import the list switches to showing everyone, so you can see the new rows.
Next time you open Members, the list shows active members. While nobody is active yet, it says how many imported members are inactive until they have a plan, with Show inactive members.
Why imported members can't check in yet
An import creates people, not plans. Until each person has a plan or a session pack, they can't check in, and the result says so.
Importing the same file twice
It's safe. A row whose name and email are already on your roster is skipped and listed under Errors as already on your roster. Two rows in the same file with the same name and email are imported once.
What the import doesn't do
- It doesn't put anyone on a plan or carry over their billing. Members choose a plan in their portal, or you sell one with Take Payment on their member page.
- It doesn't update people already on your roster. Change those on their member page.
Related: Add a member, Invite members to their portal, Moving from another billing system.
Still stuck?
Tell us what you were trying to do, and we'll reply by email.
Send your question to Shindo