The cleanest way for a business to cancel appointment bookings by text is one short message that names your business, the time being canceled, a short reason, and a specific way to rebook. When customers cancel by reply, ask them to answer with a number or the word CHANGE, not CANCEL, because CANCEL is on the industry's standard opt-out keyword list and can unsubscribe them from every text you send.

This post covers both directions of a cancellation and what comes after it. It has templates for when you cancel on a customer, the confirmation text that lets customers cancel without opting out, cancellation-policy wording that fits in one segment, the rebooking follow-up, and the waitlist offer that fills the empty slot. The last sections show how to automate this in Ready, either through the app or the API if you run booking software for other businesses, with the per-text math worked out.

When you have to cancel appointment times yourself: templates

When the business cancels, the customer has rearranged their day for you, so the text has to be fast, specific, and give them an easy next step. Four rules:

  • Name the business first. Carriers and customers both want to know who is texting. "Bright Smile Dental:" beats an unsigned message.
  • Say which appointment. Give the day and time, but not the procedure. In healthcare, keep clinical detail out of texts entirely.
  • Give a reason in five words or fewer. "Our hygienist is out sick" is enough. Customers don't need a paragraph.
  • Offer one concrete rebooking path. Offer two specific times, a booking link, or "reply with a day that works." Don't send a vague "call us to reschedule."

Template: staff illness or emergency

Bright Smile Dental: we have to cancel your Tue 3/10 2:00 PM visit, our hygienist is out sick. Reply 1 for Thu 3:00 PM or 2 for Fri 10:00 AM.

Template: weather or closure

Oak Street Auto: we're closed Mon due to the storm, so your 9 AM service is canceled. Book a new time here: [link] or reply with a day that works.

Template: double-booking or scheduling error

Lumen Salon: our mistake, we double-booked your Sat 11 AM. We're sorry. Can you do 1 PM the same day? Reply YES or tell us a better time.

Keep each of these under 160 plain characters so it stays one segment. If a booking link pushes you over, it's still only two segments. One link-specific caution: shared public shorteners like bit.ly are a common reason texts get filtered even on a registered campaign. That's covered in our post on content-level filtering.

Letting customers cancel by reply without tripping STOP

This is the part most templates online get wrong. "Reply CANCEL to cancel" looks natural, but CTIA guidance lists CANCEL alongside STOP, END, QUIT and UNSUBSCRIBE as an opt-out word. Assume any system between you and the customer may treat a bare "CANCEL" reply as "never text me again." The customer meant "not Tuesday" and you lose the ability to send them a reminder for the rebooked visit.

The confirmation text that avoids it

Ask for numbers or non-reserved words:

Bright Smile Dental: reminder of your visit Tue 3/10 at 2:00 PM. Reply 1 to confirm or 2 to reschedule. Reply STOP to opt out.

Or with words:

Oak Street Auto: your service is Mon 9 AM. Reply YES to confirm or CHANGE to move it. Reply STOP to opt out.

The full reminder schedule (how many days out, how many texts) is in our appointment reminder SMS guide.

When someone replies CANCEL anyway

People will. A sensible rule for whoever works the inbox:

  1. A one-word "CANCEL" (or "Cancel.") is treated as an opt-out. Cancel the appointment in your booking system. Don't text them again unless they text you first or opt back in. If you need to reach them to rebook, call.
  2. A sentence like "I need to cancel my appointment" is a cancellation request written in plain language. Cancel it and reply with the acknowledgement below.
  3. Anything ambiguous gets checked against the opt-out list before you reply. On Ready, GET /v1/opt-outs/:phone tells you whether that number is opted out. If it is, a send to it is refused up front and not charged anyway.

Acknowledgement template:

Bright Smile Dental: your Tue 2:00 PM visit is canceled. Want a new time? Reply with a day, or book here: [link].

If the customer did opt out and you call them instead, the Ready Dialer works from the dashboard or GoHighLevel at $0.025/min. Each started minute is billed as a full minute.

Cancellation-policy wording that fits in one text

A policy only works if the customer saw it before the appointment, so put it in the confirmation or the first reminder, not in the cancellation reply. Keep it to one sentence with a number in it:

  • Time window only: "Need to change? Please let us know 24 hours ahead."
  • With a fee: "Changes within 24 hours of your visit incur a $25 late-cancel fee."
  • With a deposit: "Your $50 deposit is refundable if you reschedule 48+ hours ahead."

The dollar figures above are placeholders for your own policy. A full reminder with the fee line:

Lumen Salon: see you Sat 11 AM. Reply 1 to confirm or 2 to reschedule. Changes within 24 hrs incur a $25 fee. STOP to opt out.

Two honest caveats. First, a text is a reminder of a policy, not the agreement itself. The policy the customer agreed to at booking is what you'd point to in a dispute. Second, don't threaten a fee you don't actually charge. Customers notice, and it makes the next real policy text easier to ignore.

The rebooking follow-up

Most canceled appointments that never get rebooked are lost because nobody asked twice, not because the customer said no. A simple two-step drip campaign handles it:

WhenMessagePurpose
Right after the cancellation"Your Tue visit is canceled. Want a new time? Reply with a day or book here: [link]."Catch people while they're still planning
3 days later, only if not rebooked"Bright Smile Dental: still want to get that cleaning on the calendar? We have openings Thu and Fri. Reply with a time."One reminder, then stop

Stop after the second text. A third and fourth nudge for a single canceled appointment starts to read as marketing, and complaint-driven filtering hurts the deliverability of every reminder you send after that. If the customer opted out (see the CANCEL rule above), the drip campaign doesn't run for them at all.

Waitlist offers: filling the empty slot

A canceled slot is revenue you can still recover if someone on the waitlist can take it. The template:

