We use optional, privacy-safe analytics to understand which pages help visitors. Nothing optional runs until you choose. Privacy policy

Skip to content
Example deployment

Example deployment: appointment reminders

A scheduling system sends reminders ahead of each appointment; "reply YES to confirm" answers flip the booking to confirmed through the webhook, and anything else becomes a staff task.

This is an example architecture, not a customer case study — use it as a technical starting point for your own deployment.

Book an Integration Review

The business problem

No-shows cost real money, and phone-call reminders don't scale. Email reminders get opened after the appointment has already been missed.

Recommended architecture

How it fits together: Scheduling system, then Reminder job, then SendiMessage API, then Managed messaging line, then Customer, then Confirmation reply, then Webhook, then Appointment status update.
  1. Scheduling systemBookings with dates, phones, and status
  2. Reminder jobCron selects tomorrow's bookings
  3. SendiMessage APIPOST /send-message with the booking id
  4. Managed messaging lineThe clinic/location's dedicated line
  5. CustomerReminder arrives the day before
  6. Confirmation reply"YES" — or a reschedule request
  7. Webhookreceive with the booking id
  8. Appointment status updateConfirmed automatically, or a task for staff

System trigger

A scheduled job (cron, queue worker, or your booking platform's automation) selects appointments in the next 24 hours and sends one clear reminder each. A same-day nudge is optional for high no-show contexts.

ReminderConfirmation requestReschedule promptCancellation acknowledgement

SendiMessage API request

send message
curl -sS https://api.sendimessage.com/v1/send-message \
-H "X-API-Key: $SENDIMESSAGE_KEY" \
-H "X-API-Secret: $SENDIMESSAGE_SECRET" \
-H "Content-Type: application/json" \
-d '{
"number": "+15555550123",
"content": "Hi Anna, your appointment is tomorrow at 10:00 AM. Reply YES to confirm.",
"status_callback": "https://your-endpoint.example.com/status?booking_id=apt_2210&workflow=reminder_24h"
}'
# → {
# "status": "QUEUED",
# "message_handle": "4e828182-a640-483f-bfe9-17ffcaa51d48",
# "to": "+14155550123",
# "service": null,
# "is_outbound": true,
# "error_message": null,
# "date_sent": null
# }

Channel behavior and SMS fallback

Reminders read equally well on either channel; "auto" maximizes deliverability. iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.

Incoming replies

Your webhook handler applies a simple rule: YES confirms the booking via your scheduling system's API; any other reply creates a staff task with the message text. Delivery events double as an audit trail for no-show disputes.

webhook event
// "outbound" event → your scheduler endpoint
// Verify the SendiMessage-Signature header (t={timestamp},v1=HMAC-SHA256 of
// "{timestamp}.{raw body}", keyed with your webhook secret), then use
// GET /v2/messages/{message_handle} for authoritative state and match it to
// your booking_id in scheduler.

Messaging-line setup

One line per clinic, location, or region — customers learn to recognize the number.

Security checklist

  • API key in server environment variables or a secrets manager — never in client code.
  • Webhook signatures verified before any record is updated.
  • Only the fields a message needs (phone, first name, reference id) leave your system.

Run the full implementation readiness checklist →

Pricing and managed onboarding

Per active line plus usage. Reminder volume tracks appointment count — bring your monthly booking numbers to the pricing review. Every line goes through managed onboarding: use-case review, test line, credentials delivered securely, and guided production activation.

Want this setup?

Request the setup and the team will map this example to your systems, or book a review to talk it through first.

Book an Integration Review