Key Takeaways
- Laravel OTP templates on an Android SMS gateway should stay short, GSM-7, and hash-friendly — not a branded paragraph that concatenates.
- Notifications/Mailables are the wrong metaphor. This is SMS parts billed by the operator.
- We do not ship a Composer SMS SDK. Http::withToken from env to POST /messages. Confirm fields in Developer Center.
- Isolate OTP devices. Cap resends. Idempotency-Key per challenge.
- You bring the phone and operator credit. Platform pricing is devices plus send volume.
A template is 160 characters of physics
Hub: OTP verification. API: Android SMS gateway API. Laravel: laravel.com/docs. Live JSON: Developer Center.
We meter devices and volume. A prettier string still burns operator parts.
GSM-7, hash, no poetry
Digits + app name the Retriever hash expects. SMS Retriever. Emoji, smart quotes, and long “Dear customer” wrappers jump to UCS-2.
“If marketing wrote the OTP SMS, you are paying for concatenation and losing autofill. Give them a landing page instead.”
Template mistakes
| Choice | What happens | Do |
|---|---|---|
| 6 digits + short brand | Usually 1 GSM-7 part | Keep it |
| Hash not on its own line | Retriever miss | Follow Google’s layout |
| Localized Unicode greeting | UCS-2 / 2+ parts | Localize the app UI |
| Code in a Mail Markdown view | HTML artifacts in SMS | Plain string in the job |
| Same template as promo | STOP language on login | Separate classes |
Laravel sends HTTPS, not a package
Queue a job. Http::withToken(env('SMS_GATEWAY_API_KEY')) to POST /api/v1/messages. Samples (REST, not SDK): PHP HTTPS/JSON. HMAC: webhooks.
Pin the OTP phone
Named deviceId. Setup: pairing. Pricing.
Next steps
Render one template, count parts, canary Retriever. Operator credit stays yours.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- OTP and 2FA SMS on AndroidAuthentication flows
- SMS API documentationLive endpoint reference
- PHP REST send samplesPHP code examples
- device and SMS volume pricingPlans and allowances





