Appointment reminder SMS: 17 ready templates under 160 characters, and when to send them
17 appointment reminder SMS texts for practices, physio, salons, workshops, restaurants and B2B, each under 160 characters, with timing, send_at and opt-out.
A missed appointment costs a practice, a salon or a workshop an empty slot that nobody else can use at short notice. A reminder by SMS the day before is the cheapest insurance against it: it arrives on the lock screen, needs no app and is read within minutes. This article gives you 17 ready-to-use templates for typical businesses, all of which fit into a single SMS, explains when each kind of reminder works best, and shows how to schedule reminders with the send_at field of the TopSMS API so that nobody has to press “send” at six in the evening.
Rules that apply to every template
- One segment, 160 characters. All templates below stay under 160 characters of the GSM-7 alphabet with realistic values. German umlauts and ß are part of that alphabet; emoji, typographic quotes („…“ or “…”) and the en dash are not and would switch the message to Unicode with only 70 characters per segment. That is why the templates use straight characters and a plain hyphen only.
- Who, when, what to do. The business name first, then date and time, then the one action you want: bring something, call to cancel, rebook.
- A way to answer. Messages from an alphanumeric sender such as “PraxisMayer” cannot be answered. Every template therefore contains a phone number or a link for changes.
- No advertising. A reminder is a transactional message and needs no marketing consent, as long as it stays a reminder. An offer added at the end turns it into advertising.
The templates
Placeholders in braces are replaced by your booking software or, when you send from the TopSMS dashboard, by the variables of a campaign; the TopSMS API itself sends the text exactly as it receives it. *The character count is calculated with these example values: name “Alexandra”, date “Thu 19 Nov”, time “10:30”, phone “030 1234567”, link “tsms.cz/a1b2c3”, registration “B-MK 2481”, guests “4”. Longer names or addresses add their extra length.
| Use | Template | Characters* |
|---|---|---|
| Medical practice, day before | Dr Mayer practice: Reminder of your appointment tomorrow, {date}, at {time}. Please bring your health insurance card. Cancel: {phone} | 140 |
| Medical practice, with preparation | Dr Mayer practice: Your blood test is on {date} at {time}. Please come fasting (water is fine). To reschedule call {phone}. | 130 |
| Dental practice, 2 days ahead | Dental practice Weber: {name}, your appointment is on {date} at {time}. If you cannot come, please let us know 24 hours ahead: {phone} | 144 |
| Physiotherapy, series | Physio Lindner: Your next session is on {date} at {time}. Please bring a towel and your prescription. Questions or changes: {phone} | 138 |
| Physiotherapy, last session of a prescription | Physio Lindner: {date} at {time} is the last session on your prescription. Please bring a new one if treatment continues. | 124 |
| Hair salon, day before | Salon Bella: Hi {name}, see you tomorrow at {time}! If something comes up, please call {phone} so we can give the slot to someone else. | 141 |
| Beauty salon, same day | Studio Lumi: Your appointment is today at {time}. Please arrive 5 minutes early. Running late? Call {phone}. | 111 |
| Salon, with online rebooking | Salon Bella: Reminder for {date} at {time}. Need a different time? Rebook here: {link} | 97 |
| Car workshop, day before | Autohaus Klein: Your car {car} is booked for {date} at {time}. Please bring the keys and service book. Changes: {phone} | 130 |
| Car workshop, tyre change | Autohaus Klein: Tyre change for {car} on {date} at {time}. Your stored tyres are ready. Cannot make it? Call {phone}. | 128 |
| Car workshop, car ready | Autohaus Klein: Your car {car} is ready for pickup. Opening hours today until 18:00. Payment by card or cash. | 113 |
| Restaurant, reservation same day | Trattoria Roma: We look forward to seeing you today at {time}, table for {guests}. If your plans change, please call {phone}. | 121 |
| Restaurant, larger group | Trattoria Roma: Your reservation for {guests} people on {date} at {time} is confirmed. Please let us know about changes 24 h ahead: {phone} | 139 |
| B2B meeting, day before | Meyer Consulting: Reminder of our meeting tomorrow at {time} at our office, Hauptstr. 12, Berlin. Reception 2nd floor. Contact: {phone} | 138 |
| B2B video call | Meyer Consulting: Our video call starts on {date} at {time}. The link is in your calendar invitation. Questions: {phone} | 127 |
| Reminder with opt-out note | Dr Mayer practice: Appointment on {date} at {time}. No more SMS reminders? Just tell us on {phone} or at the reception. | 126 |
| Short version, any business | Reminder: {date}, {time}. Cancel: {phone} | 48 |
When to send which reminder
| Business | Best time | Why |
|---|---|---|
| Medical and dental practices | 24 to 48 hours ahead, between 17:00 and 19:00 | Enough time to cancel so the slot can be offered to the waiting list. |
| Physiotherapy series | The evening before each session | Weekly sessions are easy to forget; the last session note prevents a gap in the prescription. |
| Hair and beauty salons | The day before, or 2 to 3 hours ahead for same-day bookings | Short notice still lets you fill the slot from walk-ins. |
| Workshops | The day before, plus “car ready” when the job is done | The pickup message saves phone calls asking “is it ready yet?”. |
| Restaurants | The morning of the reservation, or 24 hours ahead for groups | Groups need time to change numbers; same-day reminders cut no-shows. |
| B2B meetings | The working day before, around midday | Leaves time to sort out the address, the parking and the agenda. |
Send reminders during the day and the early evening, roughly between 8:00 and 20:00, and not on Sunday morning. A reminder at 22:30 annoys more than it helps, even if the appointment is early the next morning.
Scheduling with send_at
The cleanest approach is to schedule the reminder at the moment the appointment is booked. Add the send_at field to the normal send request, and TopSMS sends the message at that time:
POST https://www.topsms.cz/api/sms/send
{
"to": "+4915112345678",
"text": "Dr Mayer practice: Reminder of your appointment tomorrow, Thu 19 Nov, at 10:30. Please bring your health insurance card. Cancel: 030 1234567",
"from": "PraxisMayer",
"send_at": "2026-11-18T18:00:00+01:00"
}The response is HTTP 202 with status scheduled and a jobId:
HTTP/1.1 202 Accepted
{ "ok": true, "scheduled": true, "id": "cmv...", "jobId": "cmw...", "status": "scheduled",
"sendAt": "2026-11-18T17:00:00.000Z", "price": 2.04,
"statusUrl": "https://www.topsms.cz/api/sms/jobs/cmw..." }- Time zone.
send_atis an ISO 8601 timestamp with a time zone (or a Unix timestamp). Germany and Austria are on+01:00in winter and+02:00in summer; let your programming language compute the offset for the date of the reminder rather than hard-coding it. - Limits. At most 30 days ahead. A time less than one minute from now is sent immediately. For appointments further ahead, schedule the reminder later, for example in a nightly job that picks up all appointments in the coming days.
- Price. The credit is deducted when the message is scheduled.
- Cancellation. If the appointment is cancelled or moved, cancel the reminder with the stored
jobId; the price is refunded to your credit. Then schedule a new one for the new time.
DELETE https://www.topsms.cz/api/sms/jobs/cmw...
Authorization: Bearer CLIENT_ID:SECRETFor a daily batch, send_at also works with the bulk endpoint /api/sms/send-bulk, which takes up to 500 recipients with individual texts per request. When you test with a test key, a scheduled request returns HTTP 200 with "scheduled": true and no jobId, and nothing is sent or charged.
Without code, the campaign module in the dashboard does the same: upload a CSV with name, phone number, date and time, use the columns as variables in the text and set the send time.
Opt-out wording
Appointment reminders are part of the service you provide, so the law does not require an opt-out in every message. Still, some customers do not want them, and offering a simple way out builds trust. Because nobody can reply to a sender name, “reply STOP” does not work. Use instead:
No more SMS reminders? Just tell us on 030 1234567.Prefer no reminders? Let us know at the reception.
When a customer opts out, mark the number as opted out in TopSMS (in the contact detail, or in bulk by importing a CSV with an optOut column). The API then rejects messages to that number with code 400, so a mistake in your booking system cannot send a reminder by accident.
What reminders cost
With TopSMS a reminder to a German or Austrian number costs €0.084 per segment, with no monthly fee. All templates above are one segment. A practice with 400 appointments a month pays €33.58 for its reminders; compare that with what a single empty slot costs.
send_at. The article on SMS length explains how segments are counted.