Skip to content

Switching from Booksy

Export your clients and appointments from Booksy and import the files unchanged. Tuppence recognises Booksy’s columns and previews every row before importing.

  1. Exportclients, appointments
  2. Add servicesand staff
  3. Import clientsdry run, then Import
  4. Import bookingsclashes named first
In BooksyIn TuppenceComes over?
ClientClientYes
AppointmentBookingUpcoming only
ServiceServiceNo, add first
StafferStaff memberNo, add first with hours
Add-onService add-onNo, add to bookings by hand
Packages, gift cards, membershipsSession packages, gift vouchers, membershipsNo, set up again
FileContentsImport as
Client list (CSV)Name, phone, email, birthday, address, notes, tags, marketing agreementClients
Appointments list (Excel report)Booking ID, date and time, client name, service, staffer, money taken, statusUpcoming bookings

Booksy doesn’t export services. Add them first under Bookings › Services (or import a spreadsheet), using Booksy’s service and staff names so appointments match.

  1. Clients: in Booksy Biz on a computer, go to Clients › More options › Export. Import every file Booksy sends (it may send two). If phones or emails are missing, ask Booksy support for a full export.
  2. Appointments: go to Reports › Appointments › Appointments List, set dates from today onwards and select Download. Save the Excel file as CSV (in Excel, Numbers or Google Sheets), leaving the report’s header lines in place (the import recognises them).
  1. Go to Imports › Clients and choose the client list. You see Read as a Booksy client export, the column feeding each field (and why any are left out), and a dry run: new clients, existing ones (same email or phone), and unreadable rows.
  2. Select Import. You can undo it for 24 hours.
  3. Go to Imports › Upcoming bookings and choose the appointments list. Calendar clashes are named before anything is created. Bookings import as confirmed and nobody is messaged: Booksy already told your clients, so their first message from you is the reminder.

With the API, upload the file unchanged to POST /v1/imports; source and format show how it was read:

import os
from tuppence import Tuppence
tuppence = Tuppence(os.environ["TUPPENCE_SECRET_KEY"])
export = """First Name,Last Name,Cell Phone,Email,Birthday,Gender,Street,City,Zip Code,Client Notes,Tags,Marketing Agreement,Date Added
Nadia,Fenwick,+44 7700 900401,nadia.fenwick@example.com,14/02/1990,Female,5 Chapel Street,Leeds,LS6 2AA,Prefers the quiet table,Regular,Yes,03/05/2024
Owen,Castell,+44 7700 900402,owen.castell@example.com,,Male,,,,,,No,17/11/2024
"""
upload = tuppence.request("POST", "/v1/imports", body={"kind": "clients", "file": export})
print(upload["source"], "·", upload["format"]["name"]) # booksy · Booksy client export
print([r["column"] for r in upload["refused"]]) # ['Gender', 'Marketing Agreement', 'Date Added']
print(upload["dry_run"]["created"], "clients to import") # 2 clients to import
Booksy’s columnIn Tuppence
First Name, Last NameName
Cell PhonePhone, in E.164 (+44…, +1…)
EmailEmail (matches existing clients before phone)
Street, City, Zip CodeAddress
BirthdayDate of birth
Client NotesNotes
TagsTags
Date and time, ClientBooking, for the client matched by name
Service, StafferService and staff member, matched by name
StatusCancelled and no-show appointments skipped
  • Marketing agreement: consent doesn’t transfer. Ask clients again before sending anything but booking messages.
  • Cards and money: cards, Service value, Add-ons value, Revenue net, Discount, Tax, Tip amount and Total revenue stay with Booksy. Bookings use the service’s price here.
  • Add-ons: add them to bookings by hand.
  • Packages, gift cards, memberships: set them up again.
  • Gender, date added, Main category, Service length (bookings use the service’s length here) and Booksy’s booking IDs.
  • Past appointments.

A file is recognised when most of Booksy’s columns are present. Missing or renamed columns are matched by header or content (a column of email addresses becomes the email) and flagged. Fix any wrong match, then select Check with these columns. In the API, format.missing lists each with its field and the column matched instead. An unrecognisable file is read as a plain spreadsheet; send source: "booksy" to force the Booksy format.

Docs assistant

Open as a page
Loading the assistant…