SMSLocal
Getting started

AWS SMS: Send SMS With Amazon SNS & Pinpoint (2026)

How to send SMS on AWS with Amazon SNS and AWS End User Messaging (Pinpoint) — the two services compared, India DLT and sender-ID setup, the sandbox, pricing, and when a dedicated provider is faster.

SMSLocal Team· Product, compliance & engineering10 min read
Illustration of sending SMS on AWS — an Amazon SNS publish call delivering a text message to a phone, with a dark navy and cyan interface.

AWS sends SMS two ways: Amazon SNS for simple, one-line transactional texts, and AWS End User Messaging (the service formerly called Amazon Pinpoint SMS) for two-way messaging, campaigns, and dedicated sender IDs. Both are powerful and pay-as-you-go — but sending to Indian numbers adds DLT registration, a sender-ID approval step, and a sandbox you must escape first. This guide covers every part.

The two ways AWS sends SMS

There isn't a single “AWS SMS” product. Two services send text messages, and picking the right one matters:

Amazon SNSAWS End User Messaging (Pinpoint SMS)
Best forTransactional OTPs & alertsCampaigns, two-way, marketing
Send modelPublish to a number or topicSend + receive, with events
Two-way / repliesNoYes
Dedicated sender ID / numberBasicFull (sender IDs, long/short codes)
Opt-out managementManualBuilt-in keyword handling
Setup effortMinutesMore — pools, config sets, phone numbers
Rule of thumb: SNS for a quick one-way OTP; End User Messaging when you need replies, campaigns, or a managed sender ID.

Amazon SNS — the fastest path to a text

Amazon Simple Notification Service (SNS) can send an SMS with a single Publish call — no phone-number resource to provision. You either publish directly to a phone number in E.164 format, or publish to an SNS topic that fans out to many subscribers.

A minimal send

  1. Create an IAM user or role with sns:Publish permission.
  2. Set your account's default SMS type — Transactional (higher priority, for OTPs) or Promotional.
  3. Call Publish with a PhoneNumber like +9199XXXXXXXX and a Message body.
  4. Read the delivery status from CloudWatch / delivery-status logs.

It's the same request whether you call it from the CLI, an SDK, or a Lambda — which is why SNS is the go-to for wiring an OTP into an existing AWS backend. If you just need to push a code from code, this is the shortest route; our guide to the SMS API shows the equivalent on a dedicated Indian platform.

Diagram of an Amazon SNS Publish call sending an SMS OTP from an AWS Lambda backend to a phone.
With Amazon SNS, a single Publish call from Lambda or any SDK sends a transactional SMS — no phone-number resource to provision first.

AWS End User Messaging — for campaigns and two-way

AWS renamed the SMS and voice side of Amazon Pinpoint to AWS End User Messaging in 2024. This is the richer service: you provision origination identities (sender IDs, long codes, short codes), group them into phone pools, attach configuration sets for event logging, and handle inbound replies and opt-out keywords automatically.

  • Two-way SMS. Receive replies and route them to an SNS topic or Amazon Connect.
  • Opt-out lists. STOP/UNSUBSCRIBE handling is managed for you.
  • Event stream. Per-message delivery, bounce, and complaint events to Kinesis/CloudWatch.
  • Sender IDs. Register a branded alphabetic sender ID where the country supports it — including India.
Comparison illustration of Amazon SNS versus AWS End User Messaging (Pinpoint) for sending SMS.
SNS is a one-line publish; AWS End User Messaging adds pools, sender IDs, two-way replies, and opt-out handling for real campaigns.

Sending SMS on AWS in India: the DLT catch

This is where teams get stuck. India's TRAI regulations require every business sender to be registered on a telecom-operator DLT platform, and AWS enforces it. To deliver to Indian numbers you must supply, per message, your DLT Entity ID and Template ID, and send from a registered Sender ID (Header) that matches an approved template.

  1. Complete DLT registration — Principal Entity, Header (sender ID), and content templates — on a DLT portal (Jio, Airtel, Vodafone Idea, or BSNL).
  2. Register your Sender ID and templates inside AWS End User Messaging, mapping them to the DLT Entity ID and Template ID.
  3. Pass the Entity ID and Template ID as message attributes on every send, or the operator rejects the message.

