Every Laravel app we ship in Kenya sends SMS booking confirmations, receipt PINs, balance alerts, OTP, reminders. Every time, the same dance: pick a provider, paste the docs into a controller, build a thin wrapper, deal with the inevitable provider outage by switching gateways at 2am. That dance lives here now.
- Five providers behind one facade (Advanta, Africa's Talking, Onfon, Twilio, Nexmo)
- Queue-aware by default; FPM workers don't block on the SMS HTTP call
- Fallback chains with circuit-breaker semantics
- Per-recipient locale templates (English, Swahili, etc.)
- DLR webhooks land in
sms_messages; status movesqueued → sent → deliveredautomatically - Bulk surface for high-volume sends (10k+ in a window)
- Analytics dashboard you mount where you want