Tactical

How to handle a no-show after the refund window closes: the solo beauty operator's step-by-step workflow

The deposit retained itself. The refund window has closed. The client didn't show. Most of the writing about deposit-first booking stops here — the deposit is the protection, and you've kept it. But if you treat a no-show as resolved the moment the refund window closes, you're leaving the larger economic question unanswered: what do you actually do with this client? The retained deposit covers 20–35% of the revenue you lost on that slot. The other 65–80% only comes back if you fill the slot from your waitlist and make a sound decision about whether this client ever books again. This guide is the operational workflow for the two to seventy-two hours after a no-show occurs — the acknowledgment, the waitlist blast, the rebooking decision tree, the second-deposit protocol, and the 3-strikes policy that keeps capacity from leaking permanently.

What "past the refund window" actually means

Before the workflow: make sure you're applying it to the right situation. A client is past the refund window when the appointment time itself has passed and the client did not show up. The refund window (typically 48–72 hours before the appointment in a standard ChairHold configuration) has already closed, which means the deposit is no longer refundable under your policy — the client understood this when they booked because the policy_text field was visible at Stripe Checkout.

This is distinct from three other scenarios that require different handling. A cancellation inside the refund window is a refund — the client followed your policy and gets their money back. A late cancellation (inside the refund window but less than 24 hours before the appointment) may be a judgment call depending on your policy wording. A no-call-no-show where the client has already texted you an excuse before the appointment time is still a no-show — the communication doesn't change the retained deposit, but it does affect the rebooking decision tree.

The workflow in this guide applies specifically to the case where the appointment time has passed, the client did not appear and did not cancel within the refund window, and the deposit is already non-refundable. What you do in the next two to seventy-two hours determines more of the actual economic outcome than the deposit did.

The 15-minute no-show confirmation threshold

Do not declare a no-show until 15 minutes past the scheduled appointment time. This matters for two reasons. First, some clients are late rather than absent, and a 10-minute delay in a 60-minute service is recoverable. Second, if you send a no-show acknowledgment message and the client arrives 12 minutes late, you've created an awkward interaction and a potential dispute. The 15-minute threshold is standard across the beauty industry and recognized as reasonable by Stripe in dispute resolution. It's also the correct threshold for triggering a waitlist blast — any sooner and you may be vacating a slot that's still going to be used.

At 15 minutes past the appointment time, with no communication from the client, declare the no-show internally and begin the workflow. Do not wait longer to see if they'll still show up. After 15 minutes, even if they arrive, you may not have enough time to deliver the service at full quality without pushing your next appointment. The threshold is a decision point, not a hope.

For services under 30 minutes (express nail fills, quick cuts), use a 10-minute threshold. For services over 90 minutes (full-set extensions, PMU sessions, complex color), 20 minutes is defensible. Standardize whichever threshold you choose — don't apply it situationally based on how much you like the client.

Step 1: send the acknowledgment message (T+15 to T+30)

The first thing you do after declaring a no-show is send an acknowledgment message. Most operators skip this step because the deposit is already retained and there's nothing operational to communicate. That's the wrong frame. The acknowledgment message is not conciliatory. It is documentation.

What the acknowledgment message accomplishes:

The acknowledgment message template:

Hi [Name], I see we missed each other today for your [service] at [time]. Your deposit has been retained per our booking policy. If something came up, feel free to reach out — I'm happy to discuss rebooking. Take care.

What this message does not do: it does not express anger, demand an explanation, or add passive-aggressive framing ("I held this slot for you for three weeks"). Those responses feel satisfying to write and create problems. The client either had an emergency (in which case coldness damages a recoverable relationship) or they didn't (in which case hostility just motivates a dispute). Factual and brief is the correct register.

Send via SMS or DM — whichever channel the booking originated from. Send within 30 minutes of the 15-minute confirmation threshold, not hours later. A same-day acknowledgment is qualitatively more useful as documentation than a next-day message. The timestamp matters.

If the client responds within a few hours with a genuine emergency explanation, use your judgment. A client with a 3-year booking history who was in a car accident that morning is a different situation than a first-appointment client who texts "sorry, totally forgot" at 6pm. The rebooking decision tree handles both, but genuine emergencies from high-LTV clients are a reasonable exception to the standard protocol.

Step 2: blast the waitlist (T+15 to T+45)

Simultaneously with the acknowledgment message (or immediately after), blast your waitlist for the newly open slot. The economic value of your waitlist is highest in this moment — a same-day open slot is exactly what waitlisted clients are waiting for.