The SMS sandbox and spending limits

Two account-level gates trip up first-time senders:

  • The SMS sandbox.Every new AWS account starts in a sandbox that can only send to phone numbers you've verified. You must open a support case to move to production before you can text real customers.
  • Monthly spend quota.AWS sets a low default SMS spending limit (historically about $1/month). Until you request an increase, sends stop the moment you hit it — a classic “why did my OTPs stop” surprise in production.

AWS SMS pricing, briefly

Both services are pay-as-you-go with no minimum. You pay a per-message price that varies by destination country and, in India, by the carrier and message type. On top of the AWS price there can be operator/DLT fees. AWS also bills for inbound (two-way) messages and for dedicated numbers.

Because Indian carrier rates and DLT fees change, always price against AWS's current India rate card rather than a number you read in a blog. For a plain-English comparison of how Indian SMS is priced across platforms, see our guide to sending SMS online in India.

Step diagram of sending DLT-compliant SMS through AWS in India — DLT registration, sender ID mapping, and passing Entity and Template IDs.
The Indian AWS SMS path: register on DLT, map your sender ID and templates in AWS, then pass the Entity and Template IDs on every send.

Quick setup checklist

  1. Create an IAM role scoped to only the SNS / End User Messaging actions you need.
  2. Choose the service: SNS for one-way OTPs, End User Messaging for two-way or campaigns.
  3. Request production access (leave the SMS sandbox) and raise your monthly spend limit.
  4. For India: finish DLT registration, then register the sender ID and templates in AWS.
  5. Set up a configuration set / delivery-status logging so you can actually see failures.
  6. Send a test to a verified number, confirm the delivery event, then go live.

When AWS SMS is the right call — and when it isn't

If your stack already lives on AWS and you have the DevOps capacity to manage DLT registration, sender-ID mapping, the sandbox, and delivery monitoring yourself, AWS SMS is a solid, scalable choice that keeps everything in one bill.

But if you're India-first, want DLT and sender-ID onboarding handled for you, need someone to call when the operator route misbehaves, or just don't want to run the template-mapping gauntlet, a dedicated Indian provider gets you to first-message faster — often the same day — with delivery support built in.

If you need…AWS SMSDedicated India provider
Everything inside your AWS billYesSeparate
DLT & sender ID handled for youYou do itDone for you
Time to first live SMS in IndiaDays–weeksOften same day
Hands-on delivery supportSupport planIncluded
Deep AWS-native automationBestVia API/webhooks
AWS wins on AWS-native depth; a dedicated provider wins on India onboarding speed and delivery support.

Frequently asked questions

Amazon SNS sends simple one-way SMS with a single Publish call — ideal for OTPs and alerts. AWS End User Messaging (formerly Amazon Pinpoint SMS) adds two-way messaging, dedicated sender IDs and numbers, opt-out handling, and per-message events — for campaigns and conversational use. Use SNS for transactional; End User Messaging for everything richer.
Yes, but you must be DLT-registered. You supply your DLT Entity ID and Template ID on every message and send from a sender ID that maps to an approved template. Without a byte-exact template match, the operator drops the message even though AWS reports it as sent.
The three usual causes: your account is still in the SMS sandbox (only verified numbers receive), you hit the default monthly spend limit, or — in India — the message doesn't match an approved DLT template. Check the delivery-status logs / configuration-set events to see which.
It's pay-as-you-go per message, priced by destination country and, in India, by carrier and message type, plus any operator/DLT fees. Two-way messages and dedicated numbers are billed separately. Always check AWS's current India rate card for exact figures.
Yes. DLT registration is a TRAI requirement on the sender, independent of which platform you send through. AWS enforces it for Indian traffic — it does not replace it. A provider like SMSLocal can complete DLT onboarding on your behalf.
For AWS-native apps, yes — Amazon SNS transactional SMS is a common OTP path. Just budget for the sandbox exit, the spend-limit increase, and (in India) DLT template registration before you rely on it in production.
AWS itself was never the problem — DLT template mismatches were. We spent more time on sender-ID and template paperwork than on the actual integration.
An engineer who migrated an OTP flow off AWS SNS in India

₹60 free credit. No credit card.

Open a live account, send your first DLT-compliant SMS, and keep the test balance forever.