Switching from Vagaro
Export your customers from Vagaro, get upcoming appointments from Vagaro support or a report, and import both. Tuppence recognises Vagaro’s columns and previews every row before importing.
- Exportcustomers, appointments
- Add servicesand staff
- Import clientsdry run, then Import
- Import bookingsclashes named first
Vagaro’s words, and ours
Section titled “Vagaro’s words, and ours”| In Vagaro | In Tuppence | Comes over? |
|---|---|---|
| Customer | Client | Yes |
| Appointment | Booking | Upcoming only |
| Service | Service | No, add first |
| Service provider | Staff member | No, add first with hours |
| Packages, memberships, gift cards | Session packages, memberships, gift vouchers | No, set up again |
What Vagaro exports
Section titled “What Vagaro exports”| File | Contents | Import as |
|---|---|---|
| Customer list (Excel report) | Name, email, cell and home phone, address, birthday, notes, visits, spend, marketing choices | Clients |
| Upcoming appointments (CSV from Vagaro support, or an Excel report) | Date, start time, customer, service, service provider, status | Upcoming bookings |
Add services first under Bookings › Services (or import a spreadsheet), using Vagaro’s service and staff names so appointments match.
Export from Vagaro
Section titled “Export from Vagaro”- Customers: signed in as the business owner, go to Reports › Customers › Export › Excel. Save the file as CSV (in Excel, Numbers or Google Sheets).
- Appointments: Vagaro has no self-serve export of upcoming appointments. Ask Vagaro support for a CSV of them all, or run Reports › Appointments › Appointments Summary from today, switch to the grid view, download as Excel and save as CSV.
Import into Tuppence
Section titled “Import into Tuppence”- Go to Imports › Clients and choose the customer list. You see Read as a Vagaro customer 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.
- Select Import. You can undo it for 24 hours.
- Go to Imports › Upcoming bookings and choose the appointments. Calendar clashes are named before anything is created. Bookings import as confirmed and nobody is messaged: Vagaro 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 osfrom tuppence import Tuppence
tuppence = Tuppence(os.environ["TUPPENCE_SECRET_KEY"])
export = """First Name,Last Name,Email,Cell Phone,Home Phone,Address,City,State,Zip,Birthday,Customer Since,Last Visit,Total Visits,Total Spent,Email Marketing,Text Marketing,NotesGreta,Holm,greta.holm@example.com,+44 7700 900501,,,,,,4/18/1991,2/3/2023,9/14/2026,14,£640.00,Yes,No,Scissor finish onlyBarnaby,Cole,barnaby.cole@example.com,,+44 7700 900502,,,,,,6/21/2024,8/30/2026,5,£210.00,No,No,"""upload = tuppence.request("POST", "/v1/imports", body={"kind": "clients", "file": export})print(upload["source"], "·", upload["format"]["name"]) # vagaro · Vagaro customer exportprint(upload["dry_run"]["created"], "clients to import") # 2 clients to importimport osfrom tuppence import Tuppence
tuppence = Tuppence(os.environ["TUPPENCE_SECRET_KEY"])
export = """First Name,Last Name,Email,Cell Phone,Home Phone,Address,City,State,Zip,Birthday,Customer Since,Last Visit,Total Visits,Total Spent,Email Marketing,Text Marketing,NotesGreta,Holm,greta.holm@example.com,+44 7700 900501,,,,,,4/18/1991,2/3/2023,9/14/2026,14,$640.00,Yes,No,Scissor finish onlyBarnaby,Cole,barnaby.cole@example.com,,+44 7700 900502,,,,,,6/21/2024,8/30/2026,5,$210.00,No,No,"""upload = tuppence.request("POST", "/v1/imports", body={"kind": "clients", "file": export})print(upload["source"], "·", upload["format"]["name"]) # vagaro · Vagaro customer exportprint(upload["dry_run"]["created"], "clients to import") # 2 clients to importimport osfrom tuppence import Tuppence
tuppence = Tuppence(os.environ["TUPPENCE_SECRET_KEY"])
export = """First Name,Last Name,Email,Cell Phone,Home Phone,Address,City,State,Zip,Birthday,Customer Since,Last Visit,Total Visits,Total Spent,Email Marketing,Text Marketing,NotesGreta,Holm,greta.holm@example.com,+44 7700 900501,,,,,,4/18/1991,2/3/2023,9/14/2026,14,€640.00,Yes,No,Scissor finish onlyBarnaby,Cole,barnaby.cole@example.com,,+44 7700 900502,,,,,,6/21/2024,8/30/2026,5,€210.00,No,No,"""upload = tuppence.request("POST", "/v1/imports", body={"kind": "clients", "file": export})print(upload["source"], "·", upload["format"]["name"]) # vagaro · Vagaro customer exportprint(upload["dry_run"]["created"], "clients to import") # 2 clients to importWhat comes over
Section titled “What comes over”| Vagaro’s column | In Tuppence |
|---|---|
| First Name, Last Name | Name |
| Email (matches existing clients before phone) | |
| Cell Phone (else Home Phone) | Phone, in E.164 (+44…, +1…) |
| Address, City, State, Zip | Address |
| Birthday | Date of birth |
| Notes | Notes |
| Appointment Date, Start Time, Customer, Email, Cell Phone | Booking, and who it’s for |
| Service, Service Provider | Service and staff member, matched by name |
| Status | Cancelled and no-show appointments skipped |
Dates are read month-first or day-first, as the file’s dates show.
What doesn’t come over
Section titled “What doesn’t come over”- Email and text marketing choices: consent doesn’t transfer. Ask clients again before sending anything but booking messages.
- Cards, payments, prices: cards and payments stay with Vagaro. Bookings use the service’s price here.
- Visit and spend history (Customer Since, Last Visit, Total Visits, Total Spent).
- Packages, memberships, gift cards: set them up again.
- Online booking flag and the appointment’s end time (bookings use the service’s length here).
- Past appointments.
If Vagaro changes its export
Section titled “If Vagaro changes its export”A file is recognised when most of Vagaro’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: "vagaro" to force the Vagaro format.