How to migrate from Booksy to ChairHold: the solo beauty operator's guide
Most solo beauty pros who leave Booksy do it twice — once in their head, where they've run the numbers and decided the math doesn't work anymore, and once in reality, where they finally cut over. The gap between those two moments is usually 3–6 months of inertia. This guide is designed to close that gap: a step-by-step migration from Booksy to a ChairHold deposit-first booking link, covering the break-even decision, client list export, cutover timeline, the three client communication templates that make the transition frictionless, and the 60-day post-migration review.
First: is the migration worth it?
Before running any migration, you need to know whether the move is financially justified — and specifically, what you're actually giving up when you leave Booksy.
Booksy charges $29–$39/mo depending on plan. At the base tier, that's $348/yr. ChairHold is $9/mo — $108/yr for the Solo plan. The annual subscription savings of switching is $240–$360. That's the floor benefit: you capture it regardless of what happens to your booking volume.
The harder question is marketplace dependency. Booksy isn't just a booking system — it's a marketplace, and some fraction of your current client base may have originally discovered you through Booksy's directory rather than through your Instagram, Google Business Profile, or referral network. Those marketplace-sourced clients represent a real channel that disappears when you cancel your Booksy account.
Here's the framework for the decision:
- If ≥70% of your bookings come from clients you acquired through IG, GBP, or referral who simply rebook through Booksy's interface — not through Booksy marketplace discovery — the migration is straightforward. Booksy's marketplace is providing you minimal acquisition value; you're paying $348/yr for a booking system that can be replaced at $108/yr.
- If 20–35% of your bookings come from Booksy-discovery clients (clients who found your profile on the Booksy marketplace before ever seeing your IG), you have a real marketplace dependency. The migration is still worth running, but it requires a longer transition window and deliberate re-routing of that traffic to your direct channels (IG bio link, GBP booking button, referral program).
- If you cannot identify where your clients originally came from — because you never asked — build a 30-day "how did you find me?" habit starting now, before you commit to migrating. Migrating blind risks losing clients you didn't know you were depending on.
The simplest proxy: pull your Booksy client list and check how many of your regulars (clients who've booked 3+ times) you recognize from Instagram engagement, referrals, or direct outreach vs. clients who appeared without any prior relationship. If the second group is fewer than 10–15% of your regulars, your marketplace dependency is low.
The annual cost comparison isn't the whole picture
The 2026 booking platform economics analysis puts Booksy's true annual cost at roughly $1,840 for a solo operator at $50k revenue — once you factor in the 20% marketplace commission on Booksy-sourced bookings and the processing markup on Booksy Pay (required, since you can't connect your own Stripe to Booksy). ChairHold's true annual cost at the same revenue level is $398 — $108 subscription plus standard 2.9% + 30¢ Stripe processing on a typical deposit volume.
That $1,442 annual gap is meaningful. But what matters for the migration decision isn't the gap in isolation — it's the gap minus the value of any Booksy marketplace traffic you'd be giving up. If Booksy-sourced clients represent 10 bookings/yr at $80/booking = $800 in revenue, you're trading $800 in marketplace-acquired revenue for $1,442 in savings. The migration is still clearly positive. If Booksy-sourced clients represent 50 bookings/yr, the math is closer and you need a plan to replace that discovery channel before you cut over.
For the full Booksy vs ChairHold comparison, including payment stack structure and client data portability, read that post first if you haven't. This guide assumes you've already decided to migrate and focuses on execution.
Step 1: Export your client list from Booksy
Before you announce anything or change any link, export your client data. This is the most time-sensitive step — you want this data in your hands before Booksy is in the loop on your plans.
In the Booksy business app, go to Clients → Export. Booksy exports a CSV with the following fields: first name, last name, phone number, email address, and last appointment date. This is the client contact data you own and take with you.
What does NOT transfer from Booksy:
- Payment history. Any deposits or payments collected through Booksy Pay live in Booksy's payment system. There is no Stripe customer record for these transactions — your Booksy clients have never paid you through your own Stripe account.
- Booking history. The appointment log stays in Booksy's database. You can see it in the app, but it doesn't export to a format that ChairHold needs (and ChairHold doesn't require it — it starts fresh from your first ChairHold booking).
- Reviews and ratings. Your Booksy rating is tied to your Booksy marketplace profile. It doesn't follow you. Your Google Business Profile reviews are separate and stay with you.
Save the CSV with the date in the filename (e.g., booksy-clients-2026-06-03.csv)
and keep it. You'll use it for the communication sequence in Step 4.
Step 2: Set up ChairHold before you announce anything
Set up your ChairHold account and get your booking link live before you communicate any changes to clients or update any of your public links. The sequence matters: if you announce the switch before the new link is ready, you create a window where interested clients have nowhere to book.
The full ChairHold setup guide covers this end-to-end. For the migration context, the key configuration decisions are:
Deposit percent for former Booksy clients
Your current Booksy clients have never paid a deposit through your own Stripe checkout. When they encounter a ChairHold booking page for the first time, they'll hit a Stripe Checkout form requiring a deposit — potentially for the first time with you.
For established clients migrating from Booksy, start at a lower deposit percent than you would for cold-discovery traffic from Instagram:
- Former Booksy regulars (3+ bookings): 20–25% deposit. These clients have an established relationship with you and have already demonstrated rebooking behavior. The deposit is introducing a new requirement, not validating a stranger.
- Occasional Booksy clients (1–2 bookings): 25–30%. Moderate familiarity, but not the established trust of a regular.
- Cold-discovery clients from IG or GBP (new to you): 25–35%. Same guidance as any new ChairHold client — this group expected to pay a deposit from the moment they clicked your bio link, so higher is sustainable.
You can adjust deposit_percent upward after 60–90 days once
the deposit is normalized for your former-Booksy client base. The goal
in the transition period is minimizing friction for clients who are
already yours and just need to update their booking flow.
On how much deposit to charge — the full analysis covers why the non-linear deterrence effect starts above 35% and why going above 40% hurts conversion without improving no-show rates. Stay below 35% for former clients until the relationship is re-established on the new platform.
Policy text in Stripe Checkout
ChairHold lets you set a policy_text field that appears
inside the Stripe Checkout screen. This is your refund and cancellation
policy, visible at the moment of payment — it's the clause that holds
up in Stripe dispute cases. For the migration period, include language
acknowledging the platform switch:
"Deposit is non-refundable if cancelled within 48 hours of appointment. Full refund if artist cancels. New booking system — same policy you know, now straight to Stripe."
The last sentence ("same policy you know, now straight to Stripe") reduces confusion for established clients who wonder why they're suddenly on a different checkout screen.
Time-to-live hours
Set time_to_live_hours to 24 for most services (the standard
ChairHold default). During the migration period, a shorter TTL is
actually beneficial: it means any client who starts the booking process
but doesn't complete it gets an automatic slot release, keeping your
calendar accurate as you transition away from Booksy. Don't extend TTL
during the transition window.
Step 3: Choose your cutover date
The cutover date is the date after which no new bookings are accepted through Booksy. All new bookings go through ChairHold. Existing Booksy appointments run to completion.
Three rules for choosing the right cutover date:
- Never cut over while deposit-holding clients have future appointments in Booksy. Check your Booksy appointment calendar and find the last confirmed appointment date. Your Booksy account needs to remain active and functional until that appointment completes. Set the cutover date at least one week after the last existing appointment (not on the day of — give yourself margin for rescheduling).
- Minimum 30-day announcement window. Clients need 30 days of notice before the link they've been using stops accepting new bookings. If your calendar books 6–8 weeks in advance, clients should receive the first notice while their current appointment is still in the future — not after they've already completed it and are trying to rebook.
- Align with a natural booking lull. If you have seasonal slowdowns (January after the holiday rush, late summer before fall season), use one of those windows for the cutover. Fewer active clients in the booking pipeline means fewer people hitting the old link during the transition.
A practical timeline for most solo beauty pros: announce on Day 0, cutover on Day 30–45, close the Booksy account on Day 60–75 (after the last scheduled appointment completes and a 2-week buffer for any rescheduled holdovers).
Step 4: The three client communication templates
Three messages, sent in sequence. These are SMS/DM templates — keep them short, specific, and action-oriented. Do not send mass emails with vague "we're making changes" language.
Message 1 — 30-day announcement (send to all active clients)
Send to every client who has booked in the last 12 months. The goal is awareness, not panic — keep the tone matter-of-fact.
Hey [first name] — quick heads up: I'm moving my bookings to a new link starting [cutover date]. Your appointment on [date] is confirmed and nothing changes there. For any future bookings after [cutover date], use this link: [ChairHold booking link]. Same deposit policy, same prices — just a new system that goes straight to my Stripe. — [Your name]
Notes: Include the client's existing appointment date to make it personal. Name the new link explicitly. Mention "straight to my Stripe" — this normalizes the Stripe Checkout experience for clients who've only ever paid through Booksy Pay.
Message 2 — 14-day reminder (send to clients with appointments in the next 6 weeks)
Clients with upcoming appointments are the ones most likely to try rebooking through the old link after their current appointment. Catch them before that happens.
Hey [first name] — reminder: after [cutover date] my booking link changes. Your [service] on [date] is still confirmed. For the next one, use: [ChairHold booking link]. Saves it in your favorites now so it's there when you need it. ✓
Notes: The "✓" ending signals completion, not a question. You're not asking them to do anything complicated — just update a link. Keep it brief. Clients who've booked 3+ times will follow instructions without needing a paragraph of explanation.
Message 3 — 7-day final notice (send to all active clients)
This message goes to everyone. It's the last reminder before the cutover.
Hey [first name] — one week left on the old booking link. After [cutover date], the only way to book me is: [ChairHold booking link]. Deposit through Stripe, same as always — just a new URL. Save it now. — [Your name]
Notes: "Same as always" is intentionally loose — for former Booksy
clients who paid deposits, it's close enough. For clients who never paid
a deposit, this is the moment they'll realize something is changing.
Don't soften the deposit requirement in this message — the
policy_text in Stripe Checkout will handle the moment of
truth when they hit the booking page.
Sending mechanics
Send these via SMS if you have phone numbers (which your Booksy export should provide). If a client's phone number is missing, send via Instagram DM — check your DM history for recent conversations. Do not use mass-email tools for this; personal SMS converts 3–5× better than a bulk email announcement for individual service providers.
If your client list has 50+ people, batch the sends over 2–3 days rather than sending all at once. A single day with 50+ inbound booking attempts and questions is manageable; a single day with 50+ confused clients trying to sort out a link change is chaotic.
Step 5: The hybrid-operation window
From the day you announce (Day 0) through the cutover date (Day 30–45), you run two booking systems simultaneously:
- Booksy: processes existing appointments; accepts no new bookings (you close off new slot availability in Booksy settings).
- ChairHold: receives all new bookings from Day 1 of the announcement.
The critical action on Day 0 is updating your IG bio link and your Google Business Profile "Website" field to your ChairHold booking URL. Do this first, before you send Message 1. Here's why: the moment you announce the switch, some clients will go directly to your IG bio or Google listing to find the new link. If those still show Booksy on announcement day, you've sent a confusing signal.
The IG bio update is one line in your bio text. The GBP update takes 90 seconds — sign in to Google Business Profile, go to Edit Profile → Contact → Website, replace the Booksy URL with your ChairHold link. The GBP Booking button (the "Book" button that appears directly in your Maps listing) should also point to your ChairHold link — update it under Bookings → Manage links in the GBP dashboard. For the full GBP optimization guide, see GBP for solo beauty bookings.
During the hybrid window, check both calendars daily. Mark Booksy as "closed for new bookings" so that its calendar stops showing available slots to new visitors. In Booksy settings, this is done by removing availability from future dates rather than canceling the account — you need the account active to honor existing appointments.
Step 6: Closing the Booksy account
Close the account after the last scheduled appointment completes and a 2-week holdover buffer has passed. The holdover buffer exists because some appointments get rescheduled at the last minute — you don't want to close the account the day after the "last" appointment and then have a client call you about their rescheduled slot.
Before closing:
- Download a final copy of your client list from Booksy (the export may show any appointments you may have forgotten).
- Take a screenshot of your Booksy rating and review count — you won't be able to access this after account closure.
- Note any clients who never responded to your three communication messages and make a manual outreach list for personal follow-up.
Cancel the subscription through Booksy's billing settings (not just by uninstalling the app). Canceling mid-cycle typically doesn't trigger a prorated refund — time the cancellation for just before your next billing date to avoid paying for an unused month.
Deposit configuration for a migration cohort
The first 30–60 days of ChairHold bookings from former Booksy clients are a calibration period. These clients are encountering your deposit requirement in a new form — Stripe Checkout, a formal policy text, a link they've never used before. The deposit itself may not be new (if you took deposits through Booksy Pay), but the format is.
Two configuration adjustments for the migration window:
Lower the starting deposit percent
Start at 20–25% rather than 30–35%. The goal is to preserve the no-show reduction effect of the deposit (which is present at any deposit level, even 10%) while reducing the financial friction of the platform transition for established clients. The difference in no-show deterrence between a 20% and 30% deposit is smaller than the difference in conversion friction — established clients who balk at 30% deposit on a new platform they've never used are a churn risk, not a commitment signal.
After 60–90 days, once your migration cohort has completed their first
ChairHold booking, you can raise deposit_percent to your
standard rate. By that point, the platform is familiar and the deposit
expectation is set.
Use explicit policy text
Include language in policy_text that names the refund
window specifically: "Non-refundable if cancelled within 48 hours of
appointment. Full refund if artist cancels." Don't add conditions or
exceptions — the cleaner the policy text, the less likely clients are
to dispute it in Stripe. For the full analysis of how policy text
functions in Stripe disputes, see
stripe chargeback response for solo beauty.
Step 7: The 60-day post-migration review
Sixty days after your cutover date, run a structured review. This is not optional — it's the mechanism that tells you whether the migration succeeded or needs course correction.
Metrics to check
Booking volume. Compare the 60-day post-cutover period to the 60-day pre-announcement period. A successful migration lands at 85–100% of pre-migration booking volume within 60 days. If you're at 70–85%, you lost some clients to the link change — see the recovery steps below. Below 70% indicates a significant client base disruption that requires a direct outreach campaign.
No-show rate. Collect from your ChairHold payment history: how many bookings with deposits held resulted in no-shows (client no-showed after the refund window closed, deposit retained). Compare to your historical Booksy no-show rate. For most former Booksy operators, ChairHold's deposit mechanism produces a materially lower no-show rate in the first 60 days because the mandatory deposit is now a universal requirement, not an optional feature.
Former-Booksy client rebooking rate. Of the clients who were in your active Booksy roster (booked in the last 90 days before cutover), what fraction booked through ChairHold in the first 60 days post-cutover? Target: ≥80%. If it's 60–70%, you have a cohort of clients who received the communication sequence but haven't booked yet — they haven't churned, they just haven't needed you yet. A personal re-engagement message to this group at Day 60 will recover most of them.
Deposit compliance rate. Of the first 30 ChairHold bookings post-cutover, how many completed the Stripe Checkout deposit? Target: 100%. If any bookings are appearing in your ChairHold calendar without deposits, something is misconfigured — ChairHold's deposit is mandatory by design, so a zero-deposit booking indicates a setup issue, not a client choice.
What a successful migration looks like at Day 60
- Booking volume ≥85% of pre-migration level, trending back toward 100%
- No-show rate same or lower than Booksy-period baseline
- ≥80% of former-Booksy regulars have rebooked through ChairHold at least once
- 100% deposit compliance on all ChairHold bookings
- IG bio and GBP both pointing to ChairHold (check this — a broken link is invisible to you but visible to every new potential client)
Course correction if the review shows gaps
If former-client rebooking rate is below 80%: make a list of the specific clients who haven't rebooked. Send a personal message — not a mass blast — inviting each one to book their next appointment. Include the ChairHold link. Something like:
Hey [name] — been a minute! I moved to a new booking system in [month] and wanted to make sure you had the right link: [ChairHold link]. Drop it in your favorites — same deposit process, new URL. Let me know when you're ready to book. — [Your name]
Personal outreach to 10–15 clients who haven't rebooked recovers roughly 60–70% of them within two weeks. A mass message to the same group recovers 15–25%. The personal framing is worth the extra 20 minutes.
If booking volume is below 70%: run a full analysis of where the loss occurred. Check whether the Booksy marketplace was driving more discovery traffic than you estimated, and whether your IG bio and GBP links are correctly pointing to ChairHold (not to a broken URL or accidentally still showing Booksy). A booking volume drop of that magnitude almost always has a technical cause (wrong link) or a discovery-channel cause (marketplace traffic that didn't migrate), not a deposit-resistance cause.
The migration for operators leaving other platforms
This guide focused on Booksy because it's the most common migration source among solo beauty pros moving to ChairHold. The same framework applies to operators leaving Fresha, Square Appointments, or Acuity Scheduling — with these platform-specific notes:
- Fresha: Similar marketplace structure to Booksy. The marketplace dependency analysis applies equally. Fresha's client export is available under Clients → Export in the business dashboard. Same 30-day announcement, same hybrid-operation window. The key difference: Fresha's "free" subscription model means there's no billing date to time your account closure around — just cancel the account when you're ready.
- Square Appointments: No marketplace dependency (Square has no beauty-specific discovery directory). Migration from Square is simpler — no marketplace analysis required, just the client export and the communication sequence. Square exports client data from the Customers section of the dashboard. Note that if you've been using Square Terminal for in-person payments, you can continue using Square Terminal alongside ChairHold for deposit booking — they operate independently. See Square Appointments vs ChairHold for the co-existence configuration.
- Acuity Scheduling: No marketplace. Acuity exports client lists from the Clients tab. The migration is primarily a technical switch (new booking link) and a communication sequence — the structural complexity is lower than a Booksy migration. The one consideration: if you had per-service deposit configurations in Acuity (different deposit amounts per service type), you'll want to replicate that in ChairHold's
deposit_percentconfiguration before going live.
The full booking system comparison covers all five platforms with a decision framework for which situations each fits best.
The migration in three sentences
Export your client list before you announce anything. Update your IG bio and GBP link to ChairHold on Day 0 of the announcement — before you send Message 1. Run the Booksy account in parallel for existing appointments only, and close it after the last appointment plus a 2-week buffer.
The migration isn't technically difficult. The friction is psychological — the inertia of changing a system that works well enough to one that works better. The communication templates do most of the work; the 60-day review tells you whether the work landed.
Related reading
Hold your chair. Keep the deposit.
ChairHold gives solo stylists, barbers, and nail techs one IG-bio link that books the appointment and collects a deposit — straight to your own Stripe account. $9/mo flat.