Bright Smile Dental: a 2:30 PM slot opened today. Reply YES to claim it; first reply gets it. Reply STOP to opt out.

That's 117 GSM characters, so it's one segment. Add a single emoji and the whole message switches to unicode, where the limit drops to 70 characters (67 per part on multipart). At that point it's two segments, and every send costs double. Leave the tooth emoji out.

Worked example: what a waitlist offer costs

The assumptions: a waitlist of 60 opted-in customers, the 117-character message above, Ready's Standard rate of $0.0075/segment plus a $0.0045 carrier fee per segment, and compliance add-ons switched off.

  • Offer to all 60: 60 segments, so 60 × $0.0075 = $0.45 in Ready's rate plus 60 carrier fees.
  • Replies: inbound replies are billed like a sent text. If 15 people reply YES, that's 15 more segments.
  • The "sorry, it's taken" texts: 14 people now need a courtesy reply. That's 14 more segments and 14 mildly annoyed customers.

The cost is small either way. The better fix is operational: text the waitlist in batches of 5, wait 15 minutes, then text the next 5. You fill the slot with fewer losing replies, and the people who miss out are people you didn't text yet.

If you've switched on scrubbing or landline validation, each adds $0.003 per segment on top of the rate above.

Quiet hours will hold some offers

Ready holds texts sent during the recipient's quiet hours, based on their area, and sends them once permitted hours start. A send is charged only when it actually goes out. For waitlists, a 7 AM cancellation for a 9 AM slot may not reach anyone in time. That's the rule working as intended. For very early slots, call from the pad instead of texting. Campaigns, drip campaigns and automations wait up to 24 hours for the window; a one-to-one or API text is held only if the window opens within 6 hours, otherwise it is refused and must be resent; a one-to-one reply to someone who texted you in the last 24 hours goes out at any hour.

Automating cancellations, rebooking and waitlists in Ready

How you set this up depends on where your bookings live.

In the Ready app

  • Save each template above as a reusable template.
  • Build the two-step rebooking follow-up as a drip campaign.
  • Work replies (YES, 1, 2, CHANGE, plain-language cancellations) from the Inbox.

Ready no longer lets accounts create AI reply agents, but one set up earlier may still answer texts on its own until you pause its automation in Automations, and the Take over button in the Inbox thread stops it in that conversation. A person on your team confirms who got the waitlist slot. The AI message writer and spam-filter check can help you draft and check templates. Each set of drafts it writes costs the same as 5 texts at your rate. We cover the line between automated and hand-written texts in our post on automated texting.

In GoHighLevel

Ready installs natively and syncs inbound and outbound messages two ways, mapped per GHL location. Your existing calendar workflows keep firing the texts, and replies land in GHL.

Via the API (for booking platforms)

If you build scheduling software and text on behalf of your customers, give each business a sub-account with its own numbers and 10DLC registration. Then fire a send from your own cancellation event:

POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: 6f1c2a9e-3b7d-4e2a-9c1f-0d5e8a7b4c21

{"to": "+12125550199", "body": "Bright Smile Dental: your Tue 2:00 PM visit is canceled. Want a new time? Reply with a day or book here: [link]", "consent_attested": true}

The Idempotency-Key matters here. If your cancellation handler retries, the customer still gets one text, not three.

For waitlist batches, POST /v1/messages/bulk takes an array of to numbers with the same body. To read replies back into your app, use GET /v1/messages. Details are in the messages docs, the bulk docs and the quickstart.

Registration and the use case these texts belong under

Cancellations, confirmations and rebooking texts are customer-care and account-notification traffic. A waitlist offer to people who asked to be on the waitlist fits there too. A "we have openings this week!" text to your whole list is marketing. Register for what you actually send. Our use-case picking guide covers why a mismatch gets throttled.

On Ready, registration happens in-app. The charge at submit is the first month, $25. The monthly cost after that is $25/mo for registration, and $2 per number, and most approvals take 2 to 7 days. The first 20 texts are free one-to-one sends, so use them to test your templates before you register. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it. Pricing is on the pricing page.

The practical takeaway

Write the cancellation text the way you'd want to receive it: who, which appointment, a short reason, and one rebooking option. Never ask customers to reply CANCEL. Use numbers or CHANGE, and treat a bare CANCEL as an opt-out. Put your policy in the reminder, not the cancellation. Follow up once, then stop. Text the waitlist in small batches. If you'd like to try the templates on real phones, sign up and send them to yourself with the free texts.

FAQ

What should a business text say when canceling an appointment?

Your business name, the day and time being canceled, a short reason, and one specific way to rebook, such as two offered times or a booking link. Aim for under 160 plain characters so it's a single segment.

Can customers cancel an appointment by replying CANCEL?

They can, but you shouldn't ask them to. CANCEL is a standard opt-out keyword, so a one-word CANCEL reply may unsubscribe them from all your texts. Ask for "2" or "CHANGE" instead, and check the opt-out list before replying to anyone who wrote CANCEL.

How do I include a cancellation fee in a text?

Add one sentence with the window and the amount to your confirmation or reminder, for example: "Changes within 24 hours incur a $25 fee." The text reminds the customer of the policy. The agreement they accepted at booking is the policy itself.

How much does a waitlist text cost on Ready?

On Standard, it's $0.0075 per segment plus a $0.0045 carrier fee per segment. Replies are billed the same way. A one-segment offer to 60 people is 60 segments, plus one segment per reply. Scrubbing or landline validation adds $0.003 per segment each, if switched on.

Can Ready automatically reply to cancellations and assign waitlist slots?

Ready sends the templates, runs the rebooking drip campaign and collects replies in one inbox, and platforms can trigger sends from their own booking events through the API. Ready no longer lets accounts create AI agents that answer texts by themselves. A person, or your own booking system reading messages through the API, decides who gets the slot.