laravel-notification-channels/smspoh
Laravel notification channel for SMSPoh that lets you send SMS messages through the SMSPoh gateway using Laravel's native notification system. Configure your API credentials and sender, then deliver SMS notifications via a dedicated channel.
unicode()) removes a real prior blocker: Burmese-script messages, not just transliterated English, can now ship as a first-class feature rather than a workaround.encrypt() / encryptKey() plus clientReference() move this from "generic alerts" into the fintech-adjacent use case: OTPs, balance and transaction alerts, and anything where interception or replay is a real threat model. That expands which features can be built on this channel — but pushes key management, rotation, and audit into our scope, not the package's.deliveryReceiptUrl($url) lets us register a per-message webhook at runtime instead of configuring callbacks in the vendor dashboard. That makes per-message receipt capture a code-level, environment-parameterised concern — a prerequisite for per-message cost attribution and suppression-list hygiene. The receipt endpoint, verification, and reconciliation logic remain ours to build.Notification facade, it becomes one swappable driver behind our own thin SmsSender interface. This lets us pilot SMSPoh for Myanmar while keeping Twilio/Vonage for other geographies — a multi-provider decision we can defer until volume data exists. clientReference() makes that abstraction cleaner, since we can carry our own message IDs across providers.Adopt when:
Notifiable models or Notification::route().laravel-notification-channels has a consistent, well-understood package shape: credentials in config, a message class, a routing method).Look elsewhere when:
Upgrade note (existing v1 integrations): v2.0.0 is breaking — token becomes key + secret, sender becomes from, and SmspohMessage->sender() is deprecated in favour of from(). Budget this as a scheduled, coordinated change: env-var renames mean credential rotation with the vendor and a deploy that touches secrets management, not just application code. Pin v1 until the upgrade is planned, then pin v2.
For executives: This is a small, MIT-licensed adapter that lets our Laravel application send SMS through SMSPoh — a local Myanmar gateway — using the notification system we already have. The new v2.0.0 release closes most of the gaps that would previously have justified building our own: scheduled messages, encrypted sensitive alerts, Burmese Unicode text, and per-message delivery receipts are now supported out of the box, and the package tracks current Laravel. Integration cost remains on the order of one engineering day, adds no new infrastructure, and is reversible: the code is a thin driver we can fork or replace. It's the lowest-cost way to test whether SMS notifications move the needle in Myanmar before we sign a larger multi-country contract.
For engineering: Standard laravel-notification-channels pattern — credentials (key/secret) and from in config/services.php, a message class, a routing method on the notifiable, and compatibility with Notification::fake(). v2.0.0 adds fluent options on the message: scheduledAt(), encrypt()/encryptKey(), unicode(), deliveryReceiptUrl(), clientReference(). No SDKs, no daemons. Two things to plan for: (1) the v1→v2 upgrade is breaking at the config and ENV level, so sequence it with a credential rotation and avoid a half-migrated deploy; (2) our recommendation stands to wrap it behind an internal SmsSender/SmsChannel interface from day one so Twilio or a second regional provider can sit alongside it without touching product code. Add our own logging around send attempts and our own receipt endpoint behind deliveryReceiptUrl() — including signature/authenticity checks, idempotency on clientReference, and persistence — so observability and cost attribution stay provider-independent, and so encryption key custody remains an explicit, reviewed decision rather than an implicit one.
Caveats to state up front: low adoption and a narrow maintainer base still mean we should pin the version, vendor the package if it goes quiet, and avoid depending on it for anything beyond message dispatch and receipt emission. Treat SMS cost per message, sender ID registration, opt-out/compliance obligations, and — for encrypted messages — key management policy as vendor and legal/security workstreams, not engineering ones.
How can I help you explore Laravel packages today?