Slotara can send outbound SMS to clients for booking events using each tenant's own Twilio account. SMS mirrors the existing email notification architecture and is fully opt-in at both the super-admin and tenant level.
Each tenant configures their own Twilio credentials in the Business Panel. Messages are sent via Twilio's REST API and billed directly to the tenant's Twilio account. Slotara never stores or proxies Twilio API keys in plain text โ credentials are encrypted at rest.
| Event | When sent |
|---|---|
| Booking confirmation | After booking is confirmed (or after payment if pay-at-booking is enabled) |
| Appointment reminder | Day before the appointment (same schedule as email reminders) |
| Cancellation | When client or admin cancels a booking |
| Reschedule | When admin reschedules via the Bookings panel |
Note: Clients must have a phone number on their booking to receive SMS.
Each SMS job checks the following before sending:
phone numberTenantSmsSettings::canSend() โ master switch is on and Twilio credentials are validsms_confirmation)NotificationPreference::isSmsEnabled() โ platform opt-in is active for this eventsms_reminder_sent_at is not already set (idempotency guard)The appointment reminder job is dispatched by the Laravel scheduler. Ensure your cron is configured:
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1
Booking confirmed
โโโบ SendBookingConfirmationSms (queued job)
โโโบ TenantSmsSettings::canSend()?
โโโบ NotificationPreference check
โโโบ TwilioSmsService::send()
php artisan appointments:send-reminders (scheduled daily)
โโโบ SendBookingReminderSms
โโโบ skip if sms_reminder_sent_at set
โโโบ TwilioSmsService::send() โ sets sms_reminder_sent_at
Booking cancelled / rescheduled
โโโบ SendBookingCancellationSms / SendBookingRescheduledSms
| File | Purpose |
|---|---|
app/Support/TenantSmsSettings.php |
Settings accessor / validator |
app/Services/TwilioSmsService.php |
Twilio API wrapper |
app/Services/BookingSmsMessageService.php |
Message body builder |
app/Jobs/SendBooking*Sms.php |
Queued jobs (one per event) |
app/Filament/Tenant/Pages/SmsSettings.php |
Tenant settings page |
tests/Feature/SmsTest.php |
Feature test suite |