ChairHold waitlist mechanics in this context work differently from a standard advance booking. When sending a same-day slot from your waitlist, set the time_to_live_hours on the link to the time remaining until the appointment, not the standard 24 hours. If you have a 2pm color appointment that no-showed and your next appointment is at 5pm, a waitlist slot offered at 2:20pm should expire at 5pm — not at 2:20pm tomorrow. Offering a link that expires in 24 hours for a 2pm slot that can only be taken today creates confusion and an unusable slot.

Waitlist blast template for a same-day no-show:

Hi [Name], I just had a cancellation open up today — [service] at approximately [time]. If you can make it, here's the booking link: [ChairHold link]. This link expires at [appointment time] — first to book gets the slot.

Send to your entire waitlist, not just people you think are local or available. You don't know who's free at 2pm on a Tuesday. Let the first-come-first-served deposit mechanic do the filtering — the first person to pay the deposit gets the slot. For a detailed breakdown of waitlist management mechanics beyond same-day fills, see how to run a solo beauty waitlist.

If your waitlist fills the slot, the no-show's economic impact is substantially reduced. You still retained the original deposit AND filled the slot with a new appointment. A same-day fill from the waitlist converts a no-show from a loss event to roughly a breakeven (you lose the preparation time but recover the service revenue). This is the best-case outcome, and it's available only if your waitlist is active and you blast it immediately.

Waitlist fill rates for same-day no-show slots vary significantly by operator: operators with 10+ active waitlist clients and an immediate blast fill 40–60% of same-day slots. Operators who wait hours to blast, or who have dormant waitlists, fill 10–20%. The difference is almost entirely in the speed of the blast and the warmth of the waitlist. For ChairHold configuration details including how to manage waitlist links and TTL settings, see the setup guide.

Step 3: the rebooking decision tree (T+24h)

After the acknowledgment message and waitlist blast, step back from the immediate response and make the actual decision: does this client book with you again?

This decision has three inputs. You need all three before deciding.

Input 1: no-show history

How many times has this client no-showed in your history with them? This is the most important input. A client who has never no-showed in two years of regular bookings is in a fundamentally different category from a client on their second or third no-show.

Input 2: acknowledgment

Did the client respond to your acknowledgment message? When? What did they say?

A response within a few hours with a genuine explanation (documented emergency, medical situation, family crisis) increases the probability that the no-show was a one-time circumstance. A response the next day with a vague excuse ("sorry, something came up") is less reassuring but still technically an acknowledgment. No response at all within 24 hours is the most informative signal — a client who doesn't acknowledge a missed appointment and retained deposit within 24 hours either doesn't care, plans to dispute, or has written off the relationship. Any of those outcomes make the rebooking offer more risky.

Input 3: LTV assessment

What is this client worth in future bookings? Not in sentiment — in actual bookings per year, service tier, and rebook rate.

A client who books 12 times a year at $120 per service is worth approximately $1,440/year in direct revenue and likely $2,500–$4,000 over their 2–3 year average tenure with a solo beauty pro. The cost of the no-show (one service at $120) is 8% of the year's revenue with this client. Losing them over a first no-show costs more than retaining them with a careful protocol.

A client who books twice a year at $60 is worth approximately $120/year. The no-show represents 50% of the year's revenue from this client. A second no-show from this client would represent 100% of the year's revenue (2 no-shows × $60 deposit retained still leaves the full service revenue unrecovered). The calculus is different.

The LTV input doesn't override the other inputs — a high-LTV client with no acknowledgment and a second no-show still gets the second-deposit protocol. But for a first no-show with genuine communication, high LTV justifies a more generous standard offer.

The decision matrix

No-show count Acknowledgment LTV Decision
1st Same-day, genuine High Standard rebook offer
1st Same-day, genuine Low Second-deposit protocol
1st Vague or delayed Any Second-deposit protocol
1st None within 24h Any Second-deposit protocol or decline
2nd Any Any Second-deposit protocol (non-refundable, higher amount)
3rd Any Any Block — no rebooking offer

Run through this matrix at T+24h, not during the emotional window right after the no-show. The acknowledgment message was immediate. This decision should be deliberate.

Step 4: executing the rebooking decision

Standard rebook offer

If the decision is standard rebooking, send the offer at T+24h to T+48h. Don't wait longer — the rebooking conversion rate drops sharply after 72 hours as the client's motivation to rebook decreases. Template:

Hi [Name], happy to get you rescheduled for [service]. Here's my booking link — same process as before, deposit required to hold the slot: [ChairHold standard link]. Let me know if you have questions on timing.

