Quick Summary
India’s DLT framework has made SMS delivery a regulated, multi-layered process in which the entity, sender header, template, and consent basis must align. When a message drifts from its registered template or routing configuration, operators can silently scrub it even while the aggregator reports it as submitted or delivered.
The key to preventing these failures is to treat registered SMS templates as production code, monitor delivery by operator, test OTPs on real carrier handsets, and track incomplete verification attempts. This practical discipline helps businesses identify silent delivery failures before they turn into lost logins, customers, and conversions.
Introduction
On a Monday morning, a Hyderabad D2C brand watches checkout conversions drop by a fifth. Nothing was deployed over the weekend. The payment gateway is fine, the site is fast, the ads are running. Support has no tickets because the customers who hit the problem did not write in – they waited for a code, tapped resend twice, and left.
The engineering team spends two days looking at the wrong layer. The aggregator accepted the message. The aggregator’s dashboard shows it as submitted. Somewhere between that dashboard and a handset on Jio, the message stopped existing, and nothing in the stack says why.
What DLT Actually Changed

Since TRAI’s commercial communications rules pushed the industry onto distributed ledger registration, sending a business message in India is no longer a matter of having a gateway and a sender name. Four things have to be registered and, more importantly, have to agree with each other: the entity, the header that appears as the sender, the content template, and the consent basis.
Operators scrub at delivery. If the text your system generates does not match a registered template, the message does not bounce with a useful error – it is dropped, quietly, after being accepted upstream. That single design decision explains most of the confusion Indian teams have about OTP delivery, and it is why a business needs to test what a real handset actually receives rather than trusting a delivery report. Teams doing that at any scale end up either holding SIMs in-house or using business SMS verification to see the message as a customer would.
Either way, the point is the same: the only reliable signal is a code that arrived on a real carrier line.
Why the Failure is Silent by Design
“All the Principal Entities (Sender or Businesses, Private as well Government bodies) who are using the telecom resources to send bulk messages to their customer, have to fulfill the regulatory requirements under TCCCPR, 2018.”TRAI
A rejected message and a scrubbed message look nothing alike from the sender’s side. A rejection comes back with a status. Scrubbing happens after acceptance, at the operator, which means the aggregator has already written “submitted” into your logs.
Delivery receipts do not reliably close the gap either. They are generated at different points by different intermediaries, and a receipt that says “delivered” tells you the message left the aggregator, not that a person’s phone buzzed. Teams that build alerts on aggregate delivery percentages are watching a metric that can remain comfortable even when an entire cohort of customers cannot log in.
The 4 Things that Must Agree
- The entity. Registration sits with the business, not the vendor. Change aggregators and the registration travels with you, but the mapping between your entity and the new intermediary has to be redone, and traffic sent during that gap is the classic post-migration outage.
- The header. The six-character sender ID is registered against a specific entity and a specific category of traffic. Sending transactional content from a header registered for promotional use is a common, entirely invisible way for messages to disappear.
- The template. This is where most breakage happens. Templates are registered with fixed text and variable placeholders. Marketing changes a word, a developer adds a line, someone shortens a message to save a segment – and the message no longer matches. The code stops arriving for everyone immediately, with no deploy anyone would connect to.
- The consent basis. Promotional traffic and service traffic are treated differently, and misclassification is a compliance issue rather than only a delivery one. Getting this wrong is the version of the problem that has consequences beyond a conversion dip.

What Breaks in Practice
“A delivery report only tells you the message left the aggregator. Only a code that arrives on a real carrier line tells you the customer got it.”SMS-Act
Template drift is the leading cause and the easiest to prevent. If the exact string that goes to the operator is assembled in application code, then any edit to that string is a production change to a regulated artifact. Most teams do not treat it that way, because it looks like copy.
Variable fields cause the second wave. Placeholders have length and type constraints, and a value that overruns them fails the match. A brand name that grew by three characters after a rebrand is enough.
Aggregator changes cause the third. Routes get switched for cost, and a route that works on one operator may sit behind a different scrubbing configuration on another. Nothing in your code changed, which is exactly why nobody looks there.
There is a fourth that only appears in larger organizations. Registration is an administrative asset, and administrative assets drift when the person who created them moves teams. Someone registered the header in marketing three years ago. An agency added the template during a campaign. The login for the operator portal is associated with a former employee’s work address. None of that matters until the day a template needs an urgent edit, and nobody can reach the account that owns it.
The pattern across all four is the same. Every one of them changes what the operator sees without changing anything a developer would recognize as a release, which is why the investigation always starts in the wrong place and stays there for a day or two.
What None of This Fixes
Getting the message delivered is a delivery problem, and solving it solves only that.
Anything that establishes who a customer is stays exactly where it was. Aadhaar-based verification, PAN checks, video KYC for regulated financial products, GST registration for a seller, the RBI’s rules on how a customer is onboarded – none of that becomes easier because a text message arrived reliably. Regulated finance in India is designed to be hard at that gate, and treating it as an obstacle to route around is both wrong and a good way to lose a license.
Nor does a working delivery path give a business permission to send messages people did not ask for. Consent is the part of this regulation with actual teeth, and the registration machinery exists precisely to make unsolicited traffic attributable.
A Short Operating Checklist
“Such processes complying with prescribed standards and procedures shall be treated on par with face-to-face CIP for the purpose of this Master Direction.”Reserve Bank of India
Treat registered template text as code. Keep it in version control, require a review to change it, and make the person who edits marketing copy aware that the string is regulated.
Break the delivery metric out by operator. A single national figure will hide a failure on one network for weeks, and India is not a single network.
Test on a real handset on each major operator after any change to the template, the header, the aggregator, or the route. Not a staging mock and not a delivery receipt – the actual message on an actual line.
Log the verifications that never completed. Attempted-but-unfinished OTP flows are where silent losses are recorded, and that number moves before revenue does.
Keep a record of which header and template belong to which product flow. During an incident, this is the artifact that turns a two-day investigation into a twenty-minute one.
The Short Version

Indian businesses inherited a system where the failure mode is silence. The message is accepted, the dashboard is green, and the customer never receives anything.
The fix is unglamorous: treat the registered template as production code, measure delivery per operator, and check the result on a real phone rather than in a report. It is a small amount of discipline that stands between a company and a conversion problem that takes a fortnight just to identify.






