How a Beauty Salon Chain Cut No-Shows by 40% with an AI Confirmation Agent
- Before
- 22%
- clients didn't show
- After
- 13%
- some with prior notice
- Additional revenue
- +18%
- via filling cancellations from waitlist
- Implementation
- 9 days
- including booking system integration
Context and challenge
Clients booked services (haircut, coloring, nails) — but 20-25% didn't show up without warning. Lost revenue (stylist idle) and missed opportunities for clients on the waitlist. Standard "confirm your visit" SMS performed poorly — clients didn't reply, didn't perceive as important.
Approach
n8n pipeline:
- Scheduled trigger — every hour scenario queries booking API for next 24h appointments
- Enrichment — for each booking, pulls client profile (history, visit frequency, preferred stylist)
- Channel decision — if Telegram username — use it, else SMS cascade
- Message generation — Claude Haiku formulates personalized text from template (considering — frequent/new client, what service, what time)
- Send & wait — send, wait 4 hours for reply
- Reaction — if “confirm” — mark booking confirmed, don’t bother. If “won’t come” — slot to waitlist, find next. If no reply — fallback to SMS
What was hard
Hard part 1 — booking system sync. API has specific auth logic and rate limits. Used caching (Redis) for frequent queries and retry logic for transient errors. Stable uptime by day 4.
Hard part 2 — message tone. Beauty industry is about emotion and comfort. Dry technical confirmations don’t work. Prescribed in prompt — address by name, mention specific stylist, ask about prep, use warm phrasing. Tested on first 200 messages, corrected.
Hard part 3 — waitlist. Not every salon had it structured. Built simple Telegram bot UI where admin can see queue and quickly trigger outreach. Without it, automated filling would work at only 60% potential.
Business impact
1.5 months after launch across all 12 salons:
- No-show: 22% → 13% (−40%)
- Revenue: +18% (filling cancellations from waitlist)
- Admin time on “confirmation calls”: 3 hours/day → 30 min (only complex cases)
- Client NPS rose +8 points — noted that they know about visits in advance and can plan
"No one skips appointments without warning anymore. And when a cancellation happens, we manage to fill the slot from the waitlist."
Tech used
Case FAQ
- Don't the messages annoy clients?
- Balance matters. We did — one message 24h before, warm and brief tone, clear CTA (one button "confirm", one "need changes", one "won't come"). If client already confirmed — don't write again. If frequent stable client (no no-show history) — simpler message, no extra questions.
- What about clients without Telegram?
- Channel cascade — first Telegram (if available, asked at first booking), then SMS, then email. Plus option for 50+ clients — admin phone call (only 3% of base, manual list).
- Why Claude Haiku, not Sonnet?
- Task is simple — generate short warm message from template. Haiku does it well, 12× cheaper, faster. Savings at 4000 messages/month are noticeable. Sonnet reserved for complex cases (e.g., client complaints).
- How does the waitlist work?
- Every time client replies "won't come" — booking system marks slot free, and n8n scenario automatically messages the first person on the waitlist for that service + stylist. If they reply "I'll take it" within 30 min — slot is theirs, else try next. Semi-automated cancellation filling.
Want the same result?
Free 2-day audit. In half an hour we'll know if there's reason to move forward.