Use your standard ChairHold booking link. No special configuration needed for a standard rebook offer. The client has already been through your deposit flow once, so the friction at Stripe Checkout is lower the second time — they know what to expect.

The second-deposit protocol

The second-deposit protocol is specifically for clients who have earned heightened commitment requirements through prior no-show behavior. It has two elements that differ from the standard flow:

Element 1: higher deposit percentage. For a second-deposit protocol booking, raise the deposit to 40–50% of the service price, up from your standard 20–30%. This is not punitive — it's a proportional commitment signal. A client who no-showed at 25% deposit demonstrated that the cost of not showing was acceptable to them. Raising the deposit amount raises the cost of not showing. The deterrence mechanism is approximately linear up to 40% of service price; above 50%, you're more likely to lose the client than retain them.

Element 2: zero refund window. Set refund_window_hours to zero on the secondary ChairHold booking link. This means the deposit is non-refundable from the moment it's paid. The client knows this when they book — it will be visible in the policy_text you set. Communicate this explicitly in the rebooking offer message so there's no confusion about the terms.

In ChairHold, the second-deposit protocol requires creating a second booking link configured differently from your standard link. Specifically:

This second link should not be shared broadly — it's a specific-use link for clients on the second-deposit tier. You don't need to create a new link for every individual (one configured "second-deposit" link can be reused for any client on this tier), but keep it separate from your standard booking link so the terms are clear.

Second-deposit rebooking offer template:

Hi [Name], I can get you rescheduled — but given the missed appointment, I do need to use a different booking setup this time. This link requires a deposit of [amount/percentage], which is non-refundable. That policy is shown clearly when you book. If that works for you: [ChairHold second-deposit link]. No pressure — but that's the setup I need for this rebook.

The tone should be factual and non-apologetic. You're not punishing the client — you're setting terms that reflect your actual risk exposure with this specific person. A client who chooses not to rebook under these terms has effectively self-selected out of a relationship that would have continued to cost you capacity.

Some operators feel uncomfortable with the second-deposit protocol because it might offend the client. The alternative is booking the client at standard terms, absorbing a second no-show, and then blocking them — having spent another chair-slot for nothing. The second-deposit protocol is the economically correct version of the same outcome, done one appointment earlier. For detailed guidance on setting deposit amounts and refund windows, see how much deposit to charge as a solo booth renter.

Declining the rebooking

For a third no-show or a combination of first/second no-show with no acknowledgment and low LTV, declining to rebook is the correct decision. If you've been sending booking links and not receiving a response, simply stop sending them — the client has already made their decision.

If the client proactively contacts you to rebook after a second or third no-show, this is the template:

Hi [Name], unfortunately I'm not able to reschedule at this time — my schedule is full. I'd recommend checking with [local alternative] for availability. Take care.

Do not explain the no-show history. Do not mention the deposit. Do not invite a counter-negotiation. A brief, non-accusatory decline is the cleanest version of this interaction.

Step 5: record-keeping and the no-show flag

After every no-show past the refund window — regardless of how the rebooking decision resolves — add a note to your records for this client. This doesn't require a CRM. Your phone contacts, a notes app, or even a spreadsheet works.

The minimum no-show note contains three elements:

  1. Date of the no-show (not "sometime in May" — the specific date)
  2. Service that was missed (useful for pattern recognition — some clients selectively no-show on high-ticket services)
  3. Tier designation — whether this client is now on the second-deposit tier or blocked tier

A simple contact note format: "NS 2026-06-03 color appt, 2nd-dep tier" (no-show, date, service, new tier). If you add a second no-show: "NS 2026-06-03 / NS 2026-09-15 — BLOCKED". The notation is for you, not for sharing — it doesn't need to be elaborate.

The no-show note serves one critical operational function: it prevents you from accidentally offering a standard booking link to a client who should be on the second-deposit tier. Six months from now, you may not remember that this particular client no-showed in June. The note does.

For operators using ChairHold, the practical implementation is: maintain two booking links (your standard link and your second-deposit link), and your records tell you which link to send to which client. You don't need to automate this — the decision volume for most solo operators is low enough that manual record-keeping plus link selection works indefinitely.

Step 6: chargeback defense preparation

A no-show past the refund window creates chargeback risk. Clients have up to 60 days to dispute a Stripe charge (and in some card networks, longer). A small percentage of no-show clients — particularly first-time clients with no prior relationship — will attempt to dispute the retained deposit. Most fail if you have the right documentation. A small percentage succeed if you don't.

