약속 불이행은 서비스 비즈니스에 연간 수천 달러의 손실을 초래합니다. 전날 간단한 SMS 알림만으로도 노쇼를 30-50% 줄일 수 있습니다. 하지만 이를 위해 Twilio를 설정하는 것은 과도하게 느껴질 수 있으며, 비용도 만만치 않습니다.

여기 여러분의 휴대폰을 SMS 게이트웨이로 사용하여 아주 간단한 약속 알림 시스템을 구축하는 방법이 있습니다.

왜 굳이 Twilio를 사용하지 않는가?

한 달에 200개의 알림을 보내는 소규모 클리닉이나 미용실의 경우, Twilio 비용은 다음과 같습니다:

  • 메시지: 200 × $0.0079 = $1.58
  • 통신사 추가 요금: 200 × $0.003 = $0.60
  • 전화번호: 월 $1.15
  • 10DLC 등록: 월 $2 + 일회성 $15
  • 설정 시간: 1-2시간 (SDK, 인증, 등록)

총계: 월 ~$5.33 + 설정의 번거로움. 그리고 등록이 거부되면 (소규모 사업체에서 흔함) 곤란해집니다.

MySMSGate를 사용하면: 200 × $0.03 = 월 $6.00. 등록도, 설정의 번거로움도 없으며, 5분 안에 작동합니다. 환자들은 임의의 Twilio 번호가 아닌, 여러분의 실제 전화번호를 보게 됩니다.

옵션 1: Google Sheets + Apps Script (코드 불필요)

가장 간단한 접근 방식 — 이미 스프레드시트에서 약속을 추적하고 있다면 완벽합니다.

시트 설정하기

다음 열을 포함하는 Google Sheet를 만드세요:

A: Patient NameB: PhoneC: DateD: TimeE: Reminded
Sarah Johnson+120255512342026-03-103:00 PM
Mike Chen+120255556782026-03-104:30 PM

스크립트 추가하기

확장 프로그램 → Apps Script로 이동하여 다음 코드를 붙여넣으세요:

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");
    }
  }
}

일정 예약하기

Apps Script에서 트리거 → 트리거 추가로 이동하여:

  • 함수: sendReminders
  • 이벤트: 시간 기반 → 일 타이머 → 오전 9시–10시

완료되었습니다. 매일 아침, 스크립트가 다음 날 약속을 확인하고 자동으로 알림을 보냅니다.

옵션 2: Python 스크립트 (개발자용)

데이터베이스가 있는 예약 시스템을 사용하는 경우:

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()

cron으로 실행: 0 9 * * * python3 /path/to/reminders.py

옵션 3: Zapier / Make (코드 불필요)

Calendly, Google Calendar 또는 Zapier 통합이 가능한 예약 도구를 사용하는 경우:

  1. 트리거: "Google Calendar의 새 이벤트" (또는 Calendly, Acuity 등)
  2. 액션: 이벤트 1일 전까지 지연
  3. 액션: Webhooks by Zapier → https://mysmsgate.net/api/v1/send로 POST

헤더 설정: Authorization: Bearer YOUR_API_KEY

본문 설정: {"to": "{{phone}}", "message": "Hi {{name}}, reminder: your appointment is tomorrow at {{time}}."}

효과적인 알림을 위한 팁

  • 24시간 전에 보내기 — 환자가 일정을 변경할 시간을 줍니다
  • 시간 포함하기 — "내일"보다 "내일 오후 3시"가 좋습니다
  • 확인 요청하기 — "확인을 위해 YES라고 회신하세요"는 참여율을 높입니다
  • 간결하게 유지하기 — 1 SMS 세그먼트 (160자)가 이상적입니다
  • 사업체 이름 사용하기 — 환자들은 여러분의 번호가 실제 여러분의 번호이기 때문에 인지합니다

무료로 시작하기 — 10분 이내에 알림을 설정하세요.