openchair
FeaturesPricingAbout
Sign InStart Free Trial
Help Centre

Customers & Automation

  • Activity Feed
  • AI Booking Enquiry Auto-Responder
  • AI Style Preview
  • Automated Notifications
  • Birthday & Rebooking Automations

Customers & Automation

SMS Reply Actions (Y / C / R)

Last updated 19 May 2026

SMS Reply Actions (Y / C / R)

Customers reply Y, C, or R to a reminder SMS to confirm, cancel, or reschedule their booking. Auto-recognised, instantly acted on, and confirmed with a context-aware reply. Cancellation policy applied automatically. Works on every plan with a dedicated SMS number.

Where to find it — Setting: Settings → Communications → Reminder template → Include reply actions (default on). Customer-facing: appended to the reminder SMS body.

TL;DR

  • Y / Yes / Confirm = confirm the booking
  • C / Cancel = cancel via your cancellation policy (deposit, fees, refund)
  • R / Reschedule = send the customer a magic link to reschedule themselves
  • Match is first-word-only, case-insensitive, punctuation-tolerant
  • Window is 24 hours after the reminder was sent

How the customer sees it

When the reply-actions feature is on, your reminder SMS appends a footer:

"Hi Sarah, reminder you're booked for Balayage with Marcus tomorrow at 2pm at Salon Smith. Reply Y to confirm, C to cancel, R to reschedule."

The footer is 49 characters. Long reminder templates may push from 1 to 2 SMS segments — the template editor surfaces a segment hint so you know.

How matching works

The webhook checks the first word of any inbound SMS (case-insensitive, punctuation stripped):

Customer types Recognised as Action
Y, YES, CONFIRM (any case, any trailing) Confirm Stamp booking confirmed
C (any case, any trailing) Cancel Run cancellation policy
R, RESCHEDULE (any case, any trailing) Reschedule Send magic link

Examples that all confirm:

  • Y
  • Yes
  • YES
  • y!
  • Yes please.
  • YES PLEASE TOMORROW

Trailing text is logged but ignored. The first word is what matters.

Caution

CANCEL (the full word) opts the customer out of SMS — it doesn't cancel the booking. The STOP keyword list runs before the reply-actions handler and includes CANCEL as an opt-out keyword. The booking-cancel action only fires on single-letter C. Reminders explicitly prompt "Reply Y to confirm, C to cancel, R to reschedule" — coach customers to use the single letters, not the full words. See SMS Allocation and Limits → STOP/START compliance for the full opt-out keyword list.

When it's recognised

Reply actions only fire when:

  1. The customer has a booking with a reminder sent within the last 24 hours to their normalized phone number
  2. No more recent waitlist gap-offer or reconnect campaign was sent to them (those flows take priority — see priority order below)

Outside the 24-hour reminder window, the same keywords fall through to AI auto-respond or your standard inbox handling.

Priority order

The SMS webhook checks these handlers in order, taking the first match:

  1. STOP / opt-out (regardless of context) — opts the customer out of all marketing SMS
  2. Waitlist gap-offer reply — if you sent them a gap offer more recently than the reminder
  3. Reconnect campaign reply — if you sent them a reconnect SMS more recently
  4. Active conversation routing — ongoing thread takes precedence
  5. Reminder reply (Y/C/R) — this handler
  6. AI auto-respond — for anything else

So if you sent a reminder yesterday and a gap-offer 10 minutes ago, the customer's "Y" routes to the gap-offer (which uses Y for "yes, take the gap"), not to the reminder confirmation.

What each action does

Y — Confirm

  • Stamps booking.reconfirmedAt and reconfirmationSource = "sms"
  • Reply: "Confirmed — see you {tomorrow at 2pm} with {Marcus}. — {Venue}"
  • Day phrase is localised to venue timezone and country
  • Staff first name included when available

The booking remains in its current status; reconfirmedAt is a separate field marking the customer's affirmation.

C — Cancel

  • Routes through your venue's cancellation policy via cancelBookingCore
  • Applies deposit handling: forfeit / full refund / partial refund / credit / none (whichever your rule says)
  • Charges cancellation fee if your policy says so
  • Writes audit history (system-attributed since the cancel came via SMS)
  • Reply: policy-aware — for example:
    • "Cancelled. Per our cancellation policy, your $25 deposit cannot be refunded."
    • "Cancelled — your $25 deposit will be refunded within 5-10 working days."
    • "Cancelled. Hope to see you next time. — {Venue}" (no deposit case)

R — Reschedule

  • Generates an HMAC-signed rescheduleUrl containing the booking's manage token
  • Reply: "To reschedule, tap here: {link} — {Venue}"
  • Customer lands on the reschedule flow already authenticated for that booking — no login, no friction
  • They pick a new slot and the booking moves; standard rescheduling rules apply

CANCEL and STOP