The documentation that wins a deposit dispute:

  1. Policy visibility at booking: The policy_text field in ChairHold is shown to the client at Stripe Checkout, before they pay. Stripe's dispute response infrastructure recognizes this as evidence that the client accepted the policy before the charge occurred. Keep your policy_text specific: "Deposits are non-refundable if the appointment is cancelled less than 48 hours before the appointment time or if the client does not attend." Vague policy text is weaker evidence than specific policy text.
  2. Booking confirmation record: ChairHold sends a booking confirmation at the time of deposit payment. This record includes the appointment time, the deposit amount, and the date of booking. In a dispute response, you include this confirmation to establish that the appointment was booked, the time was known, and the deposit was paid voluntarily.
  3. SMS confirmation: The 24h-before reminder SMS (if using Twilio via ChairHold) is additional evidence that the client was reminded of the appointment time and did not cancel.
  4. Your acknowledgment message: The timestamped message you sent 15–30 minutes after the no-show is evidence that the appointment time passed without the client attending. A client disputing "I never agreed to this" while your message thread shows you noting the no-show at 2:17pm on the appointment date is a strong counter-signal.

Compile this documentation before a dispute arrives — don't scramble for it after. After every no-show past the refund window, screenshot or save: the ChairHold booking confirmation, the policy_text visible at checkout, and the acknowledgment message thread. Store them in a folder organized by client name. If a dispute arrives, you have 7 days to respond in Stripe's dispute dashboard. A well-documented response wins the majority of deposit disputes. For the full dispute response process, see how to win a Stripe deposit dispute as a solo beauty pro.

The full no-show workflow: annotated timeline

Here's the complete workflow from appointment time to resolution:

Timepoint Action Tool / channel
T+0 Appointment time — client expected
T+15 min Confirm no-show; deposit retained Internal decision
T+15 to T+30 min Send acknowledgment message SMS or DM
T+15 to T+45 min Blast waitlist with same-day slot and corrected TTL ChairHold waitlist link
T+15 to T+2h Save chargeback documentation (confirmation, policy, message) Screenshots / folder
T+24h Assess rebooking decision (3 inputs: history, acknowledgment, LTV) Decision matrix
T+24h to T+48h Send rebooking offer (standard or second-deposit) or decline SMS or DM + ChairHold link
T+24h to T+48h Add no-show note to client record; update tier Notes app / contacts / spreadsheet
T+72h If rebooking offer sent and no response: archive and move on
T+30d If client attempts contact re: dispute or rebook: use decision matrix Per-case judgment

The workflow takes about 20 minutes of active time spread across 24–48 hours. The acknowledgment and waitlist blast take 5 minutes immediately. The rebooking decision and message take 10 minutes the next day. The documentation archive takes 5 minutes. The time investment is trivial relative to the economic decisions involved.

The 3-strikes policy: capacity management, not punishment

The 3-strikes policy is a capacity management framework — it's not a moral judgment about clients who no-show. It exists because the accumulation of no-show clients on your booking schedule is a slow revenue leak that's invisible until it's large.

Consider the arithmetic: if 5% of your client base has a 50% no-show rate (two confirmed no-shows each), and you have 60 active clients, that's 3 clients generating 3+ missed appointments per year at roughly $90–$150 per service. That's $270–$450/year in unretrievable chair time, beyond the deposits retained. The number seems small in isolation. The right comparison is: $450/year is 5 new client acquisitions you don't need to do if you simply block those 3 clients.

The 3-strikes structure:

Strike 1 — First no-show past refund window: Standard response workflow. Retain deposit. Send acknowledgment. Run decision matrix. Offer rebooking at standard or second-deposit terms per decision. Note the no-show. This is the most common case and often resolves cleanly.

Strike 2 — Second no-show past refund window: Second-deposit protocol required. Non-refundable deposit at 40–50% of service price. Zero refund window. Communicate the change explicitly. A client who no-shows a second time on a non-refundable deposit has given you the clearest possible signal about the pattern. At this point, the third no-show is nearly certain if you continue offering appointments. Block preemptively after the second no-show on a non-refundable deposit rather than waiting for the third.

Strike 3 — Third no-show past refund window: Block. No rebooking offer. If this client contacts you proactively, use the decline template above. There's no version of this client relationship that has positive expected value on a per-appointment basis.

The "block" in practice is simple: stop sending this client a booking link. You don't need to announce it. You don't need to add them to a block list in a software system. You simply don't send them the link when they ask. If they find your public booking link independently, you can address it when (if) they attempt to book — most blocked clients don't bother because they know why.

