약속 불이행은 서비스 비즈니스에 연간 수천 달러의 손실을 초래합니다. 전날 간단한 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 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 |
스크립트 추가하기
확장 프로그램 → 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 통합이 가능한 예약 도구를 사용하는 경우:
- 트리거: "Google Calendar의 새 이벤트" (또는 Calendly, Acuity 등)
- 액션: 이벤트 1일 전까지 지연
- 액션: 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분 이내에 알림을 설정하세요.
Comments (0)
Be the first to comment!