Skip to main content
Version: Next (unreleased)

Providers Overview

Each provider is its own Go module implementing the core Provider interface. Install only the ones you use.

ProviderModuleBest for
Twiliogithub.com/KARTIKrocks/gosms/twilioGlobal SMS, scheduled sends, webhook delivery receipts
AWS SNSgithub.com/KARTIKrocks/gosms/snsTeams already on AWS; transactional/promotional SMS type, opt-out management
Vonagegithub.com/KARTIKrocks/gosms/vonageGlobal SMS with webhook delivery receipts
MSG91github.com/KARTIKrocks/gosms/msg91India — DLT-approved Flow templates, server-side OTP generation

All four satisfy the same Provider interface, so switching providers (or running several behind a MultiProvider) never changes call-site code beyond construction:

provider, err := twilio.NewProvider(twilio.Config{ /* ... */ })
// or: sns.NewProvider(ctx, sns.DefaultConfig())
// or: vonage.NewProvider(vonage.Config{ /* ... */ })
// or: msg91.NewProvider(msg91.Config{ /* ... */ })

client := gosms.NewClient(provider)
result, err := client.Send(ctx, "+15559876543", "Hello from gosms!")

Capability matrix

CapabilityTwilioSNSVonageMSG91
Free-text BodyFallback only — templated
Scheduled sends (WithSchedule)
Webhook ParseWebhook
OTPProvider
Account-level extrasOpt-out mgmt, SMS attributes

See each provider's page for configuration fields and provider-specific notes.