Unified Provider Interface
One Send / SendBulk / GetStatus contract across every backend
One Provider interface for Twilio, AWS SNS, Vonage, and MSG91 — each behind its own Go module, so you only pull in the dependencies for the providers you actually use.
go get github.com/KARTIKrocks/gosmsOne Send / SendBulk / GetStatus contract across every backend
Each provider is its own Go module — pull in only the dependencies you use
The root module has no third-party dependencies at all
Fluent API for scheduling, validity, references, and metadata
Fallback and round-robin strategies across multiple backends
Status polling plus webhook parsing for Twilio, Vonage, and MSG91
E.164 validation, normalization, and GSM/UCS-2 segment counting
Send / verify / resend via the optional OTPProvider capability
In-memory provider with failure injection for tests
Every provider ships its own SDK with its own request shape, its own error strings, and its own webhook format. gosms gives you one interface, one error set, and one webhook-parsing convention — and keeps each provider in its own module so switching (or supporting more than one) doesn't drag in dependencies you don't need.
| Capability | gosms | Provider SDK directly |
|---|---|---|
| One interface across Twilio, SNS, Vonage, and MSG91 | Included | You build it |
| Only pull the dependencies for providers you use | Included | You build it |
| Delivery status polling + webhook parsing | Included | You build it |
| Fallback and round-robin across providers | Included | You build it |
| E.164 validation, normalization, segment counting | Included | You build it |
| DLT template variables and OTP flow (MSG91) | Included | You build it |
| Mock provider with failure/latency injection | Included | You build it |
Install only the ones you need — go get github.com/KARTIKrocks/gosms/{provider}.
Global SMS, scheduled sends, webhook status
Transactional/promotional SMS, opt-out management
Global SMS with webhook delivery receipts
India DLT Flow templates, server-side OTP