Implementing Automatic Booking Reminders (Email/SMS)
Automatic reminders reduce no-show rates. Customers receive notifications 24 hours and 2 hours before their appointment — via email or SMS — with details and the ability to cancel or reschedule.
Reminder System Structure
Booking Created
↓
Schedule Reminders
├── 24h before → Reminder Job (queued)
└── 2h before → Reminder Job (queued)
Reminder Job runs at scheduled time
├── Check: booking still active?
├── Send Email (Mailgun / Postmark)
└── Send SMS (Twilio / SMSAero)
Scheduling Reminders on Booking Creation
// Laravel Observer
class BookingObserver
{
public function created(Booking $booking): void
{
$bookingTime = $booking->starts_at;
// 24 hours before
if ($bookingTime->diffInHours(now()) > 24) {
SendBookingReminder::dispatch($booking->id, '24h')
->delay($bookingTime->subHours(24));
}
// 2 hours before
if ($bookingTime->diffInHours(now()) > 2) {
SendBookingReminder::dispatch($booking->id, '2h')
->delay($bookingTime->subHours(2));
}
}
}
Email Reminder
class SendBookingReminder implements ShouldQueue
{
public function handle(): void
{
$booking = Booking::find($this->bookingId);
// Check that booking is still active
if (!$booking || $booking->status !== 'confirmed') {
return;
}
Mail::to($booking->customer_email)->send(
new BookingReminderMail($booking, $this->reminderType)
);
if ($booking->customer_phone && $booking->sms_opt_in) {
$this->sendSms($booking);
}
}
private function sendSms(Booking $booking): void
{
$message = "Reminder: your appointment " .
$booking->starts_at->format('d.m at H:i') .
". Cancel: " . route('bookings.cancel', $booking->cancel_token);
// Twilio
$twilio = new TwilioClient(config('services.twilio.sid'), config('services.twilio.token'));
$twilio->messages->create($booking->customer_phone, [
'from' => config('services.twilio.from'),
'body' => $message,
]);
}
}
Cancelling Reminders
When a booking is cancelled, scheduled jobs must be removed from the queue. In Laravel, this is achieved through unique job IDs and status checks at the beginning of task execution (as in the code above).
SMS Providers for Russia
| Provider | API | Features |
|---|---|---|
| SMSAero | REST | Cheap rates, good quality |
| MTS Kommunikator | REST | Direct MTS routes |
| Twilio | REST | International delivery |
| SMSC.ru | REST | Simple API |
Timeline
Email + SMS reminders with cancellation on booking cancellation: 3–5 business days.







