Moving to Bizzly with a customer list already in hand? Add people from a spreadsheet takes the export from your old system, or a list you keep yourself, and turns each line into a person on your list. It checks every row first and tells you what it is about to do, and it can record the fees those customers already paid, so none of them is charged twice.
Whatever your business tracks, such as children, pets, students or vehicles, the headings in the file are the same on every site. They are Profile name, Account fee and Per-profile fee.
Three places speak your own word:
- The label on a child in the check. A pet-care business sees Pet: will add where this article shows Child: will add, and a tutoring business sees Student: will add.
- The line on the columns step about using one row for each child.
- The Also: 5 pets to add line in the check, which reads Also 5 pets added at the end.
From here on, "child" stands for whichever kind of person your business keeps.
Where to Find This
Open Customers in your console. There are two ways in, and both open a sheet headed Add people from a spreadsheet:
- Press Actions (the row at the foot of the screen) and choose Import from a spreadsheet, the first action in the list.
- Or press Add a customer at the top right, and at the foot of the Add people sheet that opens press From a spreadsheet (Paste rows, or choose a file). The import sheet opens over Add people.
Both are shown to roles that can add customers. A colleague who can only look at customers sees the list without Add a customer and without Import from a spreadsheet in Actions. See Your Customers.
Get the File Shape Right First
Only the email is needed. The first step tells you so: Copy the cells in Excel, Numbers or Google Sheets and paste them here. The top row holds the headings, such as Email and First name. Only the email is needed.
Press Download a template (A spreadsheet with the right headings and some examples) to get a file called customer-import-template.csv with exactly the columns your business can use, already filled in with worked examples. Open it in Excel, Numbers or Google Sheets, delete the example lines, paste your own people in, and save it as a CSV. The row waits (Getting your template ready) until Bizzly has read your questions, profile forms and fees, so the template is made from all of them.
The example lines teach the format:
- The first two lines share one account holder's email. That is one account with two children, one line per child.
- If your business also has a per-profile fee (see Two Kinds of Fee below), the first line carries both: the account's fee in the account-fee columns and that child's own fee in the per-profile columns. The second line carries only the second child's per-profile fee.
- Another account has one child and no fee. Another has no children at all, with an account fee filled in.
- Extra fee products beyond that each get a line of their own, so every real name and ID from your catalogue appears somewhere you can copy it.
The template is built from your business. Fee lines carry the real names and IDs of the fees in your catalogue, and columns your plan does not include are left out. Download it fresh rather than reusing an old copy. If you have not set an account fee up yet, the Account fee product name cells show a plain Joining fee placeholder, which is the template working normally.
If your plan has fees that can be marked as already paid, the first step also lists them under More options: Which fees can a spreadsheet mark as already paid? Each shows whether it is once for each customer (Once for each customer. Use the Account fee columns, on any of that customer's rows.) or once for each profile (Once for each profile. Use the Per-profile fee columns, on that profile's row.), and its ID. Copy the names and IDs from there rather than typing from memory.
The Four Steps
Each step asks one question and has one button. Nothing is saved until the last.
- 1
Where are your people?
Paste your rows into the box headed Paste rows from your spreadsheet, headings first, or press Choose a file and pick a CSV (A CSV file, with the headings on the top row.). Pasting and a file are read the same way, and a comma, a tab or a semicolon between the cells is found for you. Then press Read these people. Nothing is saved yet.
If something is wrong the box says so: Paste your rows here first, or choose a file. The top row holds the headings., There is no one in that. It needs a row of headings and at least one person under them., or That could not be read as a spreadsheet. Save it as a CSV file and try again.
- 2
Which column is which?
You only see this step when Bizzly could not match your email heading, or could not match one of your headings. If every heading is one it recognises (which is what happens when you fill in the template and use it unchanged), Bizzly goes straight to the check and the columns it matched appear there as one line, with Edit.
The step starts with the file name and how many rows it found, for example "customers.csv, 480 rows". Email comes first, since an email is how a person is found, then First name, Last name and Phone. Each has a drop-down of your headings, and Not in my spreadsheet for one you do not have. Bizzly guesses from your headings, so "Surname" finds Last name and "Mobile" finds Phone, but check each one. Any heading it could not match is named, with the note that it is left out unless you choose a column for it.
More options holds two questions:
- Which other columns do you have? It covers:
- address lines
- Marketing opt-in (yes/no)
- Messaging (whatsapp/text/none)
- your own questions about customers
- the fee columns and the profile columns
- How are numbers and dates written?
If you have more than one kind of profile form, Which form do the profiles use? appears too.
Press Check these people. Use different rows, at the foot, goes back to the first step.
- Which other columns do you have? It covers:
- 3
Check before importing
Bizzly looks at every row without saving anything, a hundred rows at a time, and says how far it has got ("Checking 200 of 480 rows") with Stop checking if you want to stop. When it finishes it says in words what it found, for example 48 people ready, 12 already on your list, 3 need attention, and below that what comes with them, for example Also: 5 children to add, 3 fees to mark as paid.
You then see the columns it matched (Edit goes back), one list of the people in your spreadsheet, and, if any rows need attention, a tick called Only the ones needing attention and a row called Save the ones needing attention.
- 4
Import
The one button names the size of the job: Import 48 people. The import runs a hundred rows at a time ("Importing 200 of 480 rows"), the sheet asks you to keep it open until it has finished, and Stop after this batch is there if you need it. When it is done the sheet says Your people are in, with a line such as 480 people added, 12 already on your list, 3 skipped. Press Done.
Your list behind the sheet reads itself again, and the new people are in it. If you came in through Add people, closing the import sheet after people have gone in closes Add people too.
Imported people are ordinary people from that moment on: you can book them into sessions, give them payment links and invite them to set up their login, exactly as for someone who signed up on your website. If HubSpot is connected, they are copied across to it once each batch of up to a hundred rows lands.
Invitations
Under the check, More options is closed under the line No invitations will be emailed now. Inside is a switch, Email each new person an invitation now, and it is off. Off means nobody is emailed; you can invite them later, one at a time with Edit details on their own screen, or after you have looked them over. Turn it on, and everyone new gets an email with a link to set a password. The choice is made when the people are imported, never during the check.
Rows That Need Attention
A row that needs attention is left out of the import, so the number on the button is exactly how many people will be added. Everything else goes in. To fix the rest, press Save the ones needing attention. It downloads your own rows, untouched, with one extra column, Import problem, naming what to fix on each. Correct them in your spreadsheet and import that smaller file on its own. After an import the same file is offered again as Save the ones that were skipped.
Tick Only the ones needing attention to see just those rows in the list.
If nobody in the spreadsheet is new, the button is replaced by No one here is new. Everyone is already on your list, or needs attention first. If the rows only bring a child or a fee for someone who is already here, the button reads Add what is new.
Stopping, and Starting Again
Stopping is safe. If you stop the import, or a batch fails, the sheet says Part of it is done and how many rows were done, for example You stopped it, and 200 rows of 480 were done. The rest were left alone. Trying again will not add anyone twice. Its button, Import the rest, carries on from where it got to.
If the check could not be finished, the sheet says The check could not be finished. Please try again. with Check again.
What Each Column Does
The fee columns and the profile columns depend on your plan. See What Your Plan Includes below.
Bizzly converts phone numbers for you. Under More options on the columns step, Phone numbers without a country code are from says which country a plain number like 07700 900123 belongs to. It starts as the country of your Stripe account, or the United Kingdom if Stripe is not connected yet, and you can change it for one import. A number already written with a leading + and country code, for example +447700900123, is read correctly whatever that says.
Two Kinds of Fee
Bizzly can record two kinds of already-paid fee, each with its own three columns:
- Account fee (Account fee product name, product ID and paid date): a joining or registration fee, bought once per account. Put it on any one of that person's rows.
- Per-profile fee (Per-profile fee product name, product ID and paid date): a taster or kit fee bought separately for each child, once each for life. Put it on that child's own row, because it needs a child on the same row to attach to.
A single row can carry both. Most businesses only charge an account fee and never use the per-profile columns.
If you put a fee in the wrong kind of column, the row needs attention and says which columns it belongs in, as Account fee: wrong columns or Profile fee: wrong columns. Bizzly does not quietly record it the wrong way.
Recording a Fee They Already Paid
This is the reason many businesses use the import rather than adding people one at a time. Fill in a fee's columns and Bizzly notes that the person (or their child) has already bought it, so it is not added to their basket next time.
Name the fee in either of two ways:
- the fee's product name, spelled as it is in your catalogue (capitals do not matter)
- the fee's product ID, shown on the first step and in the template. One of its price IDs works too.
If a row has anything in a product ID column, Bizzly looks that product up first and ignores the name cell on that row, even if it names a different product. The name is only used when the ID cell is empty, or when the ID no longer matches anything in your catalogue (IDs are re-issued if your site is ever rebuilt from a template). If the two genuinely disagree, the ID wins, so clear one of them.
Account fee paid date and Per-profile fee paid date take 2024-09-12 (year, month, day) or the style set under Dates in this spreadsheet are written. Leave a date blank and the fee is recorded as of today. The date they really paid is more useful a year later, so fill it in where you know it.
This never takes a payment and never issues a refund. It is bookkeeping: the same record you would make by hand with Record a past purchase under Allowances on one person's screen. See A Person's Screen.
If two products in your catalogue share a name, that row needs attention (Account fee: two products share this name), with the sentence that more than one product has that name. Use the ID column for those rows, or rename one of the products.
Mark each fee once: an account fee once per account (on the first row, leaving it empty on the rest), a per-profile fee once on that child's own row. Extra rows do no harm, since they just report the fee as already on record, but one is tidier.
Reading Dates in Your File
Every date column (the two fee dates, and any date question on your profile form, such as date of birth) is read the same way. Under More options on the columns step, Dates in this spreadsheet are written lets you say Day first (DD/MM/YYYY) or Month first (MM/DD/YYYY). It starts as month first when that country (the country of your Stripe account, or the United Kingdom if Stripe is not connected yet) is the United States, and day first otherwise, and it applies to every date column in that import. The hint beside each date column reminds you ("YYYY-MM-DD or DD/MM/YYYY").
2024-09-12 always works, whatever the setting. A date like 01/03/2024 is genuinely ambiguous (1 March read day first, or 3 January read month first) and Bizzly reads it exactly as the setting says without complaint, since both are real dates. So check the setting before you press Check these people. A date it genuinely cannot read in that order needs attention (Account fee: bad date), with a sentence asking for YYYY-MM-DD or the order you chose.
Bringing Children Across
If your business keeps children, pets, students or vehicles on an account and your plan includes them, the template has a Profile name column and one column for every question on your profile form, such as date of birth.
One row per child. An account with three children is three rows that all repeat the account holder's email, and Bizzly folds them into one account. The columns step says so in your own word: Use one row for each child, and repeat the email for a person with several children. Importing the same child again never adds them twice. Rows that repeat an email read Same person in the check.
Details that do not pass your form's own rules are reported on that row (Child: check details, with the reason) and the row needs attention. See What You Ask About People.
What the Check Tells You About Each Person
Each person in the list shows their email (or Row 4 if the email is missing), the row's place in your spreadsheet, a few sentences and a label.
The sentences under a person also say what comes with them:
- Account fee: will record and Profile fee: will record. Afterwards they read recorded, or already on record if it was there.
- Child: will add. Afterwards it reads Child added, or Child already on file if a child of that name is already on the account. Names are matched ignoring capitals.
A note appears where the file could not change an answer the customer gave themselves, such as Marketing answer: kept the customer's own answer.
These are the reasons a row can need attention:
Two further labels are amber, not red, and do not make a row need attention, because no change to the spreadsheet could fix them: Account fee: not on plan and Child: not on plan. See the next section.
In the check, the fee and child on a row are judged on their own, so a row whose email is Invalid can still show Account fee: will record or Child: will add beside it. Nothing on a row that needs attention is saved. Fix the email and import the file again.
What Your Plan Includes
Importing people is available on every plan. Two of the extras depend on yours:
- The account fee columns need a plan that includes recording earlier purchases (the Standard plan and above). Without it, no fee columns are offered: they are not in the template and there is nothing to match them to.
- The profile columns need a plan that includes the people you look after. The per-profile fee columns need both, since a per-profile fee has nowhere to attach without a child.
If your file has columns Bizzly recognises but your plan cannot use, it says so rather than quietly dropping them: This spreadsheet has fee columns, but fees are not part of your plan. The people are still added; the fees are not marked as paid. The profile version reads This spreadsheet has profile columns, but profiles are not part of your plan. The people are still added without their profiles. You can record fees on individual people later, once your plan includes it.
Running the Same File Again
Re-running an import is safe, and is often the right fix.
- People who came in the first time report On your list and are left untouched.
- Fees already marked report already on record, never a second record.
- Children are matched by name, so one already on the account is not added twice.
That means you can fix the few rows that needed attention and run the whole file again, rather than picking the failures out into a new file. The one exception is a row whose sentence begins More than one account uses this email. That fails the same way every time: two separate accounts share the address, and someone has to decide which is right, so contact support rather than running it again.
If Something Goes Wrong
- The import stops partway - the sheet tells you how many rows were done. Nothing is lost. Press Import the rest, or run the same file again.
- Some of your settings could not be read - the first step can say that a column for your own questions, profile forms or fees may not be matched. Close the sheet and open it again to try once more.
- Everything shows an error - usually a passing problem rather than your file. Close the sheet, press the circular arrow (Refresh people) on Customers, and try again in a minute.
Tips
- Check twice, import once. The check costs nothing and saves nothing, so look at it carefully before you press the import button.
- Import with invitations off, then invite in waves. Choose the No account yet segment above the list and send invitations when you are ready to answer the questions they prompt.
- Do the fees in the same pass. Marking joining fees as you bring people across saves working through records one by one later.
- Keep the ID column when you have it. Names change; an ID does not.
- Imported people say so. Open their own screen and Joined in the Summary reads Added from a spreadsheet.
Related Articles
- Your Customers - The list your imported people land in
- A Person's Screen - Recording a past purchase on one person at a time
- Account Fees: Joining and Registration Charges - The once-per-account fee the account fee columns record
- Purchase Rules: Who a Purchase Is For - How a product becomes an account fee or a once-per-child fee
- Your Plans and Packs - Where your fees are listed by name
- What You Ask About People - The children, pets or students the profile columns create