Moving to Bizzly with a customer list already in hand? Import takes a spreadsheet — the export from your old system, or a list you keep yourself — and turns each line into a real customer on your list. It shows you exactly what it's about to do before it does any of it, and it can record the joining fee those customers already paid, so none of them is charged it twice.
Where to Find This
Navigate to Services → Customers → All Customers → Contacts tab and click Import, next to Add customer at the top of the list. A window opens titled Import customers.
Import sits beside Add customer and appears for the same people: team members whose role lets them make changes to customers. A colleague on a view-only role sees the list without either button.
Get the File Shape Right First
The first screen explains what's wanted: "Upload a CSV with a header row — one customer per line." Email is required; name and phone are optional.
Click Download template CSV 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 example lines are there to teach the format, not just the column names:
- The first two lines share one parent's email — that's a family with two children, one line per child.
- One of those two lines carries the fee; the other leaves the fee cells empty, because a fee belongs to the account once, not to each child.
- Another family has one child and no fee recorded.
- Another customer has no children at all, with their fee filled in.
- The first two fees you can mark as already paid are shown on those lines. If you have more than two, there's an extra line for each one beyond the first two, so every real name and ID from your own catalogue appears somewhere you can copy it.
The template is built from your business — the fee lines carry the real names and IDs of the fees in your catalogue, and columns your plan doesn't include are simply left out. So download it fresh rather than reusing a copy from months ago. If you haven't set a fee up yet there's nothing real to fill in with: the Fee product name cells show a plain Joining fee placeholder and the Fee product ID cells are left empty — that's the template working normally, not a fault.
When you do have a fee that can be marked as already paid, the first screen lists it under "Fees you can mark as already purchased" — each with its name and its ID in brackets. That's where the values for the fee columns come from, so copy them from there rather than typing from memory.
Running the Import
- 1
Choose your file
Click the file box and pick your CSV. Underneath it reads "Nothing is saved until you confirm the preview." If the file can't be read you'll see "Could not read that file: …" with the reason on the end, and a file with only a header line gives "That file has no usable rows — it needs a header line and at least one customer."
- 2
Match your columns
The next screen shows the file name and how many lines it found — "families.csv · 240 rows" — and lists each customer field with a dropdown beside it. Bizzly guesses from your headings, so Surname finds Last name and Mobile finds Phone, but check each one. Any field you don't have can be left at — not in this file —.
Email is marked with a star and must be matched; until it is, the button to continue stays greyed out. Different file, at the bottom, throws this file away and starts you over at the upload screen.
- 3
Decide about invites
At the bottom is a switch: Email each new customer an account-setup invite now. It's off by default — "imported customers appear as 'No account yet' and you can send invites later, one by one or after reviewing." Turn it on only when you're ready for everyone in the file to hear from you.
- 4
Click Preview import
Nothing is written yet. The button reads Checking… while Bizzly works through the file and reports what would happen to every single line.
- 5
Read the preview
The screen says "This is what will happen — nothing has been saved yet." A row of counts sits at the top, and below it a table with one line per row of your file: its Row number, its Email, its Status badges and a Details column explaining anything unusual. Back returns you to the column matching if something needs changing.
- 6
Click Import
The button names the size of the job — Import 240 rows. When it finishes the screen reads "Import finished." with the same counts and table, now showing what actually happened. Click Close, and your new customers are in the list.
Imported customers are ordinary customers from that moment on: they can be booked for, sent payment links and invited to set up their login, exactly like someone who signed up on your website. If HubSpot is connected, they're mirrored across to it as they're created.
Large files are broken into batches of 100 automatically. Where that means more than one batch, the footer shows the progress — Batch 3 of 5… — alongside a Stop after this batch button. Stopping is safe — everything already done stays done, and you're told "Re-run the same file any time to continue; finished rows simply report as existing customers."
What Each Column Does
The last four depend on your plan — see What Your Plan Includes below.
Recording a Fee They Already Paid
This is the reason most businesses use the import rather than adding people one at a time. Fill in the fee columns and Bizzly notes that the customer has already bought your joining or registration fee — so when they next book, it isn't added to their basket.
Fill in either of two columns to name the fee:
- Fee product name — the fee's name, spelled as it is in your catalogue (capitals don't matter).
- Fee product ID — the ID shown in brackets on the first screen of the wizard, and in the template. One of the fee's price IDs works here too.
If a line has anything in Fee product ID, that is the fee Bizzly records — the Fee product name cell on that same line is ignored, even if it names a different product. The name is only used when the ID cell is empty. If the two ever disagree, the ID decides, so clear one of them rather than leaving a contradiction in the file.
Fee paid date takes 2024-09-12 (year-month-day). A slashed date is read as day/month/year, so 12/09/2024 means 12 September 2024 — if your spreadsheet writes dates month-first, save the column as YYYY-MM-DD before importing, because a month-first date is read as a real but wrong date rather than being rejected. Leave the cell blank and the fee is recorded as of today; the date they really paid is much more useful a year later, so fill it in where you know it.
Two things this is not: it never takes a payment and never issues a refund. It's bookkeeping — the same record you'd make by hand on one customer's record, described in Purchase Eligibility on a Customer's Record.
Mark the fee once per family, on one line only. On a family with three children, put the fee on the first line and leave those cells empty on the other two. Extra lines aren't harmful — they simply report Fee already on record — but one is tidier.
If two products in your catalogue share the same name, that line's Details reads "More than one product is named "Joining fee" — rename one, or reference the product id." The badge beside it has no friendly wording for this case and shows the bare word ambiguous_product, so read the Details column for what to do. Use the ID column for those lines, or rename one of the products on the products screen (see The Products & Pricing Screen).
Bringing Children and Other Profiles Across
If your business keeps children, pets, students or vehicles on an account, the wizard adds a Child / profile name column plus one column for every question on your profile form — date of birth, school year, and so on.
One line per child. A family with three children is three lines that all repeat the parent's email; Bizzly folds them onto one account. The screen says so too: "One row per child — a family with several children repeats the parent's email on each row. Re-imports never duplicate a child."
If you have more than one profile form set up, a Profile form dropdown appears at the top of the matching screen so you can say which one this file is for.
Details that don't pass your form's own rules are reported on that line — the badge reads Child: check details and the Details column says what's wrong — while the customer themself still imports fine. See Account Profiles.
Reading the Badges
Each line gets a badge for the customer, and — where they apply — a second for the fee and a third for the child.
The customer:
The fee:
The child:
A fee — and a child — is judged separately from the customer on the same line. Someone who was already on your list can still have their fee recorded in the same run: that combination, Already a customer plus Fee recorded, is exactly what you'll see when you import a list you'd part-entered by hand.
In the preview, the fee and child columns are judged on their own, so a line whose email is Invalid can still show a green Fee: will record or Child: will add beside it. Nothing on an invalid line is ever saved. Fix the email and run the file again — otherwise, after importing, those same lines come back as Fee: error and Child: error.
What Your Plan Includes
Importing customers is available on every plan. Two of the extras depend on yours:
- The fee columns need the plan that includes recording earlier purchases (available from the Standard plan). Without it, the fee columns aren't offered at all — they're not in the template, and there's nothing to match them to on the column screen.
- The child and profile columns need a plan that includes account profiles.
If your file has columns Bizzly recognises but your plan can't use, it says so on the matching screen rather than quietly dropping them: "This file has fee columns, but purchase policies aren't on your plan — customers will import fine, fee history won't be recorded." The equivalent for children reads "…account profiles aren't on your plan — customers will import fine, children won't be recorded."
Your customers still import perfectly well in both cases; you can record fees on individual records later once you're on a plan that includes it.
Running the Same File Again
Re-running an import is safe and is often the right fix.
- Customers who came in the first time report Already a customer and are left untouched.
- Fees already marked report Fee already on record — never a second charge, and never a second record of the same joining fee.
- Children are matched by name, so a child already on the account isn't added twice.
That means you can fix the handful of lines that came back Invalid or Error, and simply run the whole file again rather than picking the failures out into a new one. One exception: a line whose Details reads "More than one account uses this email — needs a human." fails the same way every time. Two separate accounts share that address, and someone has to decide which is the right one — contact support rather than re-running it.
If Something Goes Wrong
- "That file has no usable rows — it needs a header line and at least one customer." — the file has no header line, or nothing under it. Check you exported a CSV, not a spreadsheet saved with another name.
- "Your business's website address could not be determined, so invite emails cannot be sent." — the invite switch is on but Bizzly can't build the setup link. Turn invites off, import, and send invites from the list afterwards.
- The import stops partway with an error — the message tells you how many batches finished, and those rows are shown. Nothing is lost; run the same file again to pick up where it stopped.
- Everything shows Error — usually a passing problem rather than your file. Close the window, click Refresh on the customer list, and try again in a minute.
Tips
- Preview twice, import once. The preview costs nothing and writes nothing, so re-check your column matching against it before you press the import button.
- Import with invites off, then invite in waves. Filter the list by No account yet and send invites when you're ready to answer the questions they'll 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 doesn't, and it removes any doubt about which fee you meant.
- Imported customers carry an Import chip in your customer list, so you can always tell who arrived in a spreadsheet.
Related Articles
- Your Customer List - The list your imported customers land in
- Purchase Eligibility on a Customer's Record - Recording an earlier purchase on one customer at a time
- Account Fees: Joining and Registration Charges - The once-per-account fee the fee columns record
- The Products & Pricing Screen - Where the fee's name and ID come from
- Account Profiles - The children, pets or students the profile columns create