Important interaction: CANCEL is no longer in the STOP keyword list. Inside the 24-hour reminder window, CANCEL means "cancel this booking", not "opt me out of SMS". Out of window, CANCEL falls through to AI auto-respond.

If the customer wants to opt out of SMS entirely, they need to reply STOP (or STOPALL / UNSUBSCRIBE / CANCEL after the reminder window — context matters).

Auto-reply tone

The auto-replies follow your venue's brand voice persona. They're plain, brief, factual — no AI verbosity, no upsells. Customers expect a confirmation that their action worked; the reply confirms exactly that.

Logging

Every reply-action interaction writes two conversation_log rows:

  1. The inbound message, classified as Y/C/R
  2. The outbound auto-reply with automationKey: "appointment_reminder_reply"

Both rows have handlingMode: "automated" and conversationStatus: "completed". Visible in the inbox conversation thread for full audit.

If the handler fails (rare — usually a database issue), the error is logged and reported but the webhook returns 200 to Twilio anyway, preventing retry-induced double-cancellation.

Configuring

Setting Where Default
Include reply actions Settings → Communications → Reminder template editor On

Turn off if you don't want the footer in your reminder SMS. The customer can still reply to the reminder; the reply just won't auto-match Y/C/R — it'll fall through to your inbox or AI auto-respond.

Requirements

  • A dedicated SMS number provisioned for your venue (AU or GB only; NZ doesn't have SMS)
  • The customer must be at the phone number that received the reminder (normalised phone matching)

Tier

All plans. No PRO requirement. Requires a dedicated SMS number — which is also free across plans but requires AU or GB venue.

Common mistakes

Problem What to check
Customer's "Y" didn't confirm Check that the reminder went out within the last 24 hours. Outside the window, the reply falls through.
Customer cancelled but my cancellation policy didn't apply Confirm your active deposit rule has the right refundAction and cancellationWindowHours. The auto-cancel uses whatever your rule says.
Customer wanted to opt out of SMS, replied CANCEL, got a booking cancellation instead CANCEL inside the reminder window cancels the booking. Customers wanting to opt out should reply STOP.
Reply-actions footer not appearing on reminders Confirm Settings → Communications → Reminder template → Include reply actions is on.
Reminder SMS now 2 segments instead of 1 The footer adds 49 characters. If your template is close to 160 chars (one segment), the footer pushes it over. Trim the template body to fit.
Customer replied "YEs" with weird casing Matched as Y regardless of casing. Trailing punctuation and case don't matter.

FAQ

What do Y, C, and R do?

Y confirms the booking (stamps reconfirmed). C cancels it via your cancellation policy (deposit handling and any cancellation fee follow your rules). R sends the customer a magic link to reschedule themselves.

Which SMSes accept these replies?

Standard appointment reminder SMSes. When the 'Include reply actions' setting is on (default), the reminder body appends 'Reply Y to confirm, C to cancel, R to reschedule.' Customers reply with one of those letters to act.

What if a customer replies 'YES PLEASE TOMORROW'?

Just the first word is matched. 'YES please tomorrow' = confirm. The trailing text is logged but ignored. Punctuation and case don't matter — 'y', 'Y.', 'yes', 'Yes,' all confirm.

Can a customer cancel after the reminder window has passed?

If their reminder went out within the last 24 hours, yes. After that, the keyword falls through to AI auto-respond or your normal inbox — they'd need to reply with a clearer message or call you.

Will the reply auto-charge a cancellation fee?

If your active deposit rule says so — for instance, if the rule is "deposit forfeit on late cancellation" and the customer's reply is inside the cancellation window, yes. The auto-cancel honours whatever your policy is configured to do.

Does it work in NZ?

No — NZ doesn't have SMS in OpenChair (email-only there). Reply actions require SMS, so AU and GB only.

Related Articles

  • Automated Notifications
  • SMS Allocation and Limits
  • Communication Settings
  • Cancellation & Rescheduling Policy
  • Cancellation & No-Show Fees
openchair

The operating system for high-end service venues. Built in Australia for the world.

Product

  • Features
  • Pricing
  • AI Features
  • Mobile App
  • Online Booking
  • AI Concierge
  • Sign In

Solutions

  • Hair Salons
  • Barbers
  • Beauty
  • Wellness & Spa
  • Nail Salons
  • Tattoo Studios

Compare

  • All comparisons
  • vs Fresha
  • vs Timely
  • vs Square
  • vs Booksy
  • vs Mindbody
  • vs Boulevard
  • vs Phorest
  • vs Mangomint
  • vs GlossGenius
  • vs Vagaro
  • vs Shortcuts
  • vs Acuity

Resources

  • Blog
  • Help Centre
  • Guides
  • Glossary

Company

  • About
  • Contact
  • Book a Demo
  • Founding Members

Legal

  • Privacy
  • Terms
  • Cookie Policy
  • Sub-processors
  • Accessibility
  • Privacy Request

© 2026 OpenChair Platform. All rights reserved.

Made on the Goldie.