---
title: "How to Migrate a Sauna Business from Appointment or Class Software"
description: The step-by-step operator playbook for switching from Acuity, Momence, Mindbody, Vagaro, or Square to Zettlor without losing active memberships, punch packs, gift cards, or future bookings.
keywords: migrate sauna booking software, switch from momence to zettlor, switch from acuity to zettlor, port stripe memberships, sauna migration checklist, import sauna credits
parent: sauna-membership-software
parentLabel: Sauna Membership Software
siblings: sauna-membership-pricing-models, how-to-start-a-sauna-business, mobile-and-pop-up-sauna-operations
updated: 2026-10-14T00:00:00Z
---

Most commercial sauna and cold plunge operators know within six months when they have outgrown their first booking tool. What keeps them stuck on an appointment or fitness-class calendar is not loyalty to the old software: it is fear of cutover weekend. When you have 180 active monthly members, 400 partially spent punch packs, $12,000 in unredeemed holiday gift cards, and two weeks of pre-booked Saturday sessions, you cannot afford to ask regulars to re-enter credit cards or argue at the front desk over lost visits.

A clean migration treats cutover as an accounting reconciliation first and a calendar switch second.

## Short answer

Migrate your sauna business in five ordered steps before flipping the public booking link: (1) import and deduplicate customer profiles so every regular has one surviving record, (2) link existing Stripe subscriptions so recurring members never check out a second time, (3) load remaining punch-pack visits and gift card balances onto customer records, (4) build repeating room templates and import or recreate near-term reservations, and (5) publish the live calendar switch during a quiet weekday hour and send the guest arrival note.

## What migrates and how it lands in Zettlor

| Legacy record | What you export | How it lands in Zettlor | Guide reference |
|---|---|---|---|
| **Customer profiles** | Customer CSV (name, email, phone, notes) | Imported via `Advanced -> Import` and deduplicated onto one surviving profile per guest | [Keep migrated customer data clean](/guides/migrate/clean-customer-data) |
| **Active recurring memberships** | Existing Stripe subscription IDs + member tier list | Linked directly to the customer profile on `CRM -> Customers` or imported via `Advanced -> Import`; no second checkout | [Port an existing membership without a second checkout](/guides/membership/port-existing-membership) |
| **Remaining punch-pack visits** | Active pack report with remaining visit counts and expiry dates | Granted as spendable session credits on the surviving customer profile | [Add session credits for migration](/guides/membership/comp-credits) |
| **Unredeemed gift cards** | Outstanding gift card balance report | Loaded as customer dollar credits or recreated as redeemable gift card codes under `Store -> Gift Cards` | [Load pre-sold gift card balances](/guides/migrate/gift-card-balances) |
| **Future reservations** | Upcoming appointments/bookings export for the next 14 to 30 days | Imported via appointment import or recreated against generated Zettlor slot templates | [Import or recreate future reservations](/guides/migrate/future-reservations) |

> Operator rule: merge duplicate customer profiles before you attach memberships or credits, so a regular's active membership never ends up on Profile A while their punch pack sits on Profile B.

## Step 1: Import customers and merge split profiles first

In almost every legacy export from Acuity, Momence, Mindbody, or Square, your best regulars appear twice: once under the work email they used for their first drop-in two years ago, and once under the personal email or phone number attached to their monthly membership.

Run your customer import through `Advanced -> Import` with email and phone matching, review staged duplicates on `Advanced -> Migration`, and use [Merge Customer](/guides/desk/merge-profiles) (which includes undo if you pick the wrong survivor) so every regular has a single clean record before balances are attached. Full workflow: [how we keep migrated customer data clean](/guides/migrate/clean-customer-data).

## Step 2: Port active memberships without a second checkout

Never email 200 monthly members asking them to click a checkout link and re-enter their credit card to "reactivate" their membership. In any studio, 15% to 25% of members will procrastinate or churn on the spot, and those who do pay often end up double-billed if the legacy subscription was not cancelled in time.

Because your recurring subscriptions already live in Stripe, staff [port existing memberships](/guides/membership/port-existing-membership) by linking each Stripe subscription directly to the guest's Zettlor customer profile (or importing them in bulk). The member's billing date, card on file, and [included sessions per period](/guides/membership/included-sessions) continue seamlessly.

## Step 3: Load remaining punch packs and gift card balances

Export every partially used 5-pack, 10-pack, and gift card from your legacy system on cutover morning:
- **Visit packs:** Grant the exact remaining visit count as session credits on each customer's profile ([adding session credits](/guides/membership/comp-credits)) with their original [credit expiration date](/guides/membership/credit-expiry).
- **Gift cards and store credit:** Decide per balance whether to grant dollar credit directly onto the recipient's customer profile (fastest at checkout) or recreate the 12-character code under `Store -> Gift Cards`, following [how to load pre-sold gift card balances so they still redeem after cutover](/guides/migrate/gift-card-balances).

## Step 4: Generate room templates and place future reservations

Before you import a single future booking, configure your sauna and cold plunge spaces, set [shared-capacity seats](/guides/booking/shared-capacity), and generate your [repeating schedule templates](/guides/booking/repeat-schedules) for the dates you need to honor. Once the slots exist on `Schedule`, run appointment import via `Advanced -> Import` and walk the next two weeks of the schedule to recreate any custom private buyouts or special events ([import or recreate future reservations](/guides/migrate/future-reservations)).

## Step 5: Flip the live calendar and send the guest arrival note

Pick a quiet Monday or Tuesday morning for cutover:
1. Verify three sample regulars (one monthly member, one punch-pack holder, one upcoming Saturday reservation) on `CRM -> Customers` and `Schedule`.
2. Open `Advanced -> Migration` and [flip the live calendar to Zettlor](/guides/migrate/flip-calendar).
3. Turn off new bookings in Acuity, Momence, or Mindbody the same hour so no slot is sold twice.
4. Copy the studio arrival notes from Go Live and send them from your studio email, as covered in [how we tell guests their account is ready](/guides/migrate/guest-arrival). Returning guests simply enter their email or phone and use a 6-digit one-time code to see their ported membership, remaining visits, and upcoming sessions, as walked through in the [customer getting started guide](/help/getting-started) and [memberships help guide](/help/memberships).

## Common questions

### Do members have to re-enter their credit cards when we switch to Zettlor?

No. Staff link existing Stripe subscriptions directly to customer profiles (or import them in bulk via `Advanced -> Import`), so billing continues on the original payment method and cycle without a second checkout. See [port an existing membership](/guides/membership/port-existing-membership).

### Does Zettlor automatically email all our customers when we run a migration import?

No. Importing customers, credits, or memberships never blasts your guest list automatically. When you are ready to go live, you copy the day-before and booking-open notes from `Advanced -> Migration` and send them on your own schedule. See [guest arrival notes](/guides/migrate/guest-arrival).

### What if two profiles for the same regular get merged by mistake during cutover?

Zettlor's [Merge Customer tool](/guides/desk/merge-profiles) in `CRM -> Customers` preserves bookings and credits on the surviving profile and includes an undo action if staff need to reverse a merge.
