Importing your existing customer list (CSV)

Bring your existing customer list across in one paste — handles dedupe, validation, and a preview before save.

Last updated 19 June 2026 · Customers & messages

If you're moving from another booking tool, your existing customer list is the most valuable thing to bring across. StudioOps has a paste-CSV import flow that takes 5-10 minutes for most studios, regardless of how many customers you have.

The import handles duplicates, gives you a preview before anything is saved, and rejects bad rows with a clear reason rather than failing the whole batch.


1. Getting your customer list out of your old tool

The import expects a CSV (comma-separated values) with one row per customer.

Setmore

In Setmore: Settings → Customers → Export customers. You'll get a CSV with name, email, phone, address, notes.

Booksy

In Booksy: Clients → Filter → Export to CSV.

Square Appointments

In Square Dashboard: Customers → Directory → ⋯ → Export customers.

A spreadsheet

If you already have a Google Sheet or Excel file: File → Download → Comma-separated values (.csv). Make sure column 1 is the customer name (or has a header called name).

Hand-typed list

Open Notepad / TextEdit, write one customer per line as Name, Email, Phone. Save as customers.csv.


2. The columns StudioOps expects

The minimum is one column: name. Without a name we can't tell which customer is which.

The columns StudioOps recognises (case-insensitive header names):

Column Required? Notes
name Yes The customer's name
email No, but recommended Used for booking emails, customer-space links
phone No UK or international format
instagram_handle No Without the @
notes No Free text, up to 2000 chars
do_not_contact No true / false, default false. Set true to flag the customer as no-contact (StudioOps then refuses to send them automated emails)
marketing_opt_in No true / false, default false. Set true if you have explicit consent to push them to Mailchimp
allergy_note No Up to 2000 chars
treatment_preferences No Up to 2000 chars
patch_test_at No YYYY-MM-DD format only — 2026-04-15, NOT 15/04/2026

Any columns the file has that StudioOps doesn't recognise are silently ignored. So an export from Setmore that includes address fields, gender, date of birth, etc. won't break the import — those columns just aren't pulled in.


3. Importing

In StudioOps, go to Customers → Import.

You'll see a textarea with a placeholder example. Open your CSV in any text editor (Notepad, TextEdit, VS Code), select all, copy, and paste into the textarea.

Click Preview.

StudioOps parses the CSV and shows you a table of every row it found, with one of three statuses per row:

  • ✓ Will create — new customer, all data passed validation.
  • ⟳ Will skip — already on file — the email matches an existing customer (case-insensitive). To avoid duplicates, StudioOps doesn't import these.
  • ✗ Won't import — validation failed on this row. The reason is shown next to the row (e.g. "Email format invalid", "Patch test date isn't YYYY-MM-DD").

Read through the preview. Fix anything that's "Won't import" by editing your CSV outside StudioOps and pasting again, or accept the skip.

When you're happy, click Add N customers.

The "Will create" rows get inserted as customer records. The "Will skip" and "Won't import" rows are not touched.

You're done. The new customers appear in your customers list immediately and can be booked against, invoiced, and added to quotes from now on.


4. Handling duplicates

StudioOps uses email address as the unique key. If a customer in your CSV has the same email as someone already in StudioOps, the row is skipped — the existing record stays untouched.

This is deliberate: re-imports are safe. If you run the same import twice (or import a fresh export that overlaps with a previous one), you won't get duplicate records.

A consequence: if you want to UPDATE an existing customer (e.g. fix their phone number from a CSV), the import won't do that. Edit the customer directly in the dashboard instead.

What if two rows in your CSV have the same email as each other? Only the first one is imported; the second is treated as a duplicate.

What if a row has no email? It's imported as a new customer with no email. Email-less customers are valid in StudioOps (some only have a phone) but can't be booked online — only added by you manually or imported. Two email-less rows with the same name don't dedup, so be careful with hand-typed lists.


5. Common issues

"Won't import: email format invalid." The email doesn't have an @ or domain. Check for typos.

"Won't import: patch_test_at isn't YYYY-MM-DD." UK dates like 15/04/2026 aren't accepted because they're ambiguous (US software reads it as 4 April). Reformat to 2026-04-15.

"Won't import: name is required." A row has no name in the name column. Either delete the row or fill in a placeholder like "Unknown" (you can edit later).

Some columns aren't pulled in. Check the column header in your CSV matches one of the recognised names (lowercase or any-case is fine — Name, name, NAME all work). Unrecognised columns are silently dropped.

Import says "0 rows found". The CSV's column delimiter probably isn't a comma. Some exports use semicolons or tabs. Open the file, find the actual delimiter, and re-save as CSV with comma delimiters. Excel can do this on Save: Save As → CSV UTF-8 (Comma delimited).

Special characters look broken in the preview. The CSV is probably saved in the wrong encoding. Re-save as UTF-8 (Notepad: Save As → Encoding: UTF-8; Excel: Save As → CSV UTF-8).


6. After the import

A few quick wins to make the new customers immediately useful:

  • Add labels to segment them (from-setmore, regulars, new-this-year) so you can filter the list later.
  • Tag any with marketing consent by ticking the Subscribe to newsletter box on their record. If Mailchimp is connected, they'll auto-sync.
  • Send the active ones a welcome email with your StudioOps booking link so they know where to book next time.

7. Exporting back out

Same flow in reverse: Customers → Export.

You get a CSV with the same columns the import recognises (so a re-import of your own export round-trips cleanly). Useful if you ever want to switch back, or hand a list to a separate marketing tool.

The export normalises dates to YYYY-MM-DD and prefixes any text starting with =, +, -, @ with a single quote — this is a defence against CSV-formula-injection attacks (a hostile customer note like =cmd|'/c calc'!A0 would otherwise run as a formula in some spreadsheet apps).


See also

  • Customer records — notes, labels, treatment preferences — what to do with the customers once they're in.
  • Connecting Mailchimp to StudioOps — push opted-in customers to your newsletter audience automatically.

Questions or stuck? Help centre at studioops.uk/help, or email help@studioops.uk.

Still need help?

Email help@studioops.uk and we’ll reply as soon as we can. For something specific to your studio, include your studio name + slug so we can look the right thing up.