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 fees those customers already paid, so none of them is charged twice.
Whatever your business actually tracks — children, pets, students, vehicles — the import screen's own column names and fee names are fixed: Profile name, Account fee and Per-profile fee read exactly the same on every site, the same way Account Profiles and Purchase Rules explain for the rest of Bizzly. The one place that does speak your own word is a profile row's own outcome badge: a pet-care business sees Pet: will add where this article shows Child: will add, a tutoring business Student: will add, and so on. From here on, "child" is this article's plain-English stand-in for whichever kind of profile your business keeps.
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 has a CSV file picker; tap or hover the ? beside it for what's wanted: "Upload a CSV with a header row, one row per customer. Email is required; name, phone and address are optional." (and, if your business records a fee, a line about the fee column too).
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 account holder's email — that's an account with two profiles (children, pets, students, whatever yours are), one line per profile.
- 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 first profile's own per-profile fee in the per-profile columns. The second line carries only the second profile's per-profile fee — the account fee isn't repeated on every profile's line.
- Another account has one profile and no fee recorded.
- Another customer has no profiles at all, with their account fee filled in.
- The first two account fees you can mark as already paid are shown on those lines, and the first per-profile fee if you have one. Extra fee products beyond that each get their own extra line, 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 an account fee up yet there's nothing real to fill in with: the Account fee product name cells show a plain Joining fee placeholder and the Account fee product ID cells are left empty — that's the template working normally, not a fault. The per-profile fee columns have no such placeholder: if you don't have one configured, those cells are simply left blank.
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, and a note on which columns it belongs in: "per account: use the Account fee columns on any of that customer's rows" or "per profile: use the Per-profile fee columns on that profile's row." 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".
If every column heading in your file is already one Bizzly recognises — which is exactly what happens when you fill in the downloaded template and re-upload it unchanged — there's no dropdown wall at all. Instead you see one green line: "This file matches your template — all 9 columns recognised automatically." Click Adjust column matching if you still want to check or change anything.
Otherwise, each customer field is listed 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, with a ? beside it. It's off by default — the tooltip explains that 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 still says "This is what will happen — nothing has been saved yet.", and above everything else sits a one-line verdict — green Ready to import when every row is clean, or amber Ready to check: 3 rows need attention before import when they aren't — followed by a sentence spelling out how many customers will import, how many rows are already on file, and how many children (or pets, students — whatever your profiles are called) and fees will be added or recorded.
Below that, a row of counts, then a table with one line per row of your file: its Row number, its Email, its Status badges and a Details column explaining what it found on that line, including the date it read for any fee. 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 same kind of one-line verdict appears again — green Import successful, or amber Import finished: 3 rows need attention if some didn't go in — above the counts and the table, now showing what actually happened. Click Close, and your new customers are in the list.
Whenever any row needs attention — on the preview or after importing — an amber notice appears above the table, and the table's toolbar gains a switch: Only rows needing attention (3). Flip it to see just the problem rows, or click Export 3 rows needing attention to download them as a CSV — your own columns plus a new Import problem column naming what to fix on each one. Correct those in your spreadsheet and import that smaller file on its own; rows that already went in simply report as existing customers.
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, a progress bar appears above the buttons, filling in as each batch lands and showing the percentage done — labelled Importing batch 3 of 5 (or Checking batch 3 of 5 while previewing) — alongside a Stop after this batch link. Once every batch is in, the label briefly reads Finishing up…. 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 seven depend on your plan — see What Your Plan Includes below.
Bizzly converts phone numbers for you. On the matching screen, a Phone numbers without a country code are from dropdown says which country a plain number like 07700 900123 belongs to — it defaults to your own business's country, and you can change it for that import. A number already written with a leading + and country code (e.g. +447700900123) is read correctly regardless of that setting.
Two Kinds of Fee
Bizzly can record two different kinds of already-paid fee, each with its own trio of columns and its own place in the file:
- Account fee (the Account fee product name / product ID / paid date columns) — a joining or registration fee, bought once per account. Put it on any one of that customer's lines.
- Per-profile fee (the Per-profile fee product name / product ID / paid date columns) — a taster or kit fee bought separately by each profile — child, pet, student, whatever yours are — once each for life. Put it on that profile's own line — it needs one on the same row to attach to.
A single line can carry both at once — see the template walkthrough above. Most businesses only charge an account fee and never touch the per-profile columns.
Put a per-profile fee's name or ID in the account fee columns (or an account fee in the per-profile columns) and the line comes back wrong columns rather than being silently recorded the wrong way — Details names the fee and says which columns it belongs in instead.
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 a fee's columns and Bizzly notes that the customer (or their profile) has already bought it — so it isn't added to their basket next time.
Fill in either of two columns to name a fee:
- Account fee product name or Per-profile fee product name — the fee's name, spelled as it is in your catalogue (capitals don't matter).
- Account fee product ID or Per-profile 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 a product ID column, Bizzly looks that product up first — the matching 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, or when the ID no longer matches anything in your catalogue (product IDs are re-issued if your site is ever rebuilt from a template) — then Bizzly falls back to the name instead of refusing the row outright. If the ID is still valid and the two genuinely disagree, the ID wins, so clear one of them rather than leaving a contradiction in the file.
Account fee paid date and Per-profile fee paid date both take 2024-09-12 (year-month-day) — or whichever day-first/month-first grammar you've told Bizzly your file uses, see Reading Dates in Your File below. 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 each fee once: an account fee once per account (on the first line, leaving it empty on the rest), a per-profile fee once on that profile's own line. Extra lines aren't harmful — they simply report 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." and its badge reads Account fee: two products share this name (or Profile fee: … for the per-profile column). Use the ID column for those lines, or rename one of the products on the products screen (see The Products & Pricing Screen).
Reading Dates in Your File
Every date column — Account fee paid date, Per-profile fee paid date, and any date-typed question on your profile form, such as date of birth — is read the same way. On the matching screen, a Dates in this file are dropdown lets you say Day first (DD/MM/YYYY) or Month first (MM/DD/YYYY); it defaults to month-first for a US business and day-first everywhere else, and applies to every date column in that import. If you open the column list — via Adjust column matching, or automatically whenever your file needs mapping — the hint beside each date field reminds you: "YYYY-MM-DD or DD/MM/YYYY" (or MM/DD/YYYY for month-first).
2024-09-12 (year-month-day) always works regardless of the setting. Everyday spreadsheet dates like 1 Mar 2024 or 01-Mar-2024 tend to be recognised as well.
A date like 01/03/2024 is genuinely ambiguous — 1 March read day-first, or 3 January read month-first — and Bizzly reads it as whichever grammar the picker is set to, without complaint, since both are real dates. The preview is where you catch a wrong pick: the Details column echoes back what it read — "Fee dated 9 Dec 2024" for a fee, or "Date of birth read as 9 Dec 2024" for a profile field — so check it says what you meant before you click Import. A date the picked grammar genuinely can't parse is rejected instead, with a message asking for YYYY-MM-DD or the picked format.
Bringing Profiles Across
If your business keeps children, pets, students or vehicles on an account, the wizard adds a Profile name column plus one column for every question on your profile form — date of birth, school year, and so on. Any date-typed question is read using the same day-first/month-first picker as the fee columns — see Reading Dates in Your File above.
One line per profile. An account with three profiles — three children, say, or three pets — is three lines that all repeat the account holder's email; Bizzly folds them onto one account. The matching screen labels this One row per [child/pet/student/…], with a ? beside it confirming: "An account with several [children/pets/students/…] repeats the same email on each row. Re-imports never duplicate a [child/pet/student/…]." Those repeat rows read Same customer rather than New — see Reading the Badges below.
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 profile.
The customer:
The fee:
Both fee concepts share the same set of statuses — the badge is just prefixed Account fee for the account-fee columns, or Profile fee for the per-profile columns, so the table below shows the Account fee wording once for both. Those two prefixes are fixed wording, the same for every business — see the note near the top of this article.
The child (or pet, student…):
Unlike the fee badges above, these genuinely change with your business: the prefix is your profile type's own singular label (set on the Profiles sub-tab — see Account Profiles), so a pet-care site sees Pet: will add rather than Child: will add. The table shows the Child wording as the example.
A fee — and a profile — 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 profile columns are judged on their own, so a line whose email is Invalid can still show a green Account 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 Account fee: error and Child: error.
What Your Plan Includes
Importing customers is available on every plan. Two of the extras depend on yours:
- The account fee columns need the plan that includes recording earlier purchases (available from the Standard plan). Without it, no fee columns are offered at all — they're not in the template, and there's nothing to match them to on the column screen.
- The Profile name and profile-form columns need a plan that includes account profiles — whatever kind of profile your business actually keeps.
- The per-profile fee columns need both. A per-profile fee has nowhere to attach without a profile, so those three columns only appear in the template and the mapper when your plan includes account profiles as well as recording earlier purchases.
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 the profile columns reads "This file has profile columns, but profiles aren't on your plan. Customers will import fine, but profiles 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.
- Profiles are matched by name, so one 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 account fee columns record
- Purchase Rules: Who a Purchase Is For - How a product becomes an account fee or a once-per-profile fee in the first place
- The Products & Pricing Screen - Where the fee's name and ID come from
- Account Profiles - The children, pets or students the profile columns create