Missed appointments cost service businesses thousands of dollars per year. A simple SMS reminder the day before can reduce no-shows by 30-50%. But setting up Twilio for this feels like overkill — and the costs add up.
Here's how to build a dead-simple appointment reminder system using your own phone as the SMS gateway.
Why Not Just Use Twilio?
For a small clinic or salon sending 200 reminders/month, Twilio costs:
- Messages: 200 × $0.0079 = $1.58
- Carrier surcharges: 200 × $0.003 = $0.60
- Phone number: $1.15/month
- 10DLC registration: $2/month + $15 one-time
- Time to set up: 1-2 hours (SDK, verification, registration)
Total: ~$5.33/month + setup headache. And if registration gets rejected (common for small businesses), you're stuck.
With MySMSGate: 200 × $0.03 = $6.00/month. No registration, no setup headache, working in 5 minutes. Your patients see your actual phone number — not a random Twilio number.
Option 1: Google Sheets + Apps Script (No Code)
The simplest approach — perfect if you already track appointments in a spreadsheet.
Set Up Your Sheet
Create a Google Sheet with columns:
| A: Patient Name | B: Phone | C: Date | D: Time | E: Reminded |
|---|---|---|---|---|
| Sarah Johnson | +12025551234 | 2026-03-10 | 3:00 PM | |
| Mike Chen | +12025555678 | 2026-03-10 | 4:30 PM |
Add the Script
Go to Extensions → Apps Script, paste this code:
function sendReminders() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
var tomorrowStr = Utilities.formatDate(tomorrow, "GMT", "yyyy-MM-dd");
for (var i = 1; i < data.length; i++) {
var name = data[i][0];
var phone = data[i][1];
var date = Utilities.formatDate(new Date(data[i][2]), "GMT", "yyyy-MM-dd");
var time = data[i][3];
var reminded = data[i][4];
if (date === tomorrowStr && !reminded) {
var message = "Hi " + name + ", reminder: your appointment is tomorrow at " + time + ". Reply YES to confirm or call to reschedule.";
UrlFetchApp.fetch("https://mysmsgate.net/api/v1/send", {
method: "post",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
payload: JSON.stringify({to: phone, message: message})
});
sheet.getRange(i + 1, 5).setValue("Yes");
}
}
}
Schedule It
In Apps Script, go to Triggers → Add Trigger:
- Function:
sendReminders - Event: Time-driven → Day timer → 9am–10am
Done. Every morning, the script checks tomorrow's appointments and sends reminders automatically.
Option 2: Python Script (Developer)
If you have a booking system with a database:
import requests
import sqlite3
from datetime import date, timedelta
API_KEY = "YOUR_API_KEY"
tomorrow = date.today() + timedelta(days=1)
db = sqlite3.connect("bookings.db")
appointments = db.execute(
"SELECT name, phone, time FROM appointments WHERE date = ? AND reminded = 0",
(tomorrow.isoformat(),)
).fetchall()
for name, phone, time in appointments:
message = f"Hi {name}, reminder: your appointment is tomorrow at {time}. Reply YES to confirm."
response = requests.post(
"https://mysmsgate.net/api/v1/send",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"to": phone, "message": message}
)
if response.json().get("success"):
db.execute("UPDATE appointments SET reminded = 1 WHERE phone = ? AND date = ?",
(phone, tomorrow.isoformat()))
db.commit()
Run with cron: 0 9 * * * python3 /path/to/reminders.py
Option 3: Zapier / Make (No Code)
If you use Calendly, Google Calendar, or any booking tool with Zapier integration:
- Trigger: "New event in Google Calendar" (or Calendly, Acuity, etc.)
- Action: Delay until 1 day before the event
- Action: Webhooks by Zapier → POST to
https://mysmsgate.net/api/v1/send
Set headers: Authorization: Bearer YOUR_API_KEY
Set body: {"to": "{{phone}}", "message": "Hi {{name}}, reminder: your appointment is tomorrow at {{time}}."}
Tips for Effective Reminders
- Send 24 hours before — gives patients time to reschedule
- Include the time — "tomorrow at 3 PM" is better than "tomorrow"
- Ask for confirmation — "Reply YES to confirm" increases engagement
- Keep it short — 1 SMS segment (160 characters) is ideal
- Use your business name — patients recognize your number because it IS your number
Get started free — set up reminders in under 10 minutes.