Most businesses can tell you how many SMS they sent last month. Far fewer can tell you what those messages earned.
That gap is understandable. SMS feels cheap, so it rarely gets the scrutiny that a Google Ads budget does. But “cheap” adds up quickly when you’re sending lakhs of messages a quarter, and without clear numbers you can’t tell a campaign that’s quietly printing money from one that’s quietly annoying your customers.
The good news is that you don’t need a data team to measure SMS properly. You need five numbers, a simple formula and the discipline to check them after every campaign. Here’s how to do it.

First, the ROI formula
Before we get to the metrics, it helps to know where they’re leading. SMS campaign ROI uses the same formula as any other channel:
ROI = (Revenue from campaign − Total campaign cost) ÷ Total campaign cost × 100
Two things trip people up here.
Total cost is more than the per-SMS rate. Include platform fees, the time spent writing and testing messages, any discount you gave away, and DLT-related setup if it’s a new template. Leaving these out makes every campaign look better than it was.
Revenue should be attributable. Use unique coupon codes or UTM-tagged links for each campaign so you can trace a sale back to a specific message. “Sales went up that week” isn’t attribution.
The five metrics below are the levers that move that ROI number up or down.
1. Delivery rate
What it is: the percentage of sent messages that actually reached a handset.
Delivery rate = (Messages delivered ÷ Messages sent) × 100
Everything downstream depends on this. A brilliant offer earns nothing if it’s stuck in a failed queue. Low delivery usually points to one of three things: an old contact list full of inactive numbers, templates or headers that don’t match your DLT registration, or a provider with weak operator routes.
In India, there’s a newer trap too. Since 1 October 2024, TRAI has required operators to block SMS that contain URLs, APKs or OTT links that haven’t been whitelisted by the sender. If your delivery rate suddenly drops on campaigns with links, check your whitelisting before blaming the copy.
If delivery stays low after you’ve cleaned your list and fixed your templates, look at your vendor. Delivery reports, route quality and support response times vary widely, so it’s worth spending an hour reviewing bulk SMS providers in India side by side rather than staying with whoever you signed up with three years ago.
2. Click-through rate (CTR)
What it is: the percentage of delivered messages where someone tapped your link.
CTR = (Unique clicks ÷ Messages delivered) × 100
Note the denominator: delivered, not sent. Measuring against sent messages hides delivery problems inside your CTR and makes your copy look worse than it is.
CTR tells you whether the message itself worked: the offer, the wording, the timing. A few habits that consistently help:
- Put the benefit in the first line. Many phones show only a preview.
- Use one link and one clear action. Two choices often means zero clicks.
- Send when people actually read messages. For most consumer brands that’s not 7 a.m. on a Monday.
- Use a branded short link, so the message looks trustworthy rather than like a scam.
If your CTR is healthy but sales aren’t following, the problem has moved past the SMS and onto your landing page.
3. Conversion rate
What it is: the percentage of people who clicked and then completed the action you wanted, such as a purchase, a booking or a form fill.
Conversion rate = (Conversions ÷ Unique clicks) × 100
This is where SMS campaigns are often won or lost, and it’s mostly out of the message’s hands. Someone tapped your link on a phone, so the page they land on has to load fast, show the exact offer from the SMS and let them act in as few taps as possible.
A common mistake is sending a specific offer (“20% off running shoes”) to a generic homepage. The customer has to hunt for the deal, and many won’t bother. Matching the landing page to the message is one of the cheapest conversion fixes there is.
4. Cost per acquisition (CPA)
What it is: how much you spent to win each conversion.
CPA = Total campaign cost ÷ Number of conversions
CPA is the metric that lets you compare SMS fairly with your other channels. If SMS brings in a customer for ₹150 and paid social costs ₹400 for the same customer, that’s a strong case for shifting budget, even if the SMS campaign’s total revenue looks smaller.
Track CPA by campaign type, too. Abandoned-cart reminders, festive sale blasts and win-back messages behave very differently, and lumping them together hides which ones are actually worth running.
5. Opt-out rate
What it is: the percentage of recipients who unsubscribed after a campaign.
Opt-out rate = (Opt-outs ÷ Messages delivered) × 100
This is the metric people forget, and it’s the one that protects the other four over time. Every opt-out is a customer you can no longer reach on your cheapest direct channel. A campaign that converts well but drives a spike in unsubscribes may be borrowing from future revenue.
Rising opt-outs usually mean you’re sending too often, sending irrelevant offers, or sending promotional messages to people who only expected updates. That last one matters. Keep order confirmations, delivery updates and OTPs on a proper transactional SMS service, and keep promotions separate. Customers value the first kind; mixing in sales pitches erodes that trust, and it can also put you on the wrong side of DLT category rules.
Putting it together: a worked example
Here’s how the five metrics roll up into ROI. The numbers below are illustrative, not a benchmark. Plug in your own.
Say an online store sends a weekend-sale SMS to 50,000 customers. The SMS cost is ₹10,000 and creative, tooling and team time add another ₹5,000, so the total cost is ₹15,000.
| Metric | Calculation | Result |
| Delivery rate | 48,000 delivered ÷ 50,000 sent | 96% |
| CTR | 1,920 clicks ÷ 48,000 delivered | 4% |
| Conversion rate | 96 orders ÷ 1,920 clicks | 5% |
| CPA | ₹15,000 ÷ 96 orders | ₹156 |
| Opt-out rate | 240 opt-outs ÷ 48,000 delivered | 0.5% |
With an average order value of ₹1,200, those 96 orders bring in ₹1,15,200 in revenue.
- Revenue ROI: (₹1,15,200 − ₹15,000) ÷ ₹15,000 × 100 = 668%
- Profit ROI at a 40% gross margin: (₹46,080 − ₹15,000) ÷ ₹15,000 × 100 = 207%
That second number is the honest one. Revenue ROI flatters every channel. If you want to know whether a campaign genuinely made money, calculate ROI on gross profit.
The example also shows where to look next. If you could lift delivery from 96% to 98% and conversion from 5% to 6% with a better landing page, orders would rise from 96 to about 113 without sending a single extra message.
A few habits that make SMS ROI easier to trust
- Use a control group. Hold back 5–10% of your list from each campaign. If they buy almost as much as the group that got the SMS, your message isn’t driving the sales you think it is.
- Set an attribution window and stick to it. Twenty-four to seventy-two hours suits most promotional SMS. Pick one and use it consistently so campaigns stay comparable.
- Review after every campaign, not every quarter. Five minutes with these numbers right after a send teaches you more than a long report three months later.
The bottom line
SMS is still one of the most direct ways to reach a customer, but only if you treat it like a channel that has to earn its place. Watch delivery rate, CTR, conversion rate, CPA and opt-out rate after every campaign, and calculate ROI on profit rather than revenue.
Do that for a couple of months and you’ll stop guessing. You’ll know exactly which messages pay for themselves, and which ones you can stop sending tomorrow.









