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:

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 NameB: PhoneC: DateD: TimeE: Reminded
Sarah Johnson+120255512342026-03-103:00 PM
Mike Chen+120255556782026-03-104: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:

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:

  1. Trigger: "New event in Google Calendar" (or Calendly, Acuity, etc.)
  2. Action: Delay until 1 day before the event
  3. 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

Get started free — set up reminders in under 10 minutes.