Switching from another system
Move your bookings, vouchers, bundles, customers and memberships into Session from Acuity, Periode or any other tool. Importing brings the data across; this article also covers what your customers experience and the one link you send them.
Your customers
Importing creates an account for every customer, but it's a placeholder until they set up a login. They claim it with one link you send them (by email, text, poster or QR code): bookasession.org/your-link/welcome
- They set up a login with their existing email - the same address you had on file. It's "set up your account", not a fresh sign-up: their account already exists, so everything is linked automatically the moment they claim it.
- They land on their account page showing what came across - upcoming bookings, session credits, gift balance and membership - so they can see nothing was lost.
- Credits and vouchers just work - carried-over credits apply automatically at booking, and voucher codes keep working.
The data is safe and intact whether or not a customer claims their account. The link only lets them manage it online.
Members
Members come across inactive - they keep no live subscription until they choose to re-subscribe, so nobody is charged twice during the switch. When a member reactivates, Session makes the three things that usually cause worry explicit:
- Their credits carried over and apply automatically when they book.
- They pay nothing today - their first payment is set to their old renewal date, and the date is shown to them.
- Their old subscription is handled. The cleanest approach - and what most venues do - is to cancel members' subscriptions on your old platform yourself at migration; Session then tells them there's nothing more to do. If you'd rather members cancel their own, Session asks them to do it before that first-payment date.
Let us know which applies to your venue and we'll set the wording to match. Members see this on their account, on the booking page, when they re-subscribe, and in their confirmation email - so there's nothing extra you need to send. Member lists move as part of your migration: get in touch and we'll handle them, since subscriptions need to move carefully.
What you can import
- Bookings and customers - past and future appointments; attendees become customer accounts.
- Gift vouchers - existing codes with their remaining balance or session count.
- Bundles - session packs with their remaining sessions.
- Customers - a contacts or mailing list with marketing consent, when you just want the people.
Before you start
Create the things your import maps onto first:
- Sessions - required, so bookings can be linked to the right session.
- Membership tiers - required if members are coming across, so each member re-subscribes to the right plan and their reactivation link points at it.
- Bundle products - optional, only if you want imported session packs linked to a specific product; skip it and they arrive as unrestricted credits.
- Vouchers and contacts need nothing pre-created - vouchers import as standalone codes, customers as people.
Export from your old system as CSV, TSV or XLSX with column headers in the first row. On Acuity, see Exporting from Acuity below for exactly where each export lives and what to do about the ones Acuity won't export. (Periode: Reporting > CSV. Stuck? Send us a message.)
- Include an email on every row - that's how Session matches a row to a customer and how they later claim their account.
- Files up to 25 MB / 50,000 rows. Split larger exports into multiple files.
Exporting from Acuity
Acuity keeps your data across several screens, so you export in a few passes. Two of these come out of Acuity cleanly as a CSV; the other two - gift certificates and packages - don't, and you fill those by hand (a screenshot is fine). Here's each one, where to find it, and which Session import type it feeds.
Appointments (bookings and customers)
The main export - past and future appointments. It creates a customer account for every attendee, so you usually don't need a separate client export as well.
- 1In Acuity, open Reports (or your appointments list) and choose Export to CSV or Excel.
- 2Set the date range wide enough to cover the history you want plus everything upcoming.
- 3Check the export includes Email, Type, Start time, Price and Amount paid. Keep the Appointment ID column too - it stops a re-upload creating duplicate bookings.
- 4Import it as the Bookings type.
Acuity's own column names (Email, Type, Start Time, Appointment ID, Price, Amount Paid, Phone, Notes) are recognised automatically on the mapping step, so there's usually nothing to fix.
Clients (a mailing list on its own)
Only needed when you want contacts who never booked, or the marketing list by itself - people who already have appointments come across with the appointments export above.
- 1In Acuity, open Clients and use Import / Export → Export to download the client list as a CSV.
- 2Import it as the Customers type.
Acuity's client export has no marketing-consent column, and Session never assumes consent. On the import's mapping step you either add your own consent column to the file first, or map every row to Not asked and re-ask people the next time they book. If your real consent record lives in another tool (Mailchimp, Squarespace), export the list from there instead - it'll carry the opt-in status across honestly.
Gift certificates and packages (fill these by hand)
Acuity can't export outstanding gift certificate balances or package remaining sessions as a CSV. You have two ways to bring them across:
- Send them to us. Screenshot or copy the list from Acuity's Gift Certificates and Packages screens and send it over - we'll turn it into an import file for you.
- Or build a small spreadsheet yourself, one row per certificate or package, with the code, the customer's email, and the remaining value (gift certificates) or remaining sessions (packages). Import it as Gift vouchers or Bundles.
Map the Code column when you import so the original Acuity codes carry across unchanged - your customers' existing codes then keep working.
Members and subscriptions
Subscriptions have to move carefully so nobody is charged twice during the switch, so we bring the member list across for you - send us a message. See Members above for what your members experience while switching.
Running an import
- Upload your file - Session detects the type from the headers.
- Confirm the type (Bookings, Vouchers, Bundles or Customers) and override if the guess is wrong.
- Map your columns - common names match automatically; fix any that don't. Pick the date format your file uses, and a fallback timezone if it has none.
- Review what was found - link each unique session time to a Session session (and optionally each bundle to a product).
- Confirm and run - the summary shows what will be created, matched and skipped. For bookings you can choose to email customers from a chosen date forward.
- Review results - what imported, what was skipped, any per-row errors, and the welcome link to send customers.
Column guide
Email is required on every type. Beyond that:
- Bookings - need Type, Start time, Appointment price and Amount paid. Optional: names, End time, Timezone, External ID (strongly recommended - stops re-uploads creating duplicates), Voucher code, Notes. Rows with the same email, type and start time merge into one booking with the right number of spaces; variant names like "Sauna (Concession)" normalise to the base type.
- Gift vouchers - need Products (the session count is read from it, e.g. "Gift Voucher - 5 Sessions"). Optional: Code (generated if absent), Order date (sets a 12-month expiry), Total, Status, Notes.
- Bundles - either one row per order (Email + Products) or one row per package (Email + Package name + Sessions total). Optional: Code (generated if absent - map it to keep your existing pack codes), Sessions remaining, Purchase/Expiry date, Price, External ID, Notes.
- Customers - just Email, plus optional names and a Marketing consent column. You map each consent value to opted in / out / not asked / undeliverable, so consent is carried across honestly - never assumed.
Prices in any format (£15.00, 15,00 €, 1,234.56) are understood.
Re-uploading is safe - Imports dedupe, so re-running a file only adds what's new. Bookings skip an existing booking on the same slot (map External ID to also dedupe by old IDs); vouchers skip duplicate codes; bundles skip a matching External ID; customers match by email. Skipped rows show in the results Skipped count.
Every voucher and bundle code must be unique. If your file has the same code on two different rows (a common quirk of older exports), the first keeps the code and any others get a fresh auto-generated one - so no row is lost, but only one will carry the shared code.
Troubleshooting
-
"No recognisable header row". The first row must be column names, not data.
-
"Row N: no email address". The row had no email and no External ID, so it couldn't be matched.
-
"Could not parse start time". Re-check the date format dropdown on the mapping step.
-
Continue button disabled. A required field is unmapped; the page lists which.
-
Ambiguous dates. If 01/02/2026 could be either order, you'll be asked to choose.
-
A customer can't see their bookings. They need to claim their account with the same email that was in your export, via the welcome link. Different email? Send us a message and we'll merge the accounts.
-
My Acuity gift certificates or packages didn't come across. Acuity can't export their balances as a CSV, so they're never in the appointments export. Send us a screenshot of Acuity's Gift Certificates and Packages screens, or list each code, email and remaining value or sessions in a simple sheet and import it as Gift vouchers or Bundles - see Exporting from Acuity.
If a few rows fail, the import still runs - the results screen lists each failed row to fix and re-upload.