For operators who want more formal control: ChairHold's Stripe integration means you can restrict individual emails at the Stripe level using Stripe Radar block rules. This prevents a blocked client from completing a deposit even if they get access to your booking link. For the full Radar rule configuration, see the Stripe chargeback response guide, which covers Radar rules as part of the dispute prevention toolkit.

What happens when the client disputes after being blocked

The most adversarial version of this situation: a client is blocked after a second or third no-show, and they respond by disputing the original retained deposit. This is rare — most clients understand why the deposit was retained — but it happens.

Your position in this dispute is strong if you have the documentation described above. The key elements in a dispute from a client with a no-show history:

In practice, a client who has no-showed twice on non-refundable deposits and then disputes both charges is attempting a chargeback that Stripe classifies as "services not rendered." Your response: the service was available, the appointment was scheduled, the client did not attend, the policy was displayed at checkout, and you have timestamped evidence of both. Most banks side with merchants in documented no-show disputes.

The real protection against dispute escalation is the acknowledgment message. A client who received "I see we missed each other today" from you on the day of the appointment cannot credibly claim they were never informed about the missed appointment. That message is the single most important piece of documentation you can generate, and it costs you about 30 seconds to send.

No-show recovery scripts: when clients want to negotiate

Some clients, after receiving the acknowledgment message, will push back on the retained deposit: "I had an emergency — can you refund the deposit this time?" or "I've been a loyal client for years, can you make an exception?"

These are negotiation attempts, not genuine disputes. The correct response depends on your assessment of the situation, but the general principle is: your policy is your policy, and making exceptions erodes its function as a commitment device. A client who knows you will refund deposits if they push hard enough is a client who has learned that the deposit is negotiable, which means it no longer deters no-shows.

For genuine emergencies from high-LTV long-term clients: you can offer a credit toward a future appointment rather than a refund of the deposit. This is not the same as refunding the deposit. It acknowledges the relationship while maintaining the policy structure. "I'm not able to refund the deposit, but I can apply it as a credit toward your next appointment if you rebook within 30 days."

For the standard negotiation attempt: "I understand you had something come up. The deposit policy is the same for everyone — it's what lets me hold the slot reliably. I'm happy to rebook you with a new deposit if you'd like."

For a template collection that covers the full range of no-show and deposit negotiation scenarios — including the most common objections and multi-turn conversations — see no-show recovery scripts for solo beauty pros.

Building the no-show workflow into your operating rhythm

The no-show workflow is easier to execute correctly when it's a known protocol rather than an improvised response. Improvised responses to no-shows tend to be either too passive (silence, no acknowledgment, no waitlist blast) or too reactive (angry messages, immediate policy-reading to the client, emotional communication).

The way to build the workflow into muscle memory:

  1. Set the 15-minute threshold in your head as the decision point. Don't make it fuzzy. When the timer hits, you confirm the no-show and start the protocol.
  2. Write the acknowledgment message template in your notes app so you can copy-paste with light personalization. The 15-to-30-minute window is short — you may have another client arriving soon. A template you can send in 60 seconds is more likely to actually get sent than one you write from scratch under time pressure.
  3. Have your waitlist blast template ready in the same notes document. Same reason — you want to send it while the emotional reaction to the no-show is still fresh and the slot is still fillable.
  4. Batch the decision and rebook offer to T+24h. Deliberate decisions made 24 hours after an event are qualitatively better than decisions made in the window right after. The protocol handles the immediate response; T+24h handles the strategic decision.

Operators who have run this protocol consistently across 6–12 months report two durable outcomes: the no-show rate drops (clients on the second-deposit tier either rebook at higher commitment or self-select out, and the 3-strikes block removes the persistent no-show cohort from the schedule), and the chargeback rate on retained deposits approaches zero (documentation prevents disputes from succeeding, which reduces the incentive to file them).

For a deeper dive on the policy document that underpins all of this — including the specific language for refund windows, non-refundable clauses, and cancellation terms — see how to write a no-show policy for your solo beauty business. And for the deposit configuration that makes the policy enforceable at checkout, see the ChairHold setup guide.

Quick reference: the no-show decision checklist

For operators who want the protocol in a format they can run through quickly on a no-show day:

Immediate (T+0 to T+45 min):

Deliberate (T+24h):

Infrastructure check (after second no-show from any client):

Get the deposit flow that makes all of this work

ChairHold gives you a configurable deposit-first booking link — set your deposit percent, refund window, and policy text so the terms are clear at checkout, not after